Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: pkg/analyzer/test/generated/scanner_test.dart

Issue 742013003: Code clean-up (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer/test/enum_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // This code was auto-generated, is not intended to be edited, and is subject to 5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information. 6 // significant change. Please see the README file for more information.
7 7
8 library engine.scanner_test; 8 library engine.scanner_test;
9 9
10 import 'package:analyzer/src/generated/error.dart'; 10 import 'package:analyzer/src/generated/error.dart';
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 expect(reader.peek(), -1); 66 expect(reader.peek(), -1);
67 } 67 }
68 68
69 void test_setOffset() { 69 void test_setOffset() {
70 CharSequenceReader reader = new CharSequenceReader("xyz"); 70 CharSequenceReader reader = new CharSequenceReader("xyz");
71 reader.offset = 2; 71 reader.offset = 2;
72 expect(reader.offset, 2); 72 expect(reader.offset, 2);
73 } 73 }
74 } 74 }
75 75
76 class CharacterRangeReaderTest extends EngineTestCase {
77 void test_advance() {
78 CharSequenceReader baseReader = new CharSequenceReader("xyzzy");
79 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 4);
80 expect(reader.advance(), 0x79);
81 expect(reader.advance(), 0x80);
82 expect(reader.advance(), 0x80);
83 expect(reader.advance(), -1);
84 expect(reader.advance(), -1);
85 }
86
87 void test_creation() {
88 CharSequenceReader baseReader = new CharSequenceReader("xyzzy");
89 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 4);
90 expect(reader, isNotNull);
91 }
92
93 void test_getOffset() {
94 CharSequenceReader baseReader = new CharSequenceReader("xyzzy");
95 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 2);
96 expect(reader.offset, 1);
97 reader.advance();
98 expect(reader.offset, 2);
99 reader.advance();
100 expect(reader.offset, 2);
101 }
102
103 void test_getString() {
104 CharSequenceReader baseReader = new CharSequenceReader("__xyzzy__");
105 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 2, 7);
106 reader.offset = 5;
107 expect(reader.getString(3, 0), "yzz");
108 expect(reader.getString(4, 1), "zzy");
109 }
110
111 void test_peek() {
112 CharSequenceReader baseReader = new CharSequenceReader("xyzzy");
113 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 3);
114 expect(reader.peek(), 0x79);
115 expect(reader.peek(), 0x79);
116 reader.advance();
117 expect(reader.peek(), 0x80);
118 expect(reader.peek(), 0x80);
119 reader.advance();
120 expect(reader.peek(), -1);
121 expect(reader.peek(), -1);
122 }
123
124 void test_setOffset() {
125 CharSequenceReader baseReader = new CharSequenceReader("xyzzy");
126 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 4);
127 reader.offset = 2;
128 expect(reader.offset, 2);
129 }
130 }
131
76 class IncrementalScannerTest extends EngineTestCase { 132 class IncrementalScannerTest extends EngineTestCase {
77 /** 133 /**
78 * The first token from the token stream resulting from parsing the original 134 * The first token from the token stream resulting from parsing the original
79 * source, or `null` if [scan] has not been invoked. 135 * source, or `null` if [scan] has not been invoked.
80 */ 136 */
81 Token _originalTokens; 137 Token _originalTokens;
82 138
83 /** 139 /**
84 * The scanner used to perform incremental scanning, or `null` if [scan] has 140 * The scanner used to perform incremental scanning, or `null` if [scan] has
85 * not been invoked. 141 * not been invoked.
(...skipping 11 matching lines...) Expand all
97 // that would force us to re-parse both classes, which is clearly 153 // that would force us to re-parse both classes, which is clearly
98 // sub-optimal. 154 // sub-optimal.
99 // 155 //
100 // "class B {}" 156 // "class B {}"
101 // "class A {} class B {}" 157 // "class A {} class B {}"
102 _scan("", "", "class A {} ", "class B {}"); 158 _scan("", "", "class A {} ", "class B {}");
103 _assertTokens(-1, 4, ["class", "A", "{", "}", "class", "B", "{", "}"]); 159 _assertTokens(-1, 4, ["class", "A", "{", "}", "class", "B", "{", "}"]);
104 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 160 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
105 } 161 }
106 162
163 void fail_insert_comment_afterIdentifier() {
164 // "a + b"
165 // "a /* TODO */ + b"
166 _scan("a", "", " /* TODO */", " + b");
167 _assertTokens(0, 1, ["a", "+", "b"]);
168 _assertComments(1, ["/* TODO */"]);
169 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
170 }
171
172 void fail_insert_comment_beforeIdentifier() {
173 // "a + b"
174 // "a + /* TODO */ b"
175 _scan("a + ", "", "/* TODO */ ", "b");
176 _assertTokens(1, 2, ["a", "+", "b"]);
177 _assertComments(2, ["/* TODO */"]);
178 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
179 }
180
181 void fail_insert_inComment() {
182 // "a /* TO */ b"
183 // "a /* TODO */ b"
184 _scan("a /* TO", "", "DO", " */ b");
185 _assertTokens(0, 1, ["a", "b"]);
186 _assertComments(1, ["/* TODO */"]);
187 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
188 }
189
107 void test_delete_identifier_beginning() { 190 void test_delete_identifier_beginning() {
108 // "abs + b;" 191 // "abs + b;"
109 // "s + b;") 192 // "s + b;"
110 _scan("", "ab", "", "s + b;"); 193 _scan("", "ab", "", "s + b;");
111 _assertTokens(-1, 1, ["s", "+", "b", ";"]); 194 _assertTokens(-1, 1, ["s", "+", "b", ";"]);
112 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 195 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
113 } 196 }
114 197
115 void test_delete_identifier_end() { 198 void test_delete_identifier_end() {
116 // "abs + b;" 199 // "abs + b;"
117 // "a + b;") 200 // "a + b;"
118 _scan("a", "bs", "", " + b;"); 201 _scan("a", "bs", "", " + b;");
119 _assertTokens(-1, 1, ["a", "+", "b", ";"]); 202 _assertTokens(-1, 1, ["a", "+", "b", ";"]);
120 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 203 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
121 } 204 }
122 205
123 void test_delete_identifier_middle() { 206 void test_delete_identifier_middle() {
124 // "abs + b;" 207 // "abs + b;"
125 // "as + b;") 208 // "as + b;"
126 _scan("a", "b", "", "s + b;"); 209 _scan("a", "b", "", "s + b;");
127 _assertTokens(-1, 1, ["as", "+", "b", ";"]); 210 _assertTokens(-1, 1, ["as", "+", "b", ";"]);
128 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 211 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
129 } 212 }
130 213
131 void test_delete_mergeTokens() { 214 void test_delete_mergeTokens() {
132 // "a + b + c;" 215 // "a + b + c;"
133 // "ac;") 216 // "ac;"
134 _scan("a", " + b + ", "", "c;"); 217 _scan("a", " + b + ", "", "c;");
135 _assertTokens(-1, 1, ["ac", ";"]); 218 _assertTokens(-1, 1, ["ac", ";"]);
136 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 219 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
137 } 220 }
138 221
139 void test_delete_whitespace() { 222 void test_delete_whitespace() {
140 // "a + b + c;" 223 // "a + b + c;"
141 // "a+ b + c;") 224 // "a+ b + c;"
142 _scan("a", " ", "", "+ b + c;"); 225 _scan("a", " ", "", "+ b + c;");
143 _assertTokens(1, 2, ["a", "+", "b", "+", "c", ";"]); 226 _assertTokens(1, 2, ["a", "+", "b", "+", "c", ";"]);
144 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); 227 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
145 } 228 }
146 229
147 void test_insert_afterIdentifier_firstToken() { 230 void test_insert_convertOneFunctionToTwo_noOverlap() {
148 // "a + b;" 231 // "f() {}"
149 // "abs + b;" 232 // "f() => 0; g() {}"
150 _scan("a", "", "bs", " + b;"); 233 _scan("f()", "", " => 0; g()", " {}");
151 _assertTokens(-1, 1, ["abs", "+", "b", ";"]); 234 _assertTokens(
152 _assertReplaced(1, "+"); 235 2,
236 9,
237 ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]);
153 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 238 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
154 } 239 }
155 240
156 void test_insert_afterIdentifier_lastToken() { 241 void test_insert_convertOneFunctionToTwo_overlap() {
157 // "a + b" 242 // "f() {}"
158 // "a + bc") 243 // "f() {} g() {}"
159 _scan("a + b", "", "c", ""); 244 _scan("f() {", "", "} g() {", "}");
160 _assertTokens(1, 3, ["a", "+", "bc"]); 245 _assertTokens(4, 10, ["f", "(", ")", "{", "}", "g", "(", ")", "{", "}"]);
161 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 246 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
162 } 247 }
163 248
164 void test_insert_afterIdentifier_middleToken() { 249 void test_insert_end() {
165 // "a + b;" 250 // "class A {}"
166 // "a + by;" 251 // "class A {} class B {}"
167 _scan("a + b", "", "y", ";"); 252 _scan("class A {}", "", " class B {}", "");
168 _assertTokens(1, 3, ["a", "+", "by", ";"]); 253 _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]);
169 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 254 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
170 } 255 }
171 256
172 void test_insert_beforeIdentifier() { 257 void test_insert_identifierAndPeriod() {
173 // "a + b;" 258 // "a + b;"
174 // "a + xb;") 259 // "a + x.b;"
175 _scan("a + ", "", "x", "b;"); 260 _scan("a + ", "", "x.", "b;");
176 _assertTokens(1, 3, ["a", "+", "xb", ";"]); 261 _assertTokens(1, 4, ["a", "+", "x", ".", "b", ";"]);
177 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
178 } 262 }
179 263
180 void test_insert_beforeIdentifier_firstToken() { 264 void test_insert_inIdentifier_left_firstToken() {
181 // "a + b;" 265 // "a + b;"
182 // "xa + b;" 266 // "xa + b;"
183 _scan("", "", "x", "a + b;"); 267 _scan("", "", "x", "a + b;");
184 _assertTokens(-1, 1, ["xa", "+", "b", ";"]); 268 _assertTokens(-1, 1, ["xa", "+", "b", ";"]);
185 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 269 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
186 } 270 }
187 271
188 void test_insert_convertOneFunctionToTwo() { 272 void test_insert_inIdentifier_left_lastToken() {
189 // "f() {}" 273 // "a + b"
190 // "f() => 0; g() {}" 274 // "a + xb"
191 _scan("f()", "", " => 0; g()", " {}"); 275 _scan("a + ", "", "x", "b");
192 _assertTokens( 276 _assertTokens(1, 3, ["a", "+", "xb"]);
193 2,
194 9,
195 ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]);
196 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 277 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
197 } 278 }
198 279
199 void test_insert_convertOneFunctionToTwo_overlap() { 280 void test_insert_inIdentifier_left_middleToken() {
200 // "f() {}" 281 // "a + b;"
201 // "f() {} g() {}" 282 // "a + xb;"
202 _scan("f() {", "", "} g() {", "}"); 283 _scan("a + ", "", "x", "b;");
203 _assertTokens(4, 10, ["f", "(", ")", "{", "}", "g", "(", ")", "{", "}"]); 284 _assertTokens(1, 3, ["a", "+", "xb", ";"]);
204 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 285 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
205 } 286 }
206 287
207 void test_insert_end() { 288 void test_insert_inIdentifier_middle() {
208 // "class A {}" 289 // "cat;"
209 // "class A {} class B {}" 290 // "cart;"
210 _scan("class A {}", "", " class B {}", ""); 291 _scan("ca", "", "r", "t;");
211 _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]); 292 _assertTokens(-1, 1, ["cart", ";"]);
212 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 293 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
213 } 294 }
214 295
215 void test_insert_insideIdentifier() { 296 void test_insert_inIdentifier_right_firstToken() {
216 // "cob;" 297 // "a + b;"
217 // "cow.b;" 298 // "abs + b;"
218 _scan("co", "", "w.", "b;"); 299 _scan("a", "", "bs", " + b;");
219 _assertTokens(-1, 3, ["cow", ".", "b", ";"]); 300 _assertTokens(-1, 1, ["abs", "+", "b", ";"]);
301 _assertReplaced(1, "+");
220 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 302 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
221 } 303 }
222 304
305 void test_insert_inIdentifier_right_lastToken() {
306 // "a + b"
307 // "a + bc"
308 _scan("a + b", "", "c", "");
309 _assertTokens(1, 3, ["a", "+", "bc"]);
310 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
311 }
312
313 void test_insert_inIdentifier_right_middleToken() {
314 // "a + b;"
315 // "a + by;"
316 _scan("a + b", "", "y", ";");
317 _assertTokens(1, 3, ["a", "+", "by", ";"]);
318 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
319 }
320
223 void test_insert_newIdentifier_noSpaceBefore() { 321 void test_insert_newIdentifier_noSpaceBefore() {
224 // "a; c;" 322 // "a; c;"
225 // "a;b c;" 323 // "a;b c;"
226 _scan("a;", "", "b", " c;"); 324 _scan("a;", "", "b", " c;");
227 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); 325 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
228 _assertReplaced(1, ";"); 326 _assertReplaced(1, ";");
229 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 327 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
230 } 328 }
231 329
232 void test_insert_newIdentifier_spaceBefore() { 330 void test_insert_newIdentifier_spaceBefore() {
233 // "a; c;" 331 // "a; c;"
234 // "a; b c;" 332 // "a; b c;"
235 _scan("a; ", "", "b ", "c;"); 333 _scan("a; ", "", "b ", "c;");
236 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); 334 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
237 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 335 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
238 } 336 }
239 337
240 void test_insert_period() { 338 void test_insert_periodAndIdentifier() {
339 // "a + b;"
340 // "a + b.x;"
341 _scan("a + b", "", ".x", ";");
342 _assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]);
343 }
344
345 void test_insert_period_afterIdentifier() {
241 // "a + b;" 346 // "a + b;"
242 // "a + b.;" 347 // "a + b.;"
243 _scan("a + b", "", ".", ";"); 348 _scan("a + b", "", ".", ";");
244 _assertTokens(2, 4, ["a", "+", "b", ".", ";"]); 349 _assertTokens(2, 4, ["a", "+", "b", ".", ";"]);
245 } 350 }
246 351
247 void test_insert_period_betweenIdentifiers_left() { 352 void test_insert_period_betweenIdentifiers_left() {
248 // "a b;" 353 // "a b;"
249 // "a. b;" 354 // "a. b;"
250 _scan("a", "", ".", " b;"); 355 _scan("a", "", ".", " b;");
(...skipping 17 matching lines...) Expand all
268 } 373 }
269 374
270 void test_insert_period_insideExistingIdentifier() { 375 void test_insert_period_insideExistingIdentifier() {
271 // "ab;" 376 // "ab;"
272 // "a.b;" 377 // "a.b;"
273 _scan("a", "", ".", "b;"); 378 _scan("a", "", ".", "b;");
274 _assertTokens(-1, 3, ["a", ".", "b", ";"]); 379 _assertTokens(-1, 3, ["a", ".", "b", ";"]);
275 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 380 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
276 } 381 }
277 382
278 void test_insert_periodAndIdentifier() { 383 void test_insert_splitIdentifier() {
279 // "a + b;" 384 // "cob;"
280 // "a + b.x;" 385 // "cow.b;"
281 _scan("a + b", "", ".x", ";"); 386 _scan("co", "", "w.", "b;");
282 _assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]); 387 _assertTokens(-1, 3, ["cow", ".", "b", ";"]);
388 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
283 } 389 }
284 390
285 void test_insert_whitespace_beginning_beforeToken() { 391 void test_insert_whitespace_beginning_beforeToken() {
286 // "a + b;" 392 // "a + b;"
287 // " a + b;" 393 // " a + b;"
288 _scan("", "", " ", "a + b;"); 394 _scan("", "", " ", "a + b;");
289 _assertTokens(0, 1, ["a", "+", "b", ";"]); 395 _assertTokens(0, 1, ["a", "+", "b", ";"]);
290 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); 396 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
291 } 397 }
292 398
(...skipping 27 matching lines...) Expand all
320 _scan(r''' 426 _scan(r'''
321 //comment 427 //comment
322 //comment2 428 //comment2
323 a''', "", " ", " + b;"); 429 a''', "", " ", " + b;");
324 _assertTokens(1, 2, ["a", "+", "b", ";"]); 430 _assertTokens(1, 2, ["a", "+", "b", ";"]);
325 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); 431 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
326 } 432 }
327 433
328 void test_replace_identifier_beginning() { 434 void test_replace_identifier_beginning() {
329 // "bell + b;" 435 // "bell + b;"
330 // "fell + b;") 436 // "fell + b;"
331 _scan("", "b", "f", "ell + b;"); 437 _scan("", "b", "f", "ell + b;");
332 _assertTokens(-1, 1, ["fell", "+", "b", ";"]); 438 _assertTokens(-1, 1, ["fell", "+", "b", ";"]);
333 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 439 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
334 } 440 }
335 441
336 void test_replace_identifier_end() { 442 void test_replace_identifier_end() {
337 // "bell + b;" 443 // "bell + b;"
338 // "belt + b;") 444 // "belt + b;"
339 _scan("bel", "l", "t", " + b;"); 445 _scan("bel", "l", "t", " + b;");
340 _assertTokens(-1, 1, ["belt", "+", "b", ";"]); 446 _assertTokens(-1, 1, ["belt", "+", "b", ";"]);
341 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 447 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
342 } 448 }
343 449
344 void test_replace_identifier_middle() { 450 void test_replace_identifier_middle() {
345 // "first + b;" 451 // "first + b;"
346 // "frost + b;") 452 // "frost + b;"
347 _scan("f", "ir", "ro", "st + b;"); 453 _scan("f", "ir", "ro", "st + b;");
348 _assertTokens(-1, 1, ["frost", "+", "b", ";"]); 454 _assertTokens(-1, 1, ["frost", "+", "b", ";"]);
349 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 455 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
350 } 456 }
351 457
352 void test_replace_multiple_partialFirstAndLast() { 458 void test_replace_multiple_partialFirstAndLast() {
353 // "aa + bb;" 459 // "aa + bb;"
354 // "ab * ab;") 460 // "ab * ab;"
355 _scan("a", "a + b", "b * a", "b;"); 461 _scan("a", "a + b", "b * a", "b;");
356 _assertTokens(-1, 3, ["ab", "*", "ab", ";"]); 462 _assertTokens(-1, 3, ["ab", "*", "ab", ";"]);
357 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 463 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
358 } 464 }
359 465
360 void test_replace_operator_oneForMany() { 466 void test_replace_operator_oneForMany() {
361 // "a + b;" 467 // "a + b;"
362 // "a * c - b;") 468 // "a * c - b;"
363 _scan("a ", "+", "* c -", " b;"); 469 _scan("a ", "+", "* c -", " b;");
364 _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]); 470 _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]);
365 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 471 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
366 } 472 }
367 473
368 void test_replace_operator_oneForOne() { 474 void test_replace_operator_oneForOne() {
369 // "a + b;" 475 // "a + b;"
370 // "a * b;") 476 // "a * b;"
371 _scan("a ", "+", "*", " b;"); 477 _scan("a ", "+", "*", " b;");
372 _assertTokens(0, 2, ["a", "*", "b", ";"]); 478 _assertTokens(0, 2, ["a", "*", "b", ";"]);
373 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); 479 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
374 } 480 }
375 481
376 void test_tokenMap() { 482 /**
377 // "main() {a + b;}" 483 * Assert that the comments associated with the token at the given [index]
378 // "main() { a + b;}" 484 * have lexemes that match the given list of lexemes, both in number and in
379 _scan("main() {", "", " ", "a + b;}"); 485 * content.
380 TokenMap tokenMap = _incrementalScanner.tokenMap; 486 */
381 Token oldToken = _originalTokens; 487 void _assertComments(int index, List<String> lexemes) {
382 while (oldToken.type != TokenType.EOF) { 488 Token token = _incrementalTokens;
383 Token newToken = tokenMap.get(oldToken); 489 for (int i = 0; i < index; i++) {
384 expect(newToken, isNot(same(oldToken))); 490 token = token.next;
385 expect(newToken.type, same(oldToken.type));
386 expect(newToken.lexeme, oldToken.lexeme);
387 oldToken = oldToken.next;
388 } 491 }
389 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); 492 Token comment = token.precedingComments;
493 if (lexemes.isEmpty) {
494 expect(
495 comment,
496 isNull,
497 reason: "No comments expected but comments found");
498 }
499 int count = 0;
500 for (String lexeme in lexemes) {
501 if (comment == null) {
502 fail("Expected ${lexemes.length} comments but found $count");
503 }
504 expect(comment.lexeme, lexeme);
505 count++;
506 comment = comment.next;
507 }
508 if (comment != null) {
509 while (comment != null) {
510 count++;
511 comment = comment.next;
512 }
513 fail("Expected ${lexemes.length} comments but found $count");
514 }
390 } 515 }
391 516
392 /** 517 /**
393 * Assert that the token at the given [offset] was replaced with a new token 518 * Assert that the token at the given [offset] was replaced with a new token
394 * having the given [lexeme]. 519 * having the given [lexeme].
395 */ 520 */
396 void _assertReplaced(int offset, String lexeme) { 521 void _assertReplaced(int offset, String lexeme) {
397 Token oldToken = _originalTokens; 522 Token oldToken = _originalTokens;
398 for (int i = 0; i < offset; i++) { 523 for (int i = 0; i < offset; i++) {
399 oldToken = oldToken.next; 524 oldToken = oldToken.next;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 expect(incrementalToken, isNotNull); 640 expect(incrementalToken, isNotNull);
516 while (incrementalToken.type != TokenType.EOF && 641 while (incrementalToken.type != TokenType.EOF &&
517 modifiedTokens.type != TokenType.EOF) { 642 modifiedTokens.type != TokenType.EOF) {
518 expect( 643 expect(
519 incrementalToken.type, 644 incrementalToken.type,
520 same(modifiedTokens.type), 645 same(modifiedTokens.type),
521 reason: "Wrong type for token"); 646 reason: "Wrong type for token");
522 expect( 647 expect(
523 incrementalToken.offset, 648 incrementalToken.offset,
524 modifiedTokens.offset, 649 modifiedTokens.offset,
525 reason: "Wrong offset for token"); 650 reason:
651 "Wrong offset for token (${incrementalToken.lexeme} != ${modifiedT okens.lexeme})");
526 expect( 652 expect(
527 incrementalToken.length, 653 incrementalToken.length,
528 modifiedTokens.length, 654 modifiedTokens.length,
529 reason: "Wrong length for token"); 655 reason:
656 "Wrong length for token (${incrementalToken.lexeme} != ${modifiedT okens.lexeme})");
530 expect( 657 expect(
531 incrementalToken.lexeme, 658 incrementalToken.lexeme,
532 modifiedTokens.lexeme, 659 modifiedTokens.lexeme,
533 reason: "Wrong lexeme for token"); 660 reason: "Wrong lexeme for token");
534 incrementalToken = incrementalToken.next; 661 incrementalToken = incrementalToken.next;
535 modifiedTokens = modifiedTokens.next; 662 modifiedTokens = modifiedTokens.next;
536 } 663 }
537 expect( 664 expect(
538 incrementalToken.type, 665 incrementalToken.type,
539 same(TokenType.EOF), 666 same(TokenType.EOF),
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 void test_comment_nested() { 823 void test_comment_nested() {
697 _assertComment( 824 _assertComment(
698 TokenType.MULTI_LINE_COMMENT, 825 TokenType.MULTI_LINE_COMMENT,
699 "/* comment /* within a */ comment */"); 826 "/* comment /* within a */ comment */");
700 } 827 }
701 828
702 void test_comment_single() { 829 void test_comment_single() {
703 _assertComment(TokenType.SINGLE_LINE_COMMENT, "// comment"); 830 _assertComment(TokenType.SINGLE_LINE_COMMENT, "// comment");
704 } 831 }
705 832
833 void test_double_both_E() {
834 _assertToken(TokenType.DOUBLE, "0.123E4");
835 }
836
706 void test_double_both_e() { 837 void test_double_both_e() {
707 _assertToken(TokenType.DOUBLE, "0.123e4"); 838 _assertToken(TokenType.DOUBLE, "0.123e4");
708 } 839 }
709 840
710 void test_double_both_E() { 841 void test_double_fraction() {
711 _assertToken(TokenType.DOUBLE, "0.123E4"); 842 _assertToken(TokenType.DOUBLE, ".123");
712 } 843 }
713 844
714 void test_double_fraction() { 845 void test_double_fraction_E() {
715 _assertToken(TokenType.DOUBLE, ".123"); 846 _assertToken(TokenType.DOUBLE, ".123E4");
716 } 847 }
717 848
718 void test_double_fraction_e() { 849 void test_double_fraction_e() {
719 _assertToken(TokenType.DOUBLE, ".123e4"); 850 _assertToken(TokenType.DOUBLE, ".123e4");
720 } 851 }
721 852
722 void test_double_fraction_E() { 853 void test_double_missingDigitInExponent() {
723 _assertToken(TokenType.DOUBLE, ".123E4"); 854 _assertError(ScannerErrorCode.MISSING_DIGIT, 1, "1e");
724 } 855 }
725 856
726 void test_double_missingDigitInExponent() { 857 void test_double_whole_E() {
727 _assertError(ScannerErrorCode.MISSING_DIGIT, 1, "1e"); 858 _assertToken(TokenType.DOUBLE, "12E4");
728 } 859 }
729 860
730 void test_double_whole_e() { 861 void test_double_whole_e() {
731 _assertToken(TokenType.DOUBLE, "12e4"); 862 _assertToken(TokenType.DOUBLE, "12e4");
732 } 863 }
733 864
734 void test_double_whole_E() {
735 _assertToken(TokenType.DOUBLE, "12E4");
736 }
737
738 void test_eq() { 865 void test_eq() {
739 _assertToken(TokenType.EQ, "="); 866 _assertToken(TokenType.EQ, "=");
740 } 867 }
741 868
742 void test_eq_eq() { 869 void test_eq_eq() {
743 _assertToken(TokenType.EQ_EQ, "=="); 870 _assertToken(TokenType.EQ_EQ, "==");
744 } 871 }
745 872
746 void test_gt() { 873 void test_gt() {
747 _assertToken(TokenType.GT, ">"); 874 _assertToken(TokenType.GT, ">");
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1060 } 1187 }
1061 1188
1062 void test_minus_eq() { 1189 void test_minus_eq() {
1063 _assertToken(TokenType.MINUS_EQ, "-="); 1190 _assertToken(TokenType.MINUS_EQ, "-=");
1064 } 1191 }
1065 1192
1066 void test_minus_minus() { 1193 void test_minus_minus() {
1067 _assertToken(TokenType.MINUS_MINUS, "--"); 1194 _assertToken(TokenType.MINUS_MINUS, "--");
1068 } 1195 }
1069 1196
1197 void test_openSquareBracket() {
1198 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "[");
1199 }
1200
1070 void test_open_curly_bracket() { 1201 void test_open_curly_bracket() {
1071 _assertToken(TokenType.OPEN_CURLY_BRACKET, "{"); 1202 _assertToken(TokenType.OPEN_CURLY_BRACKET, "{");
1072 } 1203 }
1073 1204
1074 void test_open_paren() { 1205 void test_open_paren() {
1075 _assertToken(TokenType.OPEN_PAREN, "("); 1206 _assertToken(TokenType.OPEN_PAREN, "(");
1076 } 1207 }
1077 1208
1078 void test_open_square_bracket() { 1209 void test_open_square_bracket() {
1079 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "["); 1210 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "[");
1080 } 1211 }
1081 1212
1082 void test_openSquareBracket() {
1083 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "[");
1084 }
1085
1086 void test_percent() { 1213 void test_percent() {
1087 _assertToken(TokenType.PERCENT, "%"); 1214 _assertToken(TokenType.PERCENT, "%");
1088 } 1215 }
1089 1216
1090 void test_percent_eq() { 1217 void test_percent_eq() {
1091 _assertToken(TokenType.PERCENT_EQ, "%="); 1218 _assertToken(TokenType.PERCENT_EQ, "%=");
1092 } 1219 }
1093 1220
1094 void test_period() { 1221 void test_period() {
1095 _assertToken(TokenType.PERIOD, "."); 1222 _assertToken(TokenType.PERIOD, ".");
1096 } 1223 }
1097 1224
1098 void test_period_period() {
1099 _assertToken(TokenType.PERIOD_PERIOD, "..");
1100 }
1101
1102 void test_period_period_period() {
1103 _assertToken(TokenType.PERIOD_PERIOD_PERIOD, "...");
1104 }
1105
1106 void test_periodAfterNumberNotIncluded_identifier() { 1225 void test_periodAfterNumberNotIncluded_identifier() {
1107 _assertTokens( 1226 _assertTokens(
1108 "42.isEven()", 1227 "42.isEven()",
1109 [ 1228 [
1110 new StringToken(TokenType.INT, "42", 0), 1229 new StringToken(TokenType.INT, "42", 0),
1111 new Token(TokenType.PERIOD, 2), 1230 new Token(TokenType.PERIOD, 2),
1112 new StringToken(TokenType.IDENTIFIER, "isEven", 3), 1231 new StringToken(TokenType.IDENTIFIER, "isEven", 3),
1113 new Token(TokenType.OPEN_PAREN, 9), 1232 new Token(TokenType.OPEN_PAREN, 9),
1114 new Token(TokenType.CLOSE_PAREN, 10)]); 1233 new Token(TokenType.CLOSE_PAREN, 10)]);
1115 } 1234 }
1116 1235
1117 void test_periodAfterNumberNotIncluded_period() { 1236 void test_periodAfterNumberNotIncluded_period() {
1118 _assertTokens( 1237 _assertTokens(
1119 "42..isEven()", 1238 "42..isEven()",
1120 [ 1239 [
1121 new StringToken(TokenType.INT, "42", 0), 1240 new StringToken(TokenType.INT, "42", 0),
1122 new Token(TokenType.PERIOD_PERIOD, 2), 1241 new Token(TokenType.PERIOD_PERIOD, 2),
1123 new StringToken(TokenType.IDENTIFIER, "isEven", 4), 1242 new StringToken(TokenType.IDENTIFIER, "isEven", 4),
1124 new Token(TokenType.OPEN_PAREN, 10), 1243 new Token(TokenType.OPEN_PAREN, 10),
1125 new Token(TokenType.CLOSE_PAREN, 11)]); 1244 new Token(TokenType.CLOSE_PAREN, 11)]);
1126 } 1245 }
1127 1246
1247 void test_period_period() {
1248 _assertToken(TokenType.PERIOD_PERIOD, "..");
1249 }
1250
1251 void test_period_period_period() {
1252 _assertToken(TokenType.PERIOD_PERIOD_PERIOD, "...");
1253 }
1254
1128 void test_plus() { 1255 void test_plus() {
1129 _assertToken(TokenType.PLUS, "+"); 1256 _assertToken(TokenType.PLUS, "+");
1130 } 1257 }
1131 1258
1132 void test_plus_eq() { 1259 void test_plus_eq() {
1133 _assertToken(TokenType.PLUS_EQ, "+="); 1260 _assertToken(TokenType.PLUS_EQ, "+=");
1134 } 1261 }
1135 1262
1136 void test_plus_plus() { 1263 void test_plus_plus() {
1137 _assertToken(TokenType.PLUS_PLUS, "++"); 1264 _assertToken(TokenType.PLUS_PLUS, "++");
1138 } 1265 }
1139 1266
1140 void test_question() { 1267 void test_question() {
1141 _assertToken(TokenType.QUESTION, "?"); 1268 _assertToken(TokenType.QUESTION, "?");
1142 } 1269 }
1143 1270
1144 void test_scriptTag_withArgs() { 1271 void test_scriptTag_withArgs() {
1145 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart -debug"); 1272 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart -debug");
1146 } 1273 }
1147 1274
1275 void test_scriptTag_withSpace() {
1276 _assertToken(TokenType.SCRIPT_TAG, "#! /bin/dart");
1277 }
1278
1148 void test_scriptTag_withoutSpace() { 1279 void test_scriptTag_withoutSpace() {
1149 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart"); 1280 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart");
1150 } 1281 }
1151 1282
1152 void test_scriptTag_withSpace() {
1153 _assertToken(TokenType.SCRIPT_TAG, "#! /bin/dart");
1154 }
1155
1156 void test_semicolon() { 1283 void test_semicolon() {
1157 _assertToken(TokenType.SEMICOLON, ";"); 1284 _assertToken(TokenType.SEMICOLON, ";");
1158 } 1285 }
1159 1286
1160 void test_setSourceStart() { 1287 void test_setSourceStart() {
1161 int offsetDelta = 42; 1288 int offsetDelta = 42;
1162 GatheringErrorListener listener = new GatheringErrorListener(); 1289 GatheringErrorListener listener = new GatheringErrorListener();
1163 Scanner scanner = 1290 Scanner scanner =
1164 new Scanner(null, new SubSequenceReader("a", offsetDelta), listener); 1291 new Scanner(null, new SubSequenceReader("a", offsetDelta), listener);
1165 scanner.setSourceStart(3, 9); 1292 scanner.setSourceStart(3, 9);
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1827 expect(TokenType.LT_LT.isUserDefinableOperator, isTrue); 1954 expect(TokenType.LT_LT.isUserDefinableOperator, isTrue);
1828 expect(TokenType.MINUS.isUserDefinableOperator, isTrue); 1955 expect(TokenType.MINUS.isUserDefinableOperator, isTrue);
1829 expect(TokenType.PERCENT.isUserDefinableOperator, isTrue); 1956 expect(TokenType.PERCENT.isUserDefinableOperator, isTrue);
1830 expect(TokenType.PLUS.isUserDefinableOperator, isTrue); 1957 expect(TokenType.PLUS.isUserDefinableOperator, isTrue);
1831 expect(TokenType.SLASH.isUserDefinableOperator, isTrue); 1958 expect(TokenType.SLASH.isUserDefinableOperator, isTrue);
1832 expect(TokenType.STAR.isUserDefinableOperator, isTrue); 1959 expect(TokenType.STAR.isUserDefinableOperator, isTrue);
1833 expect(TokenType.TILDE.isUserDefinableOperator, isTrue); 1960 expect(TokenType.TILDE.isUserDefinableOperator, isTrue);
1834 expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue); 1961 expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue);
1835 } 1962 }
1836 } 1963 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/enum_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698