source: ruby/trunk/lib/adl_parser/test/scanner_test.rb@ 320

Last change on this file since 320 was 320, checked in by Tatsukawa, Akimichi, 15 years ago

refactoring scanner for regex

File size: 5.4 KB
Line 
1require File.dirname(__FILE__) + '/test_helper.rb'
2
3class ADLScannerTest < Test::Unit::TestCase
4 def setup
5 @scanner = OpenEhr::ADL::Scanner::ADLScanner.new([:adl], "filename")
6 end
7
8 must "assert OpenEhr::ADL::Scanner::ADLScanner scanner instance" do
9 assert_instance_of OpenEhr::ADL::Scanner::ADLScanner, @scanner
10 end
11
12 must "assert ADLScanner scanner scan CR and lineno incremented" do
13 lineno = @scanner.lineno
14 @scanner.scan("\n")
15 assert_equal lineno+1, @scanner.lineno
16 end
17
18 must "assert ADLScanner scanner scan ARCHETYPE_ID" do
19 lineno = @scanner.lineno
20 @scanner.scan("openEHR-EHR-OBSERVATION.body_mass_index.v1") do |sym, val|
21 assert_equal :V_ARCHETYPE_ID,sym
22 assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID,val
23 end
24 end
25
26 must "assert ADLScanner scanner scan white space and lineno unchanged" do
27 lineno = @scanner.lineno
28 @scanner.scan(" ")
29 assert_equal lineno, @scanner.lineno
30 end
31
32 must "assert ADLScanner scanner scan V_QUALIFIED_TERM_CODE_REF" do
33 @scanner.scan("[ICD10AM(1998)::F23]") do |sym, val|
34 assert_equal :V_QUALIFIED_TERM_CODE_REF,sym
35 assert_equal "ICD10AM(1998)::F23",val
36 end
37 end
38
39 must "assert ADLScanner scanner scan V_STRING" do
40 @scanner.scan("\"string\"") do |sym, val|
41 assert_equal :V_STRING,sym
42 assert_equal "string",val
43 end
44 @scanner.scan("\"1605E211E9BFB4093A72CCE7A9792FF9\"") do |sym, val|
45 assert_equal :V_STRING,sym
46 assert_equal "1605E211E9BFB4093A72CCE7A9792FF9",val
47 end
48 end
49end
50
51class CADLScannerTest < Test::Unit::TestCase
52 def setup
53 @scanner = OpenEhr::ADL::Scanner::CADLScanner.new([:cadl], "filename")
54 end
55
56 must "assert OpenEhr::ADL::Scanner::CADLScanner scanner instance" do
57 assert_instance_of OpenEhr::ADL::Scanner::CADLScanner, @scanner
58 end
59
60 must "assert CADLScanner scanner scan V_ATTRIBUTE_IDENTIFIER" do
61 lineno = @scanner.lineno
62 @scanner.scan("identifier") do |sym, val|
63 assert_equal :V_ATTRIBUTE_IDENTIFIER, sym
64 assert_equal "identifier", val
65 end
66 assert_equal lineno, @scanner.lineno
67 end
68
69 must "assert CADLScanner scanner scan reserved words" do
70 lineno = @scanner.lineno
71 @scanner.scan("then") do |sym, val|
72 assert_equal :SYM_THEN, sym
73 end
74 end
75
76 must "assert CADLScanner scanner scan V_STRING" do
77 @scanner.scan("\"string\"") do |sym, val|
78 assert_equal :V_STRING,sym
79 assert_equal "string",val
80 end
81 @scanner.scan("\"1605E211E9BFB4093A72CCE7A9792FF9\"") do |sym, val|
82 assert_equal :V_STRING,sym
83 assert_equal "1605E211E9BFB4093A72CCE7A9792FF9",val
84 end
85 end
86
87 must "assert CADLScanner scanner scan V_QUALIFIED_TERM_CODE_REF" do
88 @scanner.scan("[ICD10AM(1998)::F23]") do |sym, val|
89 assert_equal :V_QUALIFIED_TERM_CODE_REF,sym
90 assert_equal "ICD10AM(1998)::F23",val
91 end
92 end
93
94
95 must "assert CADLScanner scanner scan V_ISO8601_DURATION_CONSTRAINT_PATTERN" do
96 @scanner.scan("PW") do |sym, val|
97 assert_equal :V_ISO8601_DURATION_CONSTRAINT_PATTERN,sym
98 assert_equal "PW",val
99 end
100 @scanner.scan("PTs") do |sym, val|
101 assert_equal :V_ISO8601_DURATION_CONSTRAINT_PATTERN,sym
102 assert_equal "PTs",val
103 end
104 end
105
106 must "assert CADLScanner scanner scan V_ISO8601_DURATION" do
107 @scanner.scan("PT1M") do |sym, val|
108 assert_equal :V_ISO8601_DURATION,sym
109 assert_equal "PT1M",val
110 end
111
112 @scanner.scan("P1D") do |sym, val|
113 assert_equal :V_ISO8601_DURATION,sym
114 assert_equal "P1D",val
115 end
116
117 @scanner.scan("PT1H30M") do |sym, val|
118 assert_equal :V_ISO8601_DURATION,sym
119 assert_equal "PT1H30M",val
120 end
121 end
122
123 must "assert CADLScanner scanner scan V_ISO8601_EXTENDED_DATE_TIME" do
124 @scanner.scan("2000-01-01T01:00:00") do |sym, val|
125 assert_equal :V_ISO8601_EXTENDED_DATE_TIME,sym
126 assert_equal "2000-01-01T01:00:00",val
127 end
128 end
129
130end
131
132class DADLScannerTest < Test::Unit::TestCase
133 def setup
134 @scanner = OpenEhr::ADL::Scanner::DADLScanner.new([:dadl], "filename")
135 end
136
137 must "assert DADLScanner scanner scan V_QUALIFIED_TERM_CODE_REF" do
138 @scanner.scan("[ICD10AM(1998)::F23]") do |sym, val|
139 assert_equal :V_QUALIFIED_TERM_CODE_REF,sym
140 assert_equal "ICD10AM(1998)::F23",val
141 end
142 end
143
144 must "assert DADLScanner scanner scan V_ISO8601_EXTENDED_DATE" do
145 @scanner.scan("2005-10-10") do |sym, val|
146 assert_equal :V_ISO8601_EXTENDED_DATE,sym
147 assert_equal "2005-10-10",val
148 end
149 end
150
151 must "assert DADLScanner scanner scan V_STRING" do
152 @scanner.scan("\"string\"") do |sym, val|
153 assert_equal :V_STRING,sym
154 assert_equal "string",val
155 end
156
157 @scanner.scan("\"2005-10-10\"") do |sym, val|
158 assert_equal :V_STRING,sym
159 assert_equal "2005-10-10",val
160 end
161
162 @scanner.scan("\"1605E211E9BFB4093A72CCE7A9792FF9\"") do |sym, val|
163 assert_equal :V_STRING,sym
164 assert_equal "1605E211E9BFB4093A72CCE7A9792FF9",val
165 end
166 end
167
168 must "assert DADLScanner scanner scan V_URI" do
169 @scanner.scan("http://openEHR.org/Services") do |sym, val|
170 assert_equal :V_URI,sym
171 assert_equal "http://openEHR.org/Services",val
172 end
173 end
174end
175
176class RegexScannerTest < Test::Unit::TestCase
177 def setup
178 @scanner = OpenEhr::ADL::Scanner::RegexScanner.new([:regexp], "filename")
179 end
180
181 must "assert RegexScanner scanner scan " do
182 @scanner.scan("this|that|something else") do |sym, val|
183 assert_equal :REGEXP_BODY,sym
184 assert_equal "this|that|something else",val
185 end
186 end
187end
Note: See TracBrowser for help on using the repository browser.