rtext 0.8.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,205 +1,301 @@
1
- $:.unshift File.join(File.dirname(__FILE__),"..","..","lib")
2
-
3
- require 'test/unit'
4
- require 'rtext/frontend/context'
5
-
6
- class ContextTest < Test::Unit::TestCase
7
-
8
- def test_simple
9
- assert_context(
10
- %Q(
11
- A {
12
- B {
13
- |F bla
14
- ),
15
- %Q(
16
- A {
17
- B {
18
- C a1: v1, a2: "v2"
19
- D {
20
- E a1: 5
21
- }
22
- |F bla
23
- ))
24
- end
25
-
26
- def test_child_label
27
- assert_context(
28
- %Q(
29
- A {
30
- sub:
31
- B {
32
- F bla|
33
- ),
34
- %Q(
35
- A {
36
- sub:
37
- B {
38
- C a1: v1, a2: "v2"
39
- D {
40
- E a1: 5
41
- }
42
- F bla|
43
- ))
44
- end
45
-
46
- def test_child_label_array
47
- assert_context(
48
- %Q(
49
- A {
50
- sub: [
51
- B {
52
- F| bla
53
- ),
54
- %Q(
55
- A {
56
- sub: [
57
- B {
58
- C
59
- }
60
- B {
61
- C a1: v1, a2: "v2"
62
- D {
63
- E a1: 5
64
- }
65
- F| bla
66
- ))
67
- end
68
-
69
- def test_ignore_child_lables
70
- assert_context(
71
- %Q(
72
- A {
73
- B {
74
- F bl|a
75
- ),
76
- %Q(
77
- A {
78
- B {
79
- sub:
80
- C a1: v1, a2: "v2"
81
- sub2: [
82
- D {
83
- E a1: 5
84
- }
85
- ]
86
- F bl|a
87
- ))
88
- end
89
-
90
- def test_linebreak
91
- assert_context(
92
- %Q(
93
- A {
94
- B {
95
- C name,a1: v1,a2: "v2"|
96
- ),
97
- %Q(
98
- A {
99
- B {
100
- C name,
101
- a1: v1,
102
- a2: "v2"|
103
- ))
104
- end
105
-
106
- def test_linebreak_arg_array
107
- assert_context(
108
- %Q(
109
- A {
110
- B {
111
- C name,a1: [v1,v2],a2: |5
112
- ),
113
- %Q(
114
- A {
115
- B {
116
- C name,
117
- a1: [
118
- v1,
119
- v2
120
- ],
121
- a2: |5
122
- ))
123
- end
124
-
125
- def test_linebreak_empty_last_line
126
- assert_context(
127
- %Q(
128
- A {
129
- B name,|
130
- ),
131
- %Q(
132
- A {
133
- B name,
134
- |
135
- ))
136
- end
137
-
138
- def test_linebreak_empty_last_line2
139
- assert_context(
140
- %Q(
141
- A {
142
- B name,|
143
- ),
144
- %Q(
145
- A {
146
- B name,
147
- |
148
- ))
149
- end
150
-
151
- def test_linebreak_empty_lines
152
- assert_context(
153
- %Q(
154
- A {
155
- B name,a1: |
156
- ),
157
- %Q(
158
- A {
159
- B name,
160
-
161
- a1: |
162
- ))
163
- end
164
-
165
- def test_comment_annotation
166
- assert_context(
167
- %Q(
168
- A {
169
- B {
170
- |F bla
171
- ),
172
- %Q(
173
- A {
174
- # bla
175
- B {
176
- C a1: v1, a2: "v2"
177
- # bla
178
- D {
179
- E a1: 5
180
- }
181
- @ anno
182
- |F bla
183
- ))
184
- end
185
-
186
- def assert_context(expected, text)
187
- # remove first and last lines
188
- # these are empty because of the use of %Q
189
- exp_lines = expected.split("\n")[1..-2]
190
- exp_col = exp_lines.last.index("|")
191
- exp_lines.last.sub!("|","")
192
- in_lines = text.split("\n")[1..-2]
193
- in_col = in_lines.last.index("|")
194
- in_lines.last.sub!("|","")
195
- ctx = RText::Frontend::Context.new
196
- lines, out_col = ctx.extract(in_lines, in_col)
197
- assert_equal exp_lines, lines
198
- if exp_col && in_col
199
- assert_equal exp_col, out_col
200
- end
201
- end
202
-
203
- end
204
-
205
-
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","..","lib")
2
+
3
+ require 'minitest/autorun'
4
+ require 'rtext/frontend/context'
5
+
6
+ class ContextTest < MiniTest::Test
7
+
8
+ def test_simple
9
+ assert_context(
10
+ %Q(
11
+ A {
12
+ B {
13
+ |F bla
14
+ ),
15
+ %Q(
16
+ A {
17
+ B {
18
+ C a1: v1, a2: "v2"
19
+ D {
20
+ E a1: 5
21
+ }
22
+ |F bla
23
+ ))
24
+ end
25
+
26
+ def test_child_label
27
+ assert_context(
28
+ %Q(
29
+ A {
30
+ sub:
31
+ B {
32
+ F bla|
33
+ ),
34
+ %Q(
35
+ A {
36
+ sub:
37
+ B {
38
+ C a1: v1, a2: "v2"
39
+ D {
40
+ E a1: 5
41
+ }
42
+ F bla|
43
+ ))
44
+ end
45
+
46
+ def test_child_label_array
47
+ assert_context(
48
+ %Q(
49
+ A {
50
+ sub: [
51
+ B {
52
+ F| bla
53
+ ),
54
+ %Q(
55
+ A {
56
+ sub: [
57
+ B {
58
+ C
59
+ }
60
+ B {
61
+ C a1: v1, a2: "v2"
62
+ D {
63
+ E a1: 5
64
+ }
65
+ F| bla
66
+ ))
67
+ end
68
+
69
+ def test_child_label_array2
70
+ assert_context(
71
+ %Q(
72
+ A {
73
+ B |
74
+ ),
75
+ %Q(
76
+ A {
77
+ sub: [
78
+ ]
79
+ B |
80
+ ))
81
+ end
82
+
83
+ def test_child_label_array3
84
+ assert_context(
85
+ %Q(
86
+ A {
87
+ sub: [
88
+ ] |
89
+ ),
90
+ %Q(
91
+ A {
92
+ sub: [
93
+ ] |
94
+ ))
95
+ end
96
+
97
+
98
+ def test_ignore_child_lables
99
+ assert_context(
100
+ %Q(
101
+ A {
102
+ B {
103
+ F bl|a
104
+ ),
105
+ %Q(
106
+ A {
107
+ B {
108
+ sub:
109
+ C a1: v1, a2: "v2"
110
+ sub2: [
111
+ D {
112
+ E a1: 5
113
+ }
114
+ ]
115
+ F bl|a
116
+ ))
117
+ end
118
+
119
+ def test_linebreak
120
+ assert_context(
121
+ %Q(
122
+ A {
123
+ B {
124
+ C name, a1: v1, a2: "v2"|
125
+ ),
126
+ %Q(
127
+ A {
128
+ B {
129
+ C name,
130
+ a1: v1,
131
+ a2: "v2"|
132
+ ))
133
+ end
134
+
135
+ def test_linebreak_arg_array
136
+ assert_context(
137
+ %Q(
138
+ A {
139
+ B {
140
+ C name, a1: [ v1, v2 ], a2: |5
141
+ ),
142
+ %Q(
143
+ A {
144
+ B {
145
+ C name,
146
+ a1: [
147
+ v1,
148
+ v2
149
+ ],
150
+ a2: |5
151
+ ))
152
+ end
153
+
154
+ def test_linebreak_empty_last_line
155
+ assert_context(
156
+ %Q(
157
+ A {
158
+ B name, |
159
+ ),
160
+ %Q(
161
+ A {
162
+ B name,
163
+ |
164
+ ))
165
+ end
166
+
167
+ def test_linebreak_empty_last_line2
168
+ assert_context(
169
+ %Q(
170
+ A {
171
+ B name, |
172
+ ),
173
+ %Q(
174
+ A {
175
+ B name,
176
+ |
177
+ ))
178
+ end
179
+
180
+ def test_linebreak_empty_lines
181
+ assert_context(
182
+ %Q(
183
+ A {
184
+ B name, a1: |
185
+ ),
186
+ %Q(
187
+ A {
188
+ B name,
189
+
190
+ a1: |
191
+ ))
192
+ end
193
+
194
+ def test_linebreak_first_arg_array
195
+ assert_context(
196
+ %Q(
197
+ A {
198
+ B [ |
199
+ ),
200
+ %Q(
201
+ A {
202
+ B [
203
+ |
204
+ ))
205
+ end
206
+
207
+ def test_linebreak_first_arg_array2
208
+ assert_context(
209
+ %Q(
210
+ A {
211
+ B [ 2, |
212
+ ),
213
+ %Q(
214
+ A {
215
+ B [
216
+ 2,
217
+ |
218
+ ))
219
+ end
220
+
221
+ def test_linebreak_first_arg_array3
222
+ assert_context(
223
+ %Q(
224
+ A {
225
+ B [ 2 ], |
226
+ ),
227
+ %Q(
228
+ A {
229
+ B [
230
+ 2
231
+ ], |
232
+ ))
233
+ end
234
+
235
+ def test_linebreak_backslash
236
+ assert_context(
237
+ %Q(
238
+ A {
239
+ B arg: 1,|
240
+ ),
241
+ %Q(
242
+ A {
243
+ B \\
244
+ arg: 1,|
245
+ ))
246
+ end
247
+
248
+ def test_linebreak_whitespace_after_backslash
249
+ assert_context(
250
+ %Q(
251
+ A {
252
+ B arg: 1,|
253
+ ),
254
+ %Q(
255
+ A {
256
+ B \\
257
+ arg: 1,|
258
+ ))
259
+ end
260
+
261
+ def test_comment_annotation
262
+ assert_context(
263
+ %Q(
264
+ A {
265
+ B {
266
+ |F bla
267
+ ),
268
+ %Q(
269
+ A {
270
+ # bla
271
+ B {
272
+ C a1: v1, a2: "v2"
273
+ # bla
274
+ D {
275
+ E a1: 5
276
+ }
277
+ @ anno
278
+ |F bla
279
+ ))
280
+ end
281
+
282
+ def assert_context(expected, text)
283
+ # remove first and last lines
284
+ # these are empty because of the use of %Q
285
+ exp_lines = expected.split("\n")[1..-2]
286
+ exp_col = exp_lines.last.index("|")
287
+ exp_lines.last.sub!("|","")
288
+ in_lines = text.split("\n")[1..-2]
289
+ in_col = in_lines.last.index("|")
290
+ in_lines.last.sub!("|","")
291
+ ctx = RText::Frontend::Context.new
292
+ lines, out_col = ctx.extract(in_lines, in_col)
293
+ assert_equal exp_lines, lines
294
+ if exp_col && in_col
295
+ assert_equal exp_col, out_col
296
+ end
297
+ end
298
+
299
+ end
300
+
301
+