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

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

Issue 189803004: Translate private Java members to private Dart members. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweaks Created 6 years, 9 months 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
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/java_core.dart'; 10 import 'package:analyzer/src/generated/java_core.dart';
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 * of a stream of tokens. 242 * of a stream of tokens.
243 */ 243 */
244 class TokenStreamValidator { 244 class TokenStreamValidator {
245 /** 245 /**
246 * Validate that the stream of tokens that starts with the given token is corr ect. 246 * Validate that the stream of tokens that starts with the given token is corr ect.
247 * 247 *
248 * @param token the first token in the stream of tokens to be validated 248 * @param token the first token in the stream of tokens to be validated
249 */ 249 */
250 void validate(Token token) { 250 void validate(Token token) {
251 JavaStringBuilder builder = new JavaStringBuilder(); 251 JavaStringBuilder builder = new JavaStringBuilder();
252 validateStream(builder, token); 252 _validateStream(builder, token);
253 if (builder.length > 0) { 253 if (builder.length > 0) {
254 JUnitTestCase.fail(builder.toString()); 254 JUnitTestCase.fail(builder.toString());
255 } 255 }
256 } 256 }
257 257
258 void validateStream(JavaStringBuilder builder, Token token) { 258 void _validateStream(JavaStringBuilder builder, Token token) {
259 if (token == null) { 259 if (token == null) {
260 return; 260 return;
261 } 261 }
262 Token previousToken = null; 262 Token previousToken = null;
263 int previousEnd = -1; 263 int previousEnd = -1;
264 Token currentToken = token; 264 Token currentToken = token;
265 while (currentToken != null && currentToken.type != TokenType.EOF) { 265 while (currentToken != null && currentToken.type != TokenType.EOF) {
266 validateStream(builder, currentToken.precedingComments); 266 _validateStream(builder, currentToken.precedingComments);
267 TokenType type = currentToken.type; 267 TokenType type = currentToken.type;
268 if (identical(type, TokenType.OPEN_CURLY_BRACKET) || identical(type, Token Type.OPEN_PAREN) || identical(type, TokenType.OPEN_SQUARE_BRACKET) || identical( type, TokenType.STRING_INTERPOLATION_EXPRESSION)) { 268 if (identical(type, TokenType.OPEN_CURLY_BRACKET) || identical(type, Token Type.OPEN_PAREN) || identical(type, TokenType.OPEN_SQUARE_BRACKET) || identical( type, TokenType.STRING_INTERPOLATION_EXPRESSION)) {
269 if (currentToken is! BeginToken) { 269 if (currentToken is! BeginToken) {
270 builder.append("\r\nExpected BeginToken, found "); 270 builder.append("\r\nExpected BeginToken, found ");
271 builder.append(currentToken.runtimeType.toString()); 271 builder.append(currentToken.runtimeType.toString());
272 builder.append(" "); 272 builder.append(" ");
273 writeToken(builder, currentToken); 273 _writeToken(builder, currentToken);
274 } 274 }
275 } 275 }
276 int currentStart = currentToken.offset; 276 int currentStart = currentToken.offset;
277 int currentLength = currentToken.length; 277 int currentLength = currentToken.length;
278 int currentEnd = currentStart + currentLength - 1; 278 int currentEnd = currentStart + currentLength - 1;
279 if (currentStart <= previousEnd) { 279 if (currentStart <= previousEnd) {
280 builder.append("\r\nInvalid token sequence: "); 280 builder.append("\r\nInvalid token sequence: ");
281 writeToken(builder, previousToken); 281 _writeToken(builder, previousToken);
282 builder.append(" followed by "); 282 builder.append(" followed by ");
283 writeToken(builder, currentToken); 283 _writeToken(builder, currentToken);
284 } 284 }
285 previousEnd = currentEnd; 285 previousEnd = currentEnd;
286 previousToken = currentToken; 286 previousToken = currentToken;
287 currentToken = currentToken.next; 287 currentToken = currentToken.next;
288 } 288 }
289 } 289 }
290 290
291 void writeToken(JavaStringBuilder builder, Token token) { 291 void _writeToken(JavaStringBuilder builder, Token token) {
292 builder.append("["); 292 builder.append("[");
293 builder.append(token.type); 293 builder.append(token.type);
294 builder.append(", '"); 294 builder.append(", '");
295 builder.append(token.lexeme); 295 builder.append(token.lexeme);
296 builder.append("', "); 296 builder.append("', ");
297 builder.append(token.offset); 297 builder.append(token.offset);
298 builder.append(", "); 298 builder.append(", ");
299 builder.append(token.length); 299 builder.append(token.length);
300 builder.append("]"); 300 builder.append("]");
301 } 301 }
302 } 302 }
303 303
304 class ScannerTest extends JUnitTestCase { 304 class ScannerTest extends JUnitTestCase {
305 void test_ampersand() { 305 void test_ampersand() {
306 assertToken(TokenType.AMPERSAND, "&"); 306 _assertToken(TokenType.AMPERSAND, "&");
307 } 307 }
308 308
309 void test_ampersand_ampersand() { 309 void test_ampersand_ampersand() {
310 assertToken(TokenType.AMPERSAND_AMPERSAND, "&&"); 310 _assertToken(TokenType.AMPERSAND_AMPERSAND, "&&");
311 } 311 }
312 312
313 void test_ampersand_eq() { 313 void test_ampersand_eq() {
314 assertToken(TokenType.AMPERSAND_EQ, "&="); 314 _assertToken(TokenType.AMPERSAND_EQ, "&=");
315 } 315 }
316 316
317 void test_at() { 317 void test_at() {
318 assertToken(TokenType.AT, "@"); 318 _assertToken(TokenType.AT, "@");
319 } 319 }
320 320
321 void test_backping() { 321 void test_backping() {
322 assertToken(TokenType.BACKPING, "`"); 322 _assertToken(TokenType.BACKPING, "`");
323 } 323 }
324 324
325 void test_backslash() { 325 void test_backslash() {
326 assertToken(TokenType.BACKSLASH, "\\"); 326 _assertToken(TokenType.BACKSLASH, "\\");
327 } 327 }
328 328
329 void test_bang() { 329 void test_bang() {
330 assertToken(TokenType.BANG, "!"); 330 _assertToken(TokenType.BANG, "!");
331 } 331 }
332 332
333 void test_bang_eq() { 333 void test_bang_eq() {
334 assertToken(TokenType.BANG_EQ, "!="); 334 _assertToken(TokenType.BANG_EQ, "!=");
335 } 335 }
336 336
337 void test_bar() { 337 void test_bar() {
338 assertToken(TokenType.BAR, "|"); 338 _assertToken(TokenType.BAR, "|");
339 } 339 }
340 340
341 void test_bar_bar() { 341 void test_bar_bar() {
342 assertToken(TokenType.BAR_BAR, "||"); 342 _assertToken(TokenType.BAR_BAR, "||");
343 } 343 }
344 344
345 void test_bar_eq() { 345 void test_bar_eq() {
346 assertToken(TokenType.BAR_EQ, "|="); 346 _assertToken(TokenType.BAR_EQ, "|=");
347 } 347 }
348 348
349 void test_caret() { 349 void test_caret() {
350 assertToken(TokenType.CARET, "^"); 350 _assertToken(TokenType.CARET, "^");
351 } 351 }
352 352
353 void test_caret_eq() { 353 void test_caret_eq() {
354 assertToken(TokenType.CARET_EQ, "^="); 354 _assertToken(TokenType.CARET_EQ, "^=");
355 } 355 }
356 356
357 void test_close_curly_bracket() { 357 void test_close_curly_bracket() {
358 assertToken(TokenType.CLOSE_CURLY_BRACKET, "}"); 358 _assertToken(TokenType.CLOSE_CURLY_BRACKET, "}");
359 } 359 }
360 360
361 void test_close_paren() { 361 void test_close_paren() {
362 assertToken(TokenType.CLOSE_PAREN, ")"); 362 _assertToken(TokenType.CLOSE_PAREN, ")");
363 } 363 }
364 364
365 void test_close_quare_bracket() { 365 void test_close_quare_bracket() {
366 assertToken(TokenType.CLOSE_SQUARE_BRACKET, "]"); 366 _assertToken(TokenType.CLOSE_SQUARE_BRACKET, "]");
367 } 367 }
368 368
369 void test_colon() { 369 void test_colon() {
370 assertToken(TokenType.COLON, ":"); 370 _assertToken(TokenType.COLON, ":");
371 } 371 }
372 372
373 void test_comma() { 373 void test_comma() {
374 assertToken(TokenType.COMMA, ","); 374 _assertToken(TokenType.COMMA, ",");
375 } 375 }
376 376
377 void test_comment_disabled_multi() { 377 void test_comment_disabled_multi() {
378 Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ ") , AnalysisErrorListener.NULL_LISTENER); 378 Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ ") , AnalysisErrorListener.NULL_LISTENER);
379 scanner.preserveComments = false; 379 scanner.preserveComments = false;
380 Token token = scanner.tokenize(); 380 Token token = scanner.tokenize();
381 JUnitTestCase.assertNotNull(token); 381 JUnitTestCase.assertNotNull(token);
382 JUnitTestCase.assertNull(token.precedingComments); 382 JUnitTestCase.assertNull(token.precedingComments);
383 } 383 }
384 384
385 void test_comment_multi() { 385 void test_comment_multi() {
386 assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment */"); 386 _assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment */");
387 } 387 }
388 388
389 void test_comment_multi_unterminated() { 389 void test_comment_multi_unterminated() {
390 assertError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, 3, "/* x"); 390 _assertError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, 3, "/* x");
391 } 391 }
392 392
393 void test_comment_nested() { 393 void test_comment_nested() {
394 assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment /* within a */ comme nt */"); 394 _assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment /* within a */ comm ent */");
395 } 395 }
396 396
397 void test_comment_single() { 397 void test_comment_single() {
398 assertComment(TokenType.SINGLE_LINE_COMMENT, "// comment"); 398 _assertComment(TokenType.SINGLE_LINE_COMMENT, "// comment");
399 } 399 }
400 400
401 void test_double_both_e() { 401 void test_double_both_e() {
402 assertToken(TokenType.DOUBLE, "0.123e4"); 402 _assertToken(TokenType.DOUBLE, "0.123e4");
403 } 403 }
404 404
405 void test_double_both_E() { 405 void test_double_both_E() {
406 assertToken(TokenType.DOUBLE, "0.123E4"); 406 _assertToken(TokenType.DOUBLE, "0.123E4");
407 } 407 }
408 408
409 void test_double_fraction() { 409 void test_double_fraction() {
410 assertToken(TokenType.DOUBLE, ".123"); 410 _assertToken(TokenType.DOUBLE, ".123");
411 } 411 }
412 412
413 void test_double_fraction_e() { 413 void test_double_fraction_e() {
414 assertToken(TokenType.DOUBLE, ".123e4"); 414 _assertToken(TokenType.DOUBLE, ".123e4");
415 } 415 }
416 416
417 void test_double_fraction_E() { 417 void test_double_fraction_E() {
418 assertToken(TokenType.DOUBLE, ".123E4"); 418 _assertToken(TokenType.DOUBLE, ".123E4");
419 } 419 }
420 420
421 void test_double_missingDigitInExponent() { 421 void test_double_missingDigitInExponent() {
422 assertError(ScannerErrorCode.MISSING_DIGIT, 1, "1e"); 422 _assertError(ScannerErrorCode.MISSING_DIGIT, 1, "1e");
423 } 423 }
424 424
425 void test_double_whole_e() { 425 void test_double_whole_e() {
426 assertToken(TokenType.DOUBLE, "12e4"); 426 _assertToken(TokenType.DOUBLE, "12e4");
427 } 427 }
428 428
429 void test_double_whole_E() { 429 void test_double_whole_E() {
430 assertToken(TokenType.DOUBLE, "12E4"); 430 _assertToken(TokenType.DOUBLE, "12E4");
431 } 431 }
432 432
433 void test_eq() { 433 void test_eq() {
434 assertToken(TokenType.EQ, "="); 434 _assertToken(TokenType.EQ, "=");
435 } 435 }
436 436
437 void test_eq_eq() { 437 void test_eq_eq() {
438 assertToken(TokenType.EQ_EQ, "=="); 438 _assertToken(TokenType.EQ_EQ, "==");
439 } 439 }
440 440
441 void test_gt() { 441 void test_gt() {
442 assertToken(TokenType.GT, ">"); 442 _assertToken(TokenType.GT, ">");
443 } 443 }
444 444
445 void test_gt_eq() { 445 void test_gt_eq() {
446 assertToken(TokenType.GT_EQ, ">="); 446 _assertToken(TokenType.GT_EQ, ">=");
447 } 447 }
448 448
449 void test_gt_gt() { 449 void test_gt_gt() {
450 assertToken(TokenType.GT_GT, ">>"); 450 _assertToken(TokenType.GT_GT, ">>");
451 } 451 }
452 452
453 void test_gt_gt_eq() { 453 void test_gt_gt_eq() {
454 assertToken(TokenType.GT_GT_EQ, ">>="); 454 _assertToken(TokenType.GT_GT_EQ, ">>=");
455 } 455 }
456 456
457 void test_hash() { 457 void test_hash() {
458 assertToken(TokenType.HASH, "#"); 458 _assertToken(TokenType.HASH, "#");
459 } 459 }
460 460
461 void test_hexidecimal() { 461 void test_hexidecimal() {
462 assertToken(TokenType.HEXADECIMAL, "0x1A2B3C"); 462 _assertToken(TokenType.HEXADECIMAL, "0x1A2B3C");
463 } 463 }
464 464
465 void test_hexidecimal_missingDigit() { 465 void test_hexidecimal_missingDigit() {
466 assertError(ScannerErrorCode.MISSING_HEX_DIGIT, 1, "0x"); 466 _assertError(ScannerErrorCode.MISSING_HEX_DIGIT, 1, "0x");
467 } 467 }
468 468
469 void test_identifier() { 469 void test_identifier() {
470 assertToken(TokenType.IDENTIFIER, "result"); 470 _assertToken(TokenType.IDENTIFIER, "result");
471 } 471 }
472 472
473 void test_illegalChar_cyrillicLetter_middle() { 473 void test_illegalChar_cyrillicLetter_middle() {
474 assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "Shche\u0433lov"); 474 _assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "Shche\u0433lov");
475 } 475 }
476 476
477 void test_illegalChar_cyrillicLetter_start() { 477 void test_illegalChar_cyrillicLetter_start() {
478 assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u0429"); 478 _assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u0429");
479 } 479 }
480 480
481 void test_illegalChar_nbsp() { 481 void test_illegalChar_nbsp() {
482 assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u00A0"); 482 _assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u00A0");
483 } 483 }
484 484
485 void test_illegalChar_notLetter() { 485 void test_illegalChar_notLetter() {
486 assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u0312"); 486 _assertError(ScannerErrorCode.ILLEGAL_CHARACTER, 0, "\u0312");
487 } 487 }
488 488
489 void test_index() { 489 void test_index() {
490 assertToken(TokenType.INDEX, "[]"); 490 _assertToken(TokenType.INDEX, "[]");
491 } 491 }
492 492
493 void test_index_eq() { 493 void test_index_eq() {
494 assertToken(TokenType.INDEX_EQ, "[]="); 494 _assertToken(TokenType.INDEX_EQ, "[]=");
495 } 495 }
496 496
497 void test_int() { 497 void test_int() {
498 assertToken(TokenType.INT, "123"); 498 _assertToken(TokenType.INT, "123");
499 } 499 }
500 500
501 void test_int_initialZero() { 501 void test_int_initialZero() {
502 assertToken(TokenType.INT, "0123"); 502 _assertToken(TokenType.INT, "0123");
503 } 503 }
504 504
505 void test_keyword_abstract() { 505 void test_keyword_abstract() {
506 assertKeywordToken("abstract"); 506 _assertKeywordToken("abstract");
507 } 507 }
508 508
509 void test_keyword_as() { 509 void test_keyword_as() {
510 assertKeywordToken("as"); 510 _assertKeywordToken("as");
511 } 511 }
512 512
513 void test_keyword_assert() { 513 void test_keyword_assert() {
514 assertKeywordToken("assert"); 514 _assertKeywordToken("assert");
515 } 515 }
516 516
517 void test_keyword_break() { 517 void test_keyword_break() {
518 assertKeywordToken("break"); 518 _assertKeywordToken("break");
519 } 519 }
520 520
521 void test_keyword_case() { 521 void test_keyword_case() {
522 assertKeywordToken("case"); 522 _assertKeywordToken("case");
523 } 523 }
524 524
525 void test_keyword_catch() { 525 void test_keyword_catch() {
526 assertKeywordToken("catch"); 526 _assertKeywordToken("catch");
527 } 527 }
528 528
529 void test_keyword_class() { 529 void test_keyword_class() {
530 assertKeywordToken("class"); 530 _assertKeywordToken("class");
531 } 531 }
532 532
533 void test_keyword_const() { 533 void test_keyword_const() {
534 assertKeywordToken("const"); 534 _assertKeywordToken("const");
535 } 535 }
536 536
537 void test_keyword_continue() { 537 void test_keyword_continue() {
538 assertKeywordToken("continue"); 538 _assertKeywordToken("continue");
539 } 539 }
540 540
541 void test_keyword_default() { 541 void test_keyword_default() {
542 assertKeywordToken("default"); 542 _assertKeywordToken("default");
543 } 543 }
544 544
545 void test_keyword_do() { 545 void test_keyword_do() {
546 assertKeywordToken("do"); 546 _assertKeywordToken("do");
547 } 547 }
548 548
549 void test_keyword_dynamic() { 549 void test_keyword_dynamic() {
550 assertKeywordToken("dynamic"); 550 _assertKeywordToken("dynamic");
551 } 551 }
552 552
553 void test_keyword_else() { 553 void test_keyword_else() {
554 assertKeywordToken("else"); 554 _assertKeywordToken("else");
555 } 555 }
556 556
557 void test_keyword_enum() { 557 void test_keyword_enum() {
558 assertKeywordToken("enum"); 558 _assertKeywordToken("enum");
559 } 559 }
560 560
561 void test_keyword_export() { 561 void test_keyword_export() {
562 assertKeywordToken("export"); 562 _assertKeywordToken("export");
563 } 563 }
564 564
565 void test_keyword_extends() { 565 void test_keyword_extends() {
566 assertKeywordToken("extends"); 566 _assertKeywordToken("extends");
567 } 567 }
568 568
569 void test_keyword_factory() { 569 void test_keyword_factory() {
570 assertKeywordToken("factory"); 570 _assertKeywordToken("factory");
571 } 571 }
572 572
573 void test_keyword_false() { 573 void test_keyword_false() {
574 assertKeywordToken("false"); 574 _assertKeywordToken("false");
575 } 575 }
576 576
577 void test_keyword_final() { 577 void test_keyword_final() {
578 assertKeywordToken("final"); 578 _assertKeywordToken("final");
579 } 579 }
580 580
581 void test_keyword_finally() { 581 void test_keyword_finally() {
582 assertKeywordToken("finally"); 582 _assertKeywordToken("finally");
583 } 583 }
584 584
585 void test_keyword_for() { 585 void test_keyword_for() {
586 assertKeywordToken("for"); 586 _assertKeywordToken("for");
587 } 587 }
588 588
589 void test_keyword_get() { 589 void test_keyword_get() {
590 assertKeywordToken("get"); 590 _assertKeywordToken("get");
591 } 591 }
592 592
593 void test_keyword_if() { 593 void test_keyword_if() {
594 assertKeywordToken("if"); 594 _assertKeywordToken("if");
595 } 595 }
596 596
597 void test_keyword_implements() { 597 void test_keyword_implements() {
598 assertKeywordToken("implements"); 598 _assertKeywordToken("implements");
599 } 599 }
600 600
601 void test_keyword_import() { 601 void test_keyword_import() {
602 assertKeywordToken("import"); 602 _assertKeywordToken("import");
603 } 603 }
604 604
605 void test_keyword_in() { 605 void test_keyword_in() {
606 assertKeywordToken("in"); 606 _assertKeywordToken("in");
607 } 607 }
608 608
609 void test_keyword_is() { 609 void test_keyword_is() {
610 assertKeywordToken("is"); 610 _assertKeywordToken("is");
611 } 611 }
612 612
613 void test_keyword_library() { 613 void test_keyword_library() {
614 assertKeywordToken("library"); 614 _assertKeywordToken("library");
615 } 615 }
616 616
617 void test_keyword_new() { 617 void test_keyword_new() {
618 assertKeywordToken("new"); 618 _assertKeywordToken("new");
619 } 619 }
620 620
621 void test_keyword_null() { 621 void test_keyword_null() {
622 assertKeywordToken("null"); 622 _assertKeywordToken("null");
623 } 623 }
624 624
625 void test_keyword_operator() { 625 void test_keyword_operator() {
626 assertKeywordToken("operator"); 626 _assertKeywordToken("operator");
627 } 627 }
628 628
629 void test_keyword_part() { 629 void test_keyword_part() {
630 assertKeywordToken("part"); 630 _assertKeywordToken("part");
631 } 631 }
632 632
633 void test_keyword_rethrow() { 633 void test_keyword_rethrow() {
634 assertKeywordToken("rethrow"); 634 _assertKeywordToken("rethrow");
635 } 635 }
636 636
637 void test_keyword_return() { 637 void test_keyword_return() {
638 assertKeywordToken("return"); 638 _assertKeywordToken("return");
639 } 639 }
640 640
641 void test_keyword_set() { 641 void test_keyword_set() {
642 assertKeywordToken("set"); 642 _assertKeywordToken("set");
643 } 643 }
644 644
645 void test_keyword_static() { 645 void test_keyword_static() {
646 assertKeywordToken("static"); 646 _assertKeywordToken("static");
647 } 647 }
648 648
649 void test_keyword_super() { 649 void test_keyword_super() {
650 assertKeywordToken("super"); 650 _assertKeywordToken("super");
651 } 651 }
652 652
653 void test_keyword_switch() { 653 void test_keyword_switch() {
654 assertKeywordToken("switch"); 654 _assertKeywordToken("switch");
655 } 655 }
656 656
657 void test_keyword_this() { 657 void test_keyword_this() {
658 assertKeywordToken("this"); 658 _assertKeywordToken("this");
659 } 659 }
660 660
661 void test_keyword_throw() { 661 void test_keyword_throw() {
662 assertKeywordToken("throw"); 662 _assertKeywordToken("throw");
663 } 663 }
664 664
665 void test_keyword_true() { 665 void test_keyword_true() {
666 assertKeywordToken("true"); 666 _assertKeywordToken("true");
667 } 667 }
668 668
669 void test_keyword_try() { 669 void test_keyword_try() {
670 assertKeywordToken("try"); 670 _assertKeywordToken("try");
671 } 671 }
672 672
673 void test_keyword_typedef() { 673 void test_keyword_typedef() {
674 assertKeywordToken("typedef"); 674 _assertKeywordToken("typedef");
675 } 675 }
676 676
677 void test_keyword_var() { 677 void test_keyword_var() {
678 assertKeywordToken("var"); 678 _assertKeywordToken("var");
679 } 679 }
680 680
681 void test_keyword_void() { 681 void test_keyword_void() {
682 assertKeywordToken("void"); 682 _assertKeywordToken("void");
683 } 683 }
684 684
685 void test_keyword_while() { 685 void test_keyword_while() {
686 assertKeywordToken("while"); 686 _assertKeywordToken("while");
687 } 687 }
688 688
689 void test_keyword_with() { 689 void test_keyword_with() {
690 assertKeywordToken("with"); 690 _assertKeywordToken("with");
691 } 691 }
692 692
693 void test_lineInfo_multilineComment() { 693 void test_lineInfo_multilineComment() {
694 String source = "/*\r *\r */"; 694 String source = "/*\r *\r */";
695 assertLineInfo(source, [ 695 _assertLineInfo(source, [
696 new ScannerTest_ExpectedLocation(0, 1, 1), 696 new ScannerTest_ExpectedLocation(0, 1, 1),
697 new ScannerTest_ExpectedLocation(4, 2, 2), 697 new ScannerTest_ExpectedLocation(4, 2, 2),
698 new ScannerTest_ExpectedLocation(source.length - 1, 3, 3)]); 698 new ScannerTest_ExpectedLocation(source.length - 1, 3, 3)]);
699 } 699 }
700 700
701 void test_lineInfo_multilineString() { 701 void test_lineInfo_multilineString() {
702 String source = "'''a\r\nbc\r\nd'''"; 702 String source = "'''a\r\nbc\r\nd'''";
703 assertLineInfo(source, [ 703 _assertLineInfo(source, [
704 new ScannerTest_ExpectedLocation(0, 1, 1), 704 new ScannerTest_ExpectedLocation(0, 1, 1),
705 new ScannerTest_ExpectedLocation(7, 2, 2), 705 new ScannerTest_ExpectedLocation(7, 2, 2),
706 new ScannerTest_ExpectedLocation(source.length - 1, 3, 4)]); 706 new ScannerTest_ExpectedLocation(source.length - 1, 3, 4)]);
707 } 707 }
708 708
709 void test_lineInfo_simpleClass() { 709 void test_lineInfo_simpleClass() {
710 String source = "class Test {\r\n String s = '...';\r\n int get x => s .MISSING_GETTER;\r\n}"; 710 String source = "class Test {\r\n String s = '...';\r\n int get x => s .MISSING_GETTER;\r\n}";
711 assertLineInfo(source, [ 711 _assertLineInfo(source, [
712 new ScannerTest_ExpectedLocation(0, 1, 1), 712 new ScannerTest_ExpectedLocation(0, 1, 1),
713 new ScannerTest_ExpectedLocation(source.indexOf("MISSING_GETTER"), 3, 20 ), 713 new ScannerTest_ExpectedLocation(source.indexOf("MISSING_GETTER"), 3, 20 ),
714 new ScannerTest_ExpectedLocation(source.length - 1, 4, 1)]); 714 new ScannerTest_ExpectedLocation(source.length - 1, 4, 1)]);
715 } 715 }
716 716
717 void test_lineInfo_slashN() { 717 void test_lineInfo_slashN() {
718 String source = "class Test {\n}"; 718 String source = "class Test {\n}";
719 assertLineInfo(source, [ 719 _assertLineInfo(source, [
720 new ScannerTest_ExpectedLocation(0, 1, 1), 720 new ScannerTest_ExpectedLocation(0, 1, 1),
721 new ScannerTest_ExpectedLocation(source.indexOf("}"), 2, 1)]); 721 new ScannerTest_ExpectedLocation(source.indexOf("}"), 2, 1)]);
722 } 722 }
723 723
724 void test_lt() { 724 void test_lt() {
725 assertToken(TokenType.LT, "<"); 725 _assertToken(TokenType.LT, "<");
726 } 726 }
727 727
728 void test_lt_eq() { 728 void test_lt_eq() {
729 assertToken(TokenType.LT_EQ, "<="); 729 _assertToken(TokenType.LT_EQ, "<=");
730 } 730 }
731 731
732 void test_lt_lt() { 732 void test_lt_lt() {
733 assertToken(TokenType.LT_LT, "<<"); 733 _assertToken(TokenType.LT_LT, "<<");
734 } 734 }
735 735
736 void test_lt_lt_eq() { 736 void test_lt_lt_eq() {
737 assertToken(TokenType.LT_LT_EQ, "<<="); 737 _assertToken(TokenType.LT_LT_EQ, "<<=");
738 } 738 }
739 739
740 void test_minus() { 740 void test_minus() {
741 assertToken(TokenType.MINUS, "-"); 741 _assertToken(TokenType.MINUS, "-");
742 } 742 }
743 743
744 void test_minus_eq() { 744 void test_minus_eq() {
745 assertToken(TokenType.MINUS_EQ, "-="); 745 _assertToken(TokenType.MINUS_EQ, "-=");
746 } 746 }
747 747
748 void test_minus_minus() { 748 void test_minus_minus() {
749 assertToken(TokenType.MINUS_MINUS, "--"); 749 _assertToken(TokenType.MINUS_MINUS, "--");
750 } 750 }
751 751
752 void test_open_curly_bracket() { 752 void test_open_curly_bracket() {
753 assertToken(TokenType.OPEN_CURLY_BRACKET, "{"); 753 _assertToken(TokenType.OPEN_CURLY_BRACKET, "{");
754 } 754 }
755 755
756 void test_open_paren() { 756 void test_open_paren() {
757 assertToken(TokenType.OPEN_PAREN, "("); 757 _assertToken(TokenType.OPEN_PAREN, "(");
758 } 758 }
759 759
760 void test_open_square_bracket() { 760 void test_open_square_bracket() {
761 assertToken(TokenType.OPEN_SQUARE_BRACKET, "["); 761 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "[");
762 } 762 }
763 763
764 void test_openSquareBracket() { 764 void test_openSquareBracket() {
765 assertToken(TokenType.OPEN_SQUARE_BRACKET, "["); 765 _assertToken(TokenType.OPEN_SQUARE_BRACKET, "[");
766 } 766 }
767 767
768 void test_percent() { 768 void test_percent() {
769 assertToken(TokenType.PERCENT, "%"); 769 _assertToken(TokenType.PERCENT, "%");
770 } 770 }
771 771
772 void test_percent_eq() { 772 void test_percent_eq() {
773 assertToken(TokenType.PERCENT_EQ, "%="); 773 _assertToken(TokenType.PERCENT_EQ, "%=");
774 } 774 }
775 775
776 void test_period() { 776 void test_period() {
777 assertToken(TokenType.PERIOD, "."); 777 _assertToken(TokenType.PERIOD, ".");
778 } 778 }
779 779
780 void test_period_period() { 780 void test_period_period() {
781 assertToken(TokenType.PERIOD_PERIOD, ".."); 781 _assertToken(TokenType.PERIOD_PERIOD, "..");
782 } 782 }
783 783
784 void test_period_period_period() { 784 void test_period_period_period() {
785 assertToken(TokenType.PERIOD_PERIOD_PERIOD, "..."); 785 _assertToken(TokenType.PERIOD_PERIOD_PERIOD, "...");
786 } 786 }
787 787
788 void test_periodAfterNumberNotIncluded_identifier() { 788 void test_periodAfterNumberNotIncluded_identifier() {
789 assertTokens("42.isEven()", [ 789 _assertTokens("42.isEven()", [
790 new StringToken(TokenType.INT, "42", 0), 790 new StringToken(TokenType.INT, "42", 0),
791 new Token(TokenType.PERIOD, 2), 791 new Token(TokenType.PERIOD, 2),
792 new StringToken(TokenType.IDENTIFIER, "isEven", 3), 792 new StringToken(TokenType.IDENTIFIER, "isEven", 3),
793 new Token(TokenType.OPEN_PAREN, 9), 793 new Token(TokenType.OPEN_PAREN, 9),
794 new Token(TokenType.CLOSE_PAREN, 10)]); 794 new Token(TokenType.CLOSE_PAREN, 10)]);
795 } 795 }
796 796
797 void test_periodAfterNumberNotIncluded_period() { 797 void test_periodAfterNumberNotIncluded_period() {
798 assertTokens("42..isEven()", [ 798 _assertTokens("42..isEven()", [
799 new StringToken(TokenType.INT, "42", 0), 799 new StringToken(TokenType.INT, "42", 0),
800 new Token(TokenType.PERIOD_PERIOD, 2), 800 new Token(TokenType.PERIOD_PERIOD, 2),
801 new StringToken(TokenType.IDENTIFIER, "isEven", 4), 801 new StringToken(TokenType.IDENTIFIER, "isEven", 4),
802 new Token(TokenType.OPEN_PAREN, 10), 802 new Token(TokenType.OPEN_PAREN, 10),
803 new Token(TokenType.CLOSE_PAREN, 11)]); 803 new Token(TokenType.CLOSE_PAREN, 11)]);
804 } 804 }
805 805
806 void test_plus() { 806 void test_plus() {
807 assertToken(TokenType.PLUS, "+"); 807 _assertToken(TokenType.PLUS, "+");
808 } 808 }
809 809
810 void test_plus_eq() { 810 void test_plus_eq() {
811 assertToken(TokenType.PLUS_EQ, "+="); 811 _assertToken(TokenType.PLUS_EQ, "+=");
812 } 812 }
813 813
814 void test_plus_plus() { 814 void test_plus_plus() {
815 assertToken(TokenType.PLUS_PLUS, "++"); 815 _assertToken(TokenType.PLUS_PLUS, "++");
816 } 816 }
817 817
818 void test_question() { 818 void test_question() {
819 assertToken(TokenType.QUESTION, "?"); 819 _assertToken(TokenType.QUESTION, "?");
820 } 820 }
821 821
822 void test_scriptTag_withArgs() { 822 void test_scriptTag_withArgs() {
823 assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart -debug"); 823 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart -debug");
824 } 824 }
825 825
826 void test_scriptTag_withoutSpace() { 826 void test_scriptTag_withoutSpace() {
827 assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart"); 827 _assertToken(TokenType.SCRIPT_TAG, "#!/bin/dart");
828 } 828 }
829 829
830 void test_scriptTag_withSpace() { 830 void test_scriptTag_withSpace() {
831 assertToken(TokenType.SCRIPT_TAG, "#! /bin/dart"); 831 _assertToken(TokenType.SCRIPT_TAG, "#! /bin/dart");
832 } 832 }
833 833
834 void test_semicolon() { 834 void test_semicolon() {
835 assertToken(TokenType.SEMICOLON, ";"); 835 _assertToken(TokenType.SEMICOLON, ";");
836 } 836 }
837 837
838 void test_setSourceStart() { 838 void test_setSourceStart() {
839 int offsetDelta = 42; 839 int offsetDelta = 42;
840 GatheringErrorListener listener = new GatheringErrorListener(); 840 GatheringErrorListener listener = new GatheringErrorListener();
841 Scanner scanner = new Scanner(null, new SubSequenceReader("a", offsetDelta), listener); 841 Scanner scanner = new Scanner(null, new SubSequenceReader("a", offsetDelta), listener);
842 scanner.setSourceStart(3, 9); 842 scanner.setSourceStart(3, 9);
843 scanner.tokenize(); 843 scanner.tokenize();
844 List<int> lineStarts = scanner.lineStarts; 844 List<int> lineStarts = scanner.lineStarts;
845 JUnitTestCase.assertNotNull(lineStarts); 845 JUnitTestCase.assertNotNull(lineStarts);
846 JUnitTestCase.assertEquals(3, lineStarts.length); 846 JUnitTestCase.assertEquals(3, lineStarts.length);
847 JUnitTestCase.assertEquals(33, lineStarts[2]); 847 JUnitTestCase.assertEquals(33, lineStarts[2]);
848 } 848 }
849 849
850 void test_slash() { 850 void test_slash() {
851 assertToken(TokenType.SLASH, "/"); 851 _assertToken(TokenType.SLASH, "/");
852 } 852 }
853 853
854 void test_slash_eq() { 854 void test_slash_eq() {
855 assertToken(TokenType.SLASH_EQ, "/="); 855 _assertToken(TokenType.SLASH_EQ, "/=");
856 } 856 }
857 857
858 void test_star() { 858 void test_star() {
859 assertToken(TokenType.STAR, "*"); 859 _assertToken(TokenType.STAR, "*");
860 } 860 }
861 861
862 void test_star_eq() { 862 void test_star_eq() {
863 assertToken(TokenType.STAR_EQ, "*="); 863 _assertToken(TokenType.STAR_EQ, "*=");
864 } 864 }
865 865
866 void test_startAndEnd() { 866 void test_startAndEnd() {
867 Token token = scan("a"); 867 Token token = _scan("a");
868 Token previous = token.previous; 868 Token previous = token.previous;
869 JUnitTestCase.assertEquals(token, previous.next); 869 JUnitTestCase.assertEquals(token, previous.next);
870 JUnitTestCase.assertEquals(previous, previous.previous); 870 JUnitTestCase.assertEquals(previous, previous.previous);
871 Token next = token.next; 871 Token next = token.next;
872 JUnitTestCase.assertEquals(next, next.next); 872 JUnitTestCase.assertEquals(next, next.next);
873 JUnitTestCase.assertEquals(token, next.previous); 873 JUnitTestCase.assertEquals(token, next.previous);
874 } 874 }
875 875
876 void test_string_multi_double() { 876 void test_string_multi_double() {
877 assertToken(TokenType.STRING, "\"\"\"line1\nline2\"\"\""); 877 _assertToken(TokenType.STRING, "\"\"\"line1\nline2\"\"\"");
878 } 878 }
879 879
880 void test_string_multi_embeddedQuotes() { 880 void test_string_multi_embeddedQuotes() {
881 assertToken(TokenType.STRING, "\"\"\"line1\n\"\"\nline2\"\"\""); 881 _assertToken(TokenType.STRING, "\"\"\"line1\n\"\"\nline2\"\"\"");
882 } 882 }
883 883
884 void test_string_multi_embeddedQuotes_escapedChar() { 884 void test_string_multi_embeddedQuotes_escapedChar() {
885 assertToken(TokenType.STRING, "\"\"\"a\"\"\\tb\"\"\""); 885 _assertToken(TokenType.STRING, "\"\"\"a\"\"\\tb\"\"\"");
886 } 886 }
887 887
888 void test_string_multi_interpolation_block() { 888 void test_string_multi_interpolation_block() {
889 assertTokens("\"Hello \${name}!\"", [ 889 _assertTokens("\"Hello \${name}!\"", [
890 new StringToken(TokenType.STRING, "\"Hello ", 0), 890 new StringToken(TokenType.STRING, "\"Hello ", 0),
891 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), 891 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7),
892 new StringToken(TokenType.IDENTIFIER, "name", 9), 892 new StringToken(TokenType.IDENTIFIER, "name", 9),
893 new Token(TokenType.CLOSE_CURLY_BRACKET, 13), 893 new Token(TokenType.CLOSE_CURLY_BRACKET, 13),
894 new StringToken(TokenType.STRING, "!\"", 14)]); 894 new StringToken(TokenType.STRING, "!\"", 14)]);
895 } 895 }
896 896
897 void test_string_multi_interpolation_identifier() { 897 void test_string_multi_interpolation_identifier() {
898 assertTokens("\"Hello \$name!\"", [ 898 _assertTokens("\"Hello \$name!\"", [
899 new StringToken(TokenType.STRING, "\"Hello ", 0), 899 new StringToken(TokenType.STRING, "\"Hello ", 0),
900 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), 900 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7),
901 new StringToken(TokenType.IDENTIFIER, "name", 8), 901 new StringToken(TokenType.IDENTIFIER, "name", 8),
902 new StringToken(TokenType.STRING, "!\"", 12)]); 902 new StringToken(TokenType.STRING, "!\"", 12)]);
903 } 903 }
904 904
905 void test_string_multi_single() { 905 void test_string_multi_single() {
906 assertToken(TokenType.STRING, "'''string'''"); 906 _assertToken(TokenType.STRING, "'''string'''");
907 } 907 }
908 908
909 void test_string_multi_slashEnter() { 909 void test_string_multi_slashEnter() {
910 assertToken(TokenType.STRING, "'''\\\n'''"); 910 _assertToken(TokenType.STRING, "'''\\\n'''");
911 } 911 }
912 912
913 void test_string_multi_unterminated() { 913 void test_string_multi_unterminated() {
914 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''string"); 914 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''string");
915 } 915 }
916 916
917 void test_string_raw_multi_double() { 917 void test_string_raw_multi_double() {
918 assertToken(TokenType.STRING, "r\"\"\"line1\nline2\"\"\""); 918 _assertToken(TokenType.STRING, "r\"\"\"line1\nline2\"\"\"");
919 } 919 }
920 920
921 void test_string_raw_multi_single() { 921 void test_string_raw_multi_single() {
922 assertToken(TokenType.STRING, "r'''string'''"); 922 _assertToken(TokenType.STRING, "r'''string'''");
923 } 923 }
924 924
925 void test_string_raw_multi_unterminated() { 925 void test_string_raw_multi_unterminated() {
926 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "r'''string"); 926 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "r'''string");
927 } 927 }
928 928
929 void test_string_raw_simple_double() { 929 void test_string_raw_simple_double() {
930 assertToken(TokenType.STRING, "r\"string\""); 930 _assertToken(TokenType.STRING, "r\"string\"");
931 } 931 }
932 932
933 void test_string_raw_simple_single() { 933 void test_string_raw_simple_single() {
934 assertToken(TokenType.STRING, "r'string'"); 934 _assertToken(TokenType.STRING, "r'string'");
935 } 935 }
936 936
937 void test_string_raw_simple_unterminated_eof() { 937 void test_string_raw_simple_unterminated_eof() {
938 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "r'string"); 938 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "r'string");
939 } 939 }
940 940
941 void test_string_raw_simple_unterminated_eol() { 941 void test_string_raw_simple_unterminated_eol() {
942 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "r'string\n"); 942 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "r'string\n");
943 } 943 }
944 944
945 void test_string_simple_double() { 945 void test_string_simple_double() {
946 assertToken(TokenType.STRING, "\"string\""); 946 _assertToken(TokenType.STRING, "\"string\"");
947 } 947 }
948 948
949 void test_string_simple_escapedDollar() { 949 void test_string_simple_escapedDollar() {
950 assertToken(TokenType.STRING, "'a\\\$b'"); 950 _assertToken(TokenType.STRING, "'a\\\$b'");
951 } 951 }
952 952
953 void test_string_simple_interpolation_adjacentIdentifiers() { 953 void test_string_simple_interpolation_adjacentIdentifiers() {
954 assertTokens("'\$a\$b'", [ 954 _assertTokens("'\$a\$b'", [
955 new StringToken(TokenType.STRING, "'", 0), 955 new StringToken(TokenType.STRING, "'", 0),
956 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), 956 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1),
957 new StringToken(TokenType.IDENTIFIER, "a", 2), 957 new StringToken(TokenType.IDENTIFIER, "a", 2),
958 new StringToken(TokenType.STRING, "", 3), 958 new StringToken(TokenType.STRING, "", 3),
959 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), 959 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3),
960 new StringToken(TokenType.IDENTIFIER, "b", 4), 960 new StringToken(TokenType.IDENTIFIER, "b", 4),
961 new StringToken(TokenType.STRING, "'", 5)]); 961 new StringToken(TokenType.STRING, "'", 5)]);
962 } 962 }
963 963
964 void test_string_simple_interpolation_block() { 964 void test_string_simple_interpolation_block() {
965 assertTokens("'Hello \${name}!'", [ 965 _assertTokens("'Hello \${name}!'", [
966 new StringToken(TokenType.STRING, "'Hello ", 0), 966 new StringToken(TokenType.STRING, "'Hello ", 0),
967 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), 967 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7),
968 new StringToken(TokenType.IDENTIFIER, "name", 9), 968 new StringToken(TokenType.IDENTIFIER, "name", 9),
969 new Token(TokenType.CLOSE_CURLY_BRACKET, 13), 969 new Token(TokenType.CLOSE_CURLY_BRACKET, 13),
970 new StringToken(TokenType.STRING, "!'", 14)]); 970 new StringToken(TokenType.STRING, "!'", 14)]);
971 } 971 }
972 972
973 void test_string_simple_interpolation_blockWithNestedMap() { 973 void test_string_simple_interpolation_blockWithNestedMap() {
974 assertTokens("'a \${f({'b' : 'c'})} d'", [ 974 _assertTokens("'a \${f({'b' : 'c'})} d'", [
975 new StringToken(TokenType.STRING, "'a ", 0), 975 new StringToken(TokenType.STRING, "'a ", 0),
976 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3), 976 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3),
977 new StringToken(TokenType.IDENTIFIER, "f", 5), 977 new StringToken(TokenType.IDENTIFIER, "f", 5),
978 new Token(TokenType.OPEN_PAREN, 6), 978 new Token(TokenType.OPEN_PAREN, 6),
979 new Token(TokenType.OPEN_CURLY_BRACKET, 7), 979 new Token(TokenType.OPEN_CURLY_BRACKET, 7),
980 new StringToken(TokenType.STRING, "'b'", 8), 980 new StringToken(TokenType.STRING, "'b'", 8),
981 new Token(TokenType.COLON, 12), 981 new Token(TokenType.COLON, 12),
982 new StringToken(TokenType.STRING, "'c'", 14), 982 new StringToken(TokenType.STRING, "'c'", 14),
983 new Token(TokenType.CLOSE_CURLY_BRACKET, 17), 983 new Token(TokenType.CLOSE_CURLY_BRACKET, 17),
984 new Token(TokenType.CLOSE_PAREN, 18), 984 new Token(TokenType.CLOSE_PAREN, 18),
985 new Token(TokenType.CLOSE_CURLY_BRACKET, 19), 985 new Token(TokenType.CLOSE_CURLY_BRACKET, 19),
986 new StringToken(TokenType.STRING, " d'", 20)]); 986 new StringToken(TokenType.STRING, " d'", 20)]);
987 } 987 }
988 988
989 void test_string_simple_interpolation_firstAndLast() { 989 void test_string_simple_interpolation_firstAndLast() {
990 assertTokens("'\$greeting \$name'", [ 990 _assertTokens("'\$greeting \$name'", [
991 new StringToken(TokenType.STRING, "'", 0), 991 new StringToken(TokenType.STRING, "'", 0),
992 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), 992 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1),
993 new StringToken(TokenType.IDENTIFIER, "greeting", 2), 993 new StringToken(TokenType.IDENTIFIER, "greeting", 2),
994 new StringToken(TokenType.STRING, " ", 10), 994 new StringToken(TokenType.STRING, " ", 10),
995 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 11), 995 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 11),
996 new StringToken(TokenType.IDENTIFIER, "name", 12), 996 new StringToken(TokenType.IDENTIFIER, "name", 12),
997 new StringToken(TokenType.STRING, "'", 16)]); 997 new StringToken(TokenType.STRING, "'", 16)]);
998 } 998 }
999 999
1000 void test_string_simple_interpolation_identifier() { 1000 void test_string_simple_interpolation_identifier() {
1001 assertTokens("'Hello \$name!'", [ 1001 _assertTokens("'Hello \$name!'", [
1002 new StringToken(TokenType.STRING, "'Hello ", 0), 1002 new StringToken(TokenType.STRING, "'Hello ", 0),
1003 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), 1003 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7),
1004 new StringToken(TokenType.IDENTIFIER, "name", 8), 1004 new StringToken(TokenType.IDENTIFIER, "name", 8),
1005 new StringToken(TokenType.STRING, "!'", 12)]); 1005 new StringToken(TokenType.STRING, "!'", 12)]);
1006 } 1006 }
1007 1007
1008 void test_string_simple_interpolation_missingIdentifier() { 1008 void test_string_simple_interpolation_missingIdentifier() {
1009 assertTokens("'\$x\$'", [ 1009 _assertTokens("'\$x\$'", [
1010 new StringToken(TokenType.STRING, "'", 0), 1010 new StringToken(TokenType.STRING, "'", 0),
1011 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), 1011 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1),
1012 new StringToken(TokenType.IDENTIFIER, "x", 2), 1012 new StringToken(TokenType.IDENTIFIER, "x", 2),
1013 new StringToken(TokenType.STRING, "", 3), 1013 new StringToken(TokenType.STRING, "", 3),
1014 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), 1014 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3),
1015 new StringToken(TokenType.STRING, "'", 4)]); 1015 new StringToken(TokenType.STRING, "'", 4)]);
1016 } 1016 }
1017 1017
1018 void test_string_simple_interpolation_nonIdentifier() { 1018 void test_string_simple_interpolation_nonIdentifier() {
1019 assertTokens("'\$1'", [ 1019 _assertTokens("'\$1'", [
1020 new StringToken(TokenType.STRING, "'", 0), 1020 new StringToken(TokenType.STRING, "'", 0),
1021 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), 1021 new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1),
1022 new StringToken(TokenType.STRING, "1'", 2)]); 1022 new StringToken(TokenType.STRING, "1'", 2)]);
1023 } 1023 }
1024 1024
1025 void test_string_simple_single() { 1025 void test_string_simple_single() {
1026 assertToken(TokenType.STRING, "'string'"); 1026 _assertToken(TokenType.STRING, "'string'");
1027 } 1027 }
1028 1028
1029 void test_string_simple_unterminated_eof() { 1029 void test_string_simple_unterminated_eof() {
1030 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 6, "'string"); 1030 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 6, "'string");
1031 } 1031 }
1032 1032
1033 void test_string_simple_unterminated_eol() { 1033 void test_string_simple_unterminated_eol() {
1034 assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "'string\r"); 1034 _assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "'string\r");
1035 } 1035 }
1036 1036
1037 void test_tilde() { 1037 void test_tilde() {
1038 assertToken(TokenType.TILDE, "~"); 1038 _assertToken(TokenType.TILDE, "~");
1039 } 1039 }
1040 1040
1041 void test_tilde_slash() { 1041 void test_tilde_slash() {
1042 assertToken(TokenType.TILDE_SLASH, "~/"); 1042 _assertToken(TokenType.TILDE_SLASH, "~/");
1043 } 1043 }
1044 1044
1045 void test_tilde_slash_eq() { 1045 void test_tilde_slash_eq() {
1046 assertToken(TokenType.TILDE_SLASH_EQ, "~/="); 1046 _assertToken(TokenType.TILDE_SLASH_EQ, "~/=");
1047 } 1047 }
1048 1048
1049 void test_unclosedPairInInterpolation() { 1049 void test_unclosedPairInInterpolation() {
1050 GatheringErrorListener listener = new GatheringErrorListener(); 1050 GatheringErrorListener listener = new GatheringErrorListener();
1051 scanWithListener("'\${(}'", listener); 1051 _scanWithListener("'\${(}'", listener);
1052 } 1052 }
1053 1053
1054 void assertComment(TokenType commentType, String source) { 1054 void _assertComment(TokenType commentType, String source) {
1055 // 1055 //
1056 // Test without a trailing end-of-line marker 1056 // Test without a trailing end-of-line marker
1057 // 1057 //
1058 Token token = scan(source); 1058 Token token = _scan(source);
1059 JUnitTestCase.assertNotNull(token); 1059 JUnitTestCase.assertNotNull(token);
1060 JUnitTestCase.assertEquals(TokenType.EOF, token.type); 1060 JUnitTestCase.assertEquals(TokenType.EOF, token.type);
1061 Token comment = token.precedingComments; 1061 Token comment = token.precedingComments;
1062 JUnitTestCase.assertNotNull(comment); 1062 JUnitTestCase.assertNotNull(comment);
1063 JUnitTestCase.assertEquals(commentType, comment.type); 1063 JUnitTestCase.assertEquals(commentType, comment.type);
1064 JUnitTestCase.assertEquals(0, comment.offset); 1064 JUnitTestCase.assertEquals(0, comment.offset);
1065 JUnitTestCase.assertEquals(source.length, comment.length); 1065 JUnitTestCase.assertEquals(source.length, comment.length);
1066 JUnitTestCase.assertEquals(source, comment.lexeme); 1066 JUnitTestCase.assertEquals(source, comment.lexeme);
1067 // 1067 //
1068 // Test with a trailing end-of-line marker 1068 // Test with a trailing end-of-line marker
1069 // 1069 //
1070 token = scan("${source}\n"); 1070 token = _scan("${source}\n");
1071 JUnitTestCase.assertNotNull(token); 1071 JUnitTestCase.assertNotNull(token);
1072 JUnitTestCase.assertEquals(TokenType.EOF, token.type); 1072 JUnitTestCase.assertEquals(TokenType.EOF, token.type);
1073 comment = token.precedingComments; 1073 comment = token.precedingComments;
1074 JUnitTestCase.assertNotNull(comment); 1074 JUnitTestCase.assertNotNull(comment);
1075 JUnitTestCase.assertEquals(commentType, comment.type); 1075 JUnitTestCase.assertEquals(commentType, comment.type);
1076 JUnitTestCase.assertEquals(0, comment.offset); 1076 JUnitTestCase.assertEquals(0, comment.offset);
1077 JUnitTestCase.assertEquals(source.length, comment.length); 1077 JUnitTestCase.assertEquals(source.length, comment.length);
1078 JUnitTestCase.assertEquals(source, comment.lexeme); 1078 JUnitTestCase.assertEquals(source, comment.lexeme);
1079 } 1079 }
1080 1080
1081 /** 1081 /**
1082 * Assert that scanning the given source produces an error with the given code . 1082 * Assert that scanning the given source produces an error with the given code .
1083 * 1083 *
1084 * @param illegalCharacter 1084 * @param illegalCharacter
1085 * @param i 1085 * @param i
1086 * @param source the source to be scanned to produce the error 1086 * @param source the source to be scanned to produce the error
1087 */ 1087 */
1088 void assertError(ScannerErrorCode expectedError, int expectedOffset, String so urce) { 1088 void _assertError(ScannerErrorCode expectedError, int expectedOffset, String s ource) {
1089 GatheringErrorListener listener = new GatheringErrorListener(); 1089 GatheringErrorListener listener = new GatheringErrorListener();
1090 scanWithListener(source, listener); 1090 _scanWithListener(source, listener);
1091 listener.assertErrors([new AnalysisError.con2(null, expectedOffset, 1, expec tedError, [source.codeUnitAt(expectedOffset)])]); 1091 listener.assertErrors([new AnalysisError.con2(null, expectedOffset, 1, expec tedError, [source.codeUnitAt(expectedOffset)])]);
1092 } 1092 }
1093 1093
1094 /** 1094 /**
1095 * Assert that when scanned the given source contains a single keyword token w ith the same lexeme 1095 * Assert that when scanned the given source contains a single keyword token w ith the same lexeme
1096 * as the original source. 1096 * as the original source.
1097 * 1097 *
1098 * @param source the source to be scanned 1098 * @param source the source to be scanned
1099 */ 1099 */
1100 void assertKeywordToken(String source) { 1100 void _assertKeywordToken(String source) {
1101 Token token = scan(source); 1101 Token token = _scan(source);
1102 JUnitTestCase.assertNotNull(token); 1102 JUnitTestCase.assertNotNull(token);
1103 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); 1103 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type);
1104 JUnitTestCase.assertEquals(0, token.offset); 1104 JUnitTestCase.assertEquals(0, token.offset);
1105 JUnitTestCase.assertEquals(source.length, token.length); 1105 JUnitTestCase.assertEquals(source.length, token.length);
1106 JUnitTestCase.assertEquals(source, token.lexeme); 1106 JUnitTestCase.assertEquals(source, token.lexeme);
1107 Object value = token.value(); 1107 Object value = token.value();
1108 JUnitTestCase.assertTrue(value is Keyword); 1108 JUnitTestCase.assertTrue(value is Keyword);
1109 JUnitTestCase.assertEquals(source, (value as Keyword).syntax); 1109 JUnitTestCase.assertEquals(source, (value as Keyword).syntax);
1110 token = scan(" ${source} "); 1110 token = _scan(" ${source} ");
1111 JUnitTestCase.assertNotNull(token); 1111 JUnitTestCase.assertNotNull(token);
1112 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); 1112 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type);
1113 JUnitTestCase.assertEquals(1, token.offset); 1113 JUnitTestCase.assertEquals(1, token.offset);
1114 JUnitTestCase.assertEquals(source.length, token.length); 1114 JUnitTestCase.assertEquals(source.length, token.length);
1115 JUnitTestCase.assertEquals(source, token.lexeme); 1115 JUnitTestCase.assertEquals(source, token.lexeme);
1116 value = token.value(); 1116 value = token.value();
1117 JUnitTestCase.assertTrue(value is Keyword); 1117 JUnitTestCase.assertTrue(value is Keyword);
1118 JUnitTestCase.assertEquals(source, (value as Keyword).syntax); 1118 JUnitTestCase.assertEquals(source, (value as Keyword).syntax);
1119 JUnitTestCase.assertEquals(TokenType.EOF, token.next.type); 1119 JUnitTestCase.assertEquals(TokenType.EOF, token.next.type);
1120 } 1120 }
1121 1121
1122 void assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expected Locations) { 1122 void _assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expecte dLocations) {
1123 GatheringErrorListener listener = new GatheringErrorListener(); 1123 GatheringErrorListener listener = new GatheringErrorListener();
1124 scanWithListener(source, listener); 1124 _scanWithListener(source, listener);
1125 listener.assertNoErrors(); 1125 listener.assertNoErrors();
1126 LineInfo info = listener.getLineInfo(new TestSource()); 1126 LineInfo info = listener.getLineInfo(new TestSource());
1127 JUnitTestCase.assertNotNull(info); 1127 JUnitTestCase.assertNotNull(info);
1128 for (ScannerTest_ExpectedLocation expectedLocation in expectedLocations) { 1128 for (ScannerTest_ExpectedLocation expectedLocation in expectedLocations) {
1129 LineInfo_Location location = info.getLocation(expectedLocation._offset); 1129 LineInfo_Location location = info.getLocation(expectedLocation._offset);
1130 JUnitTestCase.assertEquals(expectedLocation._lineNumber, location.lineNumb er); 1130 JUnitTestCase.assertEquals(expectedLocation._lineNumber, location.lineNumb er);
1131 JUnitTestCase.assertEquals(expectedLocation._columnNumber, location.column Number); 1131 JUnitTestCase.assertEquals(expectedLocation._columnNumber, location.column Number);
1132 } 1132 }
1133 } 1133 }
1134 1134
1135 /** 1135 /**
1136 * Assert that the token scanned from the given source has the expected type. 1136 * Assert that the token scanned from the given source has the expected type.
1137 * 1137 *
1138 * @param expectedType the expected type of the token 1138 * @param expectedType the expected type of the token
1139 * @param source the source to be scanned to produce the actual token 1139 * @param source the source to be scanned to produce the actual token
1140 */ 1140 */
1141 Token assertToken(TokenType expectedType, String source) { 1141 Token _assertToken(TokenType expectedType, String source) {
1142 Token originalToken = scan(source); 1142 Token originalToken = _scan(source);
1143 JUnitTestCase.assertNotNull(originalToken); 1143 JUnitTestCase.assertNotNull(originalToken);
1144 JUnitTestCase.assertEquals(expectedType, originalToken.type); 1144 JUnitTestCase.assertEquals(expectedType, originalToken.type);
1145 JUnitTestCase.assertEquals(0, originalToken.offset); 1145 JUnitTestCase.assertEquals(0, originalToken.offset);
1146 JUnitTestCase.assertEquals(source.length, originalToken.length); 1146 JUnitTestCase.assertEquals(source.length, originalToken.length);
1147 JUnitTestCase.assertEquals(source, originalToken.lexeme); 1147 JUnitTestCase.assertEquals(source, originalToken.lexeme);
1148 if (identical(expectedType, TokenType.SCRIPT_TAG)) { 1148 if (identical(expectedType, TokenType.SCRIPT_TAG)) {
1149 // Adding space before the script tag is not allowed, and adding text at t he end changes nothing. 1149 // Adding space before the script tag is not allowed, and adding text at t he end changes nothing.
1150 return originalToken; 1150 return originalToken;
1151 } else if (identical(expectedType, TokenType.SINGLE_LINE_COMMENT)) { 1151 } else if (identical(expectedType, TokenType.SINGLE_LINE_COMMENT)) {
1152 // Adding space to an end-of-line comment changes the comment. 1152 // Adding space to an end-of-line comment changes the comment.
1153 Token tokenWithSpaces = scan(" ${source}"); 1153 Token tokenWithSpaces = _scan(" ${source}");
1154 JUnitTestCase.assertNotNull(tokenWithSpaces); 1154 JUnitTestCase.assertNotNull(tokenWithSpaces);
1155 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type); 1155 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type);
1156 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset); 1156 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset);
1157 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length); 1157 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length);
1158 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme); 1158 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme);
1159 return originalToken; 1159 return originalToken;
1160 } else if (identical(expectedType, TokenType.INT) || identical(expectedType, TokenType.DOUBLE)) { 1160 } else if (identical(expectedType, TokenType.INT) || identical(expectedType, TokenType.DOUBLE)) {
1161 Token tokenWithLowerD = scan("${source}d"); 1161 Token tokenWithLowerD = _scan("${source}d");
1162 JUnitTestCase.assertNotNull(tokenWithLowerD); 1162 JUnitTestCase.assertNotNull(tokenWithLowerD);
1163 JUnitTestCase.assertEquals(expectedType, tokenWithLowerD.type); 1163 JUnitTestCase.assertEquals(expectedType, tokenWithLowerD.type);
1164 JUnitTestCase.assertEquals(0, tokenWithLowerD.offset); 1164 JUnitTestCase.assertEquals(0, tokenWithLowerD.offset);
1165 JUnitTestCase.assertEquals(source.length, tokenWithLowerD.length); 1165 JUnitTestCase.assertEquals(source.length, tokenWithLowerD.length);
1166 JUnitTestCase.assertEquals(source, tokenWithLowerD.lexeme); 1166 JUnitTestCase.assertEquals(source, tokenWithLowerD.lexeme);
1167 Token tokenWithUpperD = scan("${source}D"); 1167 Token tokenWithUpperD = _scan("${source}D");
1168 JUnitTestCase.assertNotNull(tokenWithUpperD); 1168 JUnitTestCase.assertNotNull(tokenWithUpperD);
1169 JUnitTestCase.assertEquals(expectedType, tokenWithUpperD.type); 1169 JUnitTestCase.assertEquals(expectedType, tokenWithUpperD.type);
1170 JUnitTestCase.assertEquals(0, tokenWithUpperD.offset); 1170 JUnitTestCase.assertEquals(0, tokenWithUpperD.offset);
1171 JUnitTestCase.assertEquals(source.length, tokenWithUpperD.length); 1171 JUnitTestCase.assertEquals(source.length, tokenWithUpperD.length);
1172 JUnitTestCase.assertEquals(source, tokenWithUpperD.lexeme); 1172 JUnitTestCase.assertEquals(source, tokenWithUpperD.lexeme);
1173 } 1173 }
1174 Token tokenWithSpaces = scan(" ${source} "); 1174 Token tokenWithSpaces = _scan(" ${source} ");
1175 JUnitTestCase.assertNotNull(tokenWithSpaces); 1175 JUnitTestCase.assertNotNull(tokenWithSpaces);
1176 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type); 1176 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type);
1177 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset); 1177 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset);
1178 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length); 1178 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length);
1179 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme); 1179 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme);
1180 JUnitTestCase.assertEquals(TokenType.EOF, originalToken.next.type); 1180 JUnitTestCase.assertEquals(TokenType.EOF, originalToken.next.type);
1181 return originalToken; 1181 return originalToken;
1182 } 1182 }
1183 1183
1184 /** 1184 /**
1185 * Assert that when scanned the given source contains a sequence of tokens ide ntical to the given 1185 * Assert that when scanned the given source contains a sequence of tokens ide ntical to the given
1186 * tokens. 1186 * tokens.
1187 * 1187 *
1188 * @param source the source to be scanned 1188 * @param source the source to be scanned
1189 * @param expectedTokens the tokens that are expected to be in the source 1189 * @param expectedTokens the tokens that are expected to be in the source
1190 */ 1190 */
1191 void assertTokens(String source, List<Token> expectedTokens) { 1191 void _assertTokens(String source, List<Token> expectedTokens) {
1192 Token token = scan(source); 1192 Token token = _scan(source);
1193 JUnitTestCase.assertNotNull(token); 1193 JUnitTestCase.assertNotNull(token);
1194 for (int i = 0; i < expectedTokens.length; i++) { 1194 for (int i = 0; i < expectedTokens.length; i++) {
1195 Token expectedToken = expectedTokens[i]; 1195 Token expectedToken = expectedTokens[i];
1196 JUnitTestCase.assertEqualsMsg("Wrong type for token ${i}", expectedToken.t ype, token.type); 1196 JUnitTestCase.assertEqualsMsg("Wrong type for token ${i}", expectedToken.t ype, token.type);
1197 JUnitTestCase.assertEqualsMsg("Wrong offset for token ${i}", expectedToken .offset, token.offset); 1197 JUnitTestCase.assertEqualsMsg("Wrong offset for token ${i}", expectedToken .offset, token.offset);
1198 JUnitTestCase.assertEqualsMsg("Wrong length for token ${i}", expectedToken .length, token.length); 1198 JUnitTestCase.assertEqualsMsg("Wrong length for token ${i}", expectedToken .length, token.length);
1199 JUnitTestCase.assertEqualsMsg("Wrong lexeme for token ${i}", expectedToken .lexeme, token.lexeme); 1199 JUnitTestCase.assertEqualsMsg("Wrong lexeme for token ${i}", expectedToken .lexeme, token.lexeme);
1200 token = token.next; 1200 token = token.next;
1201 JUnitTestCase.assertNotNull(token); 1201 JUnitTestCase.assertNotNull(token);
1202 } 1202 }
1203 JUnitTestCase.assertEquals(TokenType.EOF, token.type); 1203 JUnitTestCase.assertEquals(TokenType.EOF, token.type);
1204 } 1204 }
1205 1205
1206 Token scan(String source) { 1206 Token _scan(String source) {
1207 GatheringErrorListener listener = new GatheringErrorListener(); 1207 GatheringErrorListener listener = new GatheringErrorListener();
1208 Token token = scanWithListener(source, listener); 1208 Token token = _scanWithListener(source, listener);
1209 listener.assertNoErrors(); 1209 listener.assertNoErrors();
1210 return token; 1210 return token;
1211 } 1211 }
1212 1212
1213 Token scanWithListener(String source, GatheringErrorListener listener) { 1213 Token _scanWithListener(String source, GatheringErrorListener listener) {
1214 Scanner scanner = new Scanner(null, new CharSequenceReader(source), listener ); 1214 Scanner scanner = new Scanner(null, new CharSequenceReader(source), listener );
1215 Token result = scanner.tokenize(); 1215 Token result = scanner.tokenize();
1216 listener.setLineInfo(new TestSource(), scanner.lineStarts); 1216 listener.setLineInfo(new TestSource(), scanner.lineStarts);
1217 return result; 1217 return result;
1218 } 1218 }
1219 1219
1220 static dartSuite() { 1220 static dartSuite() {
1221 _ut.group('ScannerTest', () { 1221 _ut.group('ScannerTest', () {
1222 _ut.test('test_ampersand', () { 1222 _ut.test('test_ampersand', () {
1223 final __test = new ScannerTest(); 1223 final __test = new ScannerTest();
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1908 1908
1909 /** 1909 /**
1910 * The first token from the token stream resulting from performing an incremen tal scan, or 1910 * The first token from the token stream resulting from performing an incremen tal scan, or
1911 * `null` if [scan] has not been invoked. 1911 * `null` if [scan] has not been invoked.
1912 */ 1912 */
1913 Token _incrementalTokens; 1913 Token _incrementalTokens;
1914 1914
1915 void test_delete_identifier_beginning() { 1915 void test_delete_identifier_beginning() {
1916 // "abs + b;" 1916 // "abs + b;"
1917 // "s + b;") 1917 // "s + b;")
1918 scan("", "ab", "", "s + b;"); 1918 _scan("", "ab", "", "s + b;");
1919 assertTokens(-1, 1, ["s", "+", "b", ";"]); 1919 _assertTokens(-1, 1, ["s", "+", "b", ";"]);
1920 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1920 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1921 } 1921 }
1922 1922
1923 void test_delete_identifier_end() { 1923 void test_delete_identifier_end() {
1924 // "abs + b;" 1924 // "abs + b;"
1925 // "a + b;") 1925 // "a + b;")
1926 scan("a", "bs", "", " + b;"); 1926 _scan("a", "bs", "", " + b;");
1927 assertTokens(-1, 1, ["a", "+", "b", ";"]); 1927 _assertTokens(-1, 1, ["a", "+", "b", ";"]);
1928 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1928 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1929 } 1929 }
1930 1930
1931 void test_delete_identifier_middle() { 1931 void test_delete_identifier_middle() {
1932 // "abs + b;" 1932 // "abs + b;"
1933 // "as + b;") 1933 // "as + b;")
1934 scan("a", "b", "", "s + b;"); 1934 _scan("a", "b", "", "s + b;");
1935 assertTokens(-1, 1, ["as", "+", "b", ";"]); 1935 _assertTokens(-1, 1, ["as", "+", "b", ";"]);
1936 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1936 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1937 } 1937 }
1938 1938
1939 void test_delete_mergeTokens() { 1939 void test_delete_mergeTokens() {
1940 // "a + b + c;" 1940 // "a + b + c;"
1941 // "ac;") 1941 // "ac;")
1942 scan("a", " + b + ", "", "c;"); 1942 _scan("a", " + b + ", "", "c;");
1943 assertTokens(-1, 1, ["ac", ";"]); 1943 _assertTokens(-1, 1, ["ac", ";"]);
1944 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1944 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1945 } 1945 }
1946 1946
1947 void test_insert_afterIdentifier1() { 1947 void test_insert_afterIdentifier1() {
1948 // "a + b;" 1948 // "a + b;"
1949 // "abs + b;" 1949 // "abs + b;"
1950 scan("a", "", "bs", " + b;"); 1950 _scan("a", "", "bs", " + b;");
1951 assertTokens(-1, 1, ["abs", "+", "b", ";"]); 1951 _assertTokens(-1, 1, ["abs", "+", "b", ";"]);
1952 assertReplaced(1, "+"); 1952 _assertReplaced(1, "+");
1953 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1953 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1954 } 1954 }
1955 1955
1956 void test_insert_afterIdentifier2() { 1956 void test_insert_afterIdentifier2() {
1957 // "a + b;" 1957 // "a + b;"
1958 // "a + by;" 1958 // "a + by;"
1959 scan("a + b", "", "y", ";"); 1959 _scan("a + b", "", "y", ";");
1960 assertTokens(1, 3, ["a", "+", "by", ";"]); 1960 _assertTokens(1, 3, ["a", "+", "by", ";"]);
1961 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1961 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1962 } 1962 }
1963 1963
1964 void test_insert_beforeIdentifier() { 1964 void test_insert_beforeIdentifier() {
1965 // "a + b;" 1965 // "a + b;"
1966 // "a + xb;") 1966 // "a + xb;")
1967 scan("a + ", "", "x", "b;"); 1967 _scan("a + ", "", "x", "b;");
1968 assertTokens(1, 3, ["a", "+", "xb", ";"]); 1968 _assertTokens(1, 3, ["a", "+", "xb", ";"]);
1969 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1969 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1970 } 1970 }
1971 1971
1972 void test_insert_beforeIdentifier_firstToken() { 1972 void test_insert_beforeIdentifier_firstToken() {
1973 // "a + b;" 1973 // "a + b;"
1974 // "xa + b;" 1974 // "xa + b;"
1975 scan("", "", "x", "a + b;"); 1975 _scan("", "", "x", "a + b;");
1976 assertTokens(-1, 1, ["xa", "+", "b", ";"]); 1976 _assertTokens(-1, 1, ["xa", "+", "b", ";"]);
1977 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1977 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1978 } 1978 }
1979 1979
1980 void test_insert_convertOneFunctionToTwo() { 1980 void test_insert_convertOneFunctionToTwo() {
1981 // "f() {}" 1981 // "f() {}"
1982 // "f() => 0; g() {}" 1982 // "f() => 0; g() {}"
1983 scan("f()", "", " => 0; g()", " {}"); 1983 _scan("f()", "", " => 0; g()", " {}");
1984 assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]) ; 1984 _assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"] );
1985 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1985 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1986 } 1986 }
1987 1987
1988 void test_insert_end() { 1988 void test_insert_end() {
1989 // "class A {}" 1989 // "class A {}"
1990 // "class A {} class B {}" 1990 // "class A {} class B {}"
1991 scan("class A {}", "", " class B {}", ""); 1991 _scan("class A {}", "", " class B {}", "");
1992 assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]); 1992 _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]);
1993 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 1993 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
1994 } 1994 }
1995 1995
1996 void test_insert_insideIdentifier() { 1996 void test_insert_insideIdentifier() {
1997 // "cob;" 1997 // "cob;"
1998 // "cow.b;" 1998 // "cow.b;"
1999 scan("co", "", "w.", "b;"); 1999 _scan("co", "", "w.", "b;");
2000 assertTokens(-1, 3, ["cow", ".", "b", ";"]); 2000 _assertTokens(-1, 3, ["cow", ".", "b", ";"]);
2001 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2001 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2002 } 2002 }
2003 2003
2004 void test_insert_newIdentifier1() { 2004 void test_insert_newIdentifier1() {
2005 // "a; c;" 2005 // "a; c;"
2006 // "a; b c;" 2006 // "a; b c;"
2007 scan("a; ", "", "b", " c;"); 2007 _scan("a; ", "", "b", " c;");
2008 assertTokens(1, 3, ["a", ";", "b", "c", ";"]); 2008 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
2009 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2009 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2010 } 2010 }
2011 2011
2012 void test_insert_newIdentifier2() { 2012 void test_insert_newIdentifier2() {
2013 // "a; c;" 2013 // "a; c;"
2014 // "a;b c;" 2014 // "a;b c;"
2015 scan("a;", "", "b", " c;"); 2015 _scan("a;", "", "b", " c;");
2016 assertTokens(1, 3, ["a", ";", "b", "c", ";"]); 2016 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
2017 assertReplaced(1, ";"); 2017 _assertReplaced(1, ";");
2018 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2018 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2019 } 2019 }
2020 2020
2021 void test_insert_period() { 2021 void test_insert_period() {
2022 // "a + b;" 2022 // "a + b;"
2023 // "a + b.;" 2023 // "a + b.;"
2024 scan("a + b", "", ".", ";"); 2024 _scan("a + b", "", ".", ";");
2025 assertTokens(2, 4, ["a", "+", "b", ".", ";"]); 2025 _assertTokens(2, 4, ["a", "+", "b", ".", ";"]);
2026 } 2026 }
2027 2027
2028 void test_insert_period_betweenIdentifiers1() { 2028 void test_insert_period_betweenIdentifiers1() {
2029 // "a b;" 2029 // "a b;"
2030 // "a. b;" 2030 // "a. b;"
2031 scan("a", "", ".", " b;"); 2031 _scan("a", "", ".", " b;");
2032 assertTokens(0, 2, ["a", ".", "b", ";"]); 2032 _assertTokens(0, 2, ["a", ".", "b", ";"]);
2033 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2033 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2034 } 2034 }
2035 2035
2036 void test_insert_period_betweenIdentifiers2() { 2036 void test_insert_period_betweenIdentifiers2() {
2037 // "a b;" 2037 // "a b;"
2038 // "a .b;" 2038 // "a .b;"
2039 scan("a ", "", ".", "b;"); 2039 _scan("a ", "", ".", "b;");
2040 assertTokens(0, 2, ["a", ".", "b", ";"]); 2040 _assertTokens(0, 2, ["a", ".", "b", ";"]);
2041 } 2041 }
2042 2042
2043 void test_insert_period_betweenIdentifiers3() { 2043 void test_insert_period_betweenIdentifiers3() {
2044 // "a b;" 2044 // "a b;"
2045 // "a . b;" 2045 // "a . b;"
2046 scan("a ", "", ".", " b;"); 2046 _scan("a ", "", ".", " b;");
2047 assertTokens(0, 2, ["a", ".", "b", ";"]); 2047 _assertTokens(0, 2, ["a", ".", "b", ";"]);
2048 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2048 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2049 } 2049 }
2050 2050
2051 void test_insert_period_insideExistingIdentifier() { 2051 void test_insert_period_insideExistingIdentifier() {
2052 // "ab;" 2052 // "ab;"
2053 // "a.b;" 2053 // "a.b;"
2054 scan("a", "", ".", "b;"); 2054 _scan("a", "", ".", "b;");
2055 assertTokens(-1, 3, ["a", ".", "b", ";"]); 2055 _assertTokens(-1, 3, ["a", ".", "b", ";"]);
2056 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2056 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2057 } 2057 }
2058 2058
2059 void test_insert_periodAndIdentifier() { 2059 void test_insert_periodAndIdentifier() {
2060 // "a + b;" 2060 // "a + b;"
2061 // "a + b.x;" 2061 // "a + b.x;"
2062 scan("a + b", "", ".x", ";"); 2062 _scan("a + b", "", ".x", ";");
2063 assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]); 2063 _assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]);
2064 } 2064 }
2065 2065
2066 void test_insert_whitespace_beginning_beforeToken() { 2066 void test_insert_whitespace_beginning_beforeToken() {
2067 // "a + b;" 2067 // "a + b;"
2068 // " a + b;" 2068 // " a + b;"
2069 scan("", "", " ", "a + b;"); 2069 _scan("", "", " ", "a + b;");
2070 assertTokens(0, 1, ["a", "+", "b", ";"]); 2070 _assertTokens(0, 1, ["a", "+", "b", ";"]);
2071 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2071 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2072 } 2072 }
2073 2073
2074 void test_insert_whitespace_betweenTokens() { 2074 void test_insert_whitespace_betweenTokens() {
2075 // "a + b;" 2075 // "a + b;"
2076 // "a + b;" 2076 // "a + b;"
2077 scan("a ", "", " ", "+ b;"); 2077 _scan("a ", "", " ", "+ b;");
2078 assertTokens(1, 2, ["a", "+", "b", ";"]); 2078 _assertTokens(1, 2, ["a", "+", "b", ";"]);
2079 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2079 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2080 } 2080 }
2081 2081
2082 void test_insert_whitespace_end_afterToken() { 2082 void test_insert_whitespace_end_afterToken() {
2083 // "a + b;" 2083 // "a + b;"
2084 // "a + b; " 2084 // "a + b; "
2085 scan("a + b;", "", " ", ""); 2085 _scan("a + b;", "", " ", "");
2086 assertTokens(3, 4, ["a", "+", "b", ";"]); 2086 _assertTokens(3, 4, ["a", "+", "b", ";"]);
2087 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2087 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2088 } 2088 }
2089 2089
2090 void test_insert_whitespace_end_afterWhitespace() { 2090 void test_insert_whitespace_end_afterWhitespace() {
2091 // "a + b; " 2091 // "a + b; "
2092 // "a + b; " 2092 // "a + b; "
2093 scan("a + b; ", "", " ", ""); 2093 _scan("a + b; ", "", " ", "");
2094 assertTokens(3, 4, ["a", "+", "b", ";"]); 2094 _assertTokens(3, 4, ["a", "+", "b", ";"]);
2095 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2095 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2096 } 2096 }
2097 2097
2098 void test_insert_whitespace_withMultipleComments() { 2098 void test_insert_whitespace_withMultipleComments() {
2099 // "//comment", "//comment2", "a + b;" 2099 // "//comment", "//comment2", "a + b;"
2100 // "//comment", "//comment2", "a + b;" 2100 // "//comment", "//comment2", "a + b;"
2101 scan(EngineTestCase.createSource(["//comment", "//comment2", "a"]), "", " ", " + b;"); 2101 _scan(EngineTestCase.createSource(["//comment", "//comment2", "a"]), "", " " , " + b;");
2102 assertTokens(1, 2, ["a", "+", "b", ";"]); 2102 _assertTokens(1, 2, ["a", "+", "b", ";"]);
2103 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2103 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2104 } 2104 }
2105 2105
2106 void test_replace_identifier_beginning() { 2106 void test_replace_identifier_beginning() {
2107 // "bell + b;" 2107 // "bell + b;"
2108 // "fell + b;") 2108 // "fell + b;")
2109 scan("", "b", "f", "ell + b;"); 2109 _scan("", "b", "f", "ell + b;");
2110 assertTokens(-1, 1, ["fell", "+", "b", ";"]); 2110 _assertTokens(-1, 1, ["fell", "+", "b", ";"]);
2111 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2111 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2112 } 2112 }
2113 2113
2114 void test_replace_identifier_end() { 2114 void test_replace_identifier_end() {
2115 // "bell + b;" 2115 // "bell + b;"
2116 // "belt + b;") 2116 // "belt + b;")
2117 scan("bel", "l", "t", " + b;"); 2117 _scan("bel", "l", "t", " + b;");
2118 assertTokens(-1, 1, ["belt", "+", "b", ";"]); 2118 _assertTokens(-1, 1, ["belt", "+", "b", ";"]);
2119 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2119 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2120 } 2120 }
2121 2121
2122 void test_replace_identifier_middle() { 2122 void test_replace_identifier_middle() {
2123 // "first + b;" 2123 // "first + b;"
2124 // "frost + b;") 2124 // "frost + b;")
2125 scan("f", "ir", "ro", "st + b;"); 2125 _scan("f", "ir", "ro", "st + b;");
2126 assertTokens(-1, 1, ["frost", "+", "b", ";"]); 2126 _assertTokens(-1, 1, ["frost", "+", "b", ";"]);
2127 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2127 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2128 } 2128 }
2129 2129
2130 void test_replace_multiple_partialFirstAndLast() { 2130 void test_replace_multiple_partialFirstAndLast() {
2131 // "aa + bb;" 2131 // "aa + bb;"
2132 // "ab * ab;") 2132 // "ab * ab;")
2133 scan("a", "a + b", "b * a", "b;"); 2133 _scan("a", "a + b", "b * a", "b;");
2134 assertTokens(-1, 3, ["ab", "*", "ab", ";"]); 2134 _assertTokens(-1, 3, ["ab", "*", "ab", ";"]);
2135 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2135 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2136 } 2136 }
2137 2137
2138 void test_replace_operator_oneForMany() { 2138 void test_replace_operator_oneForMany() {
2139 // "a + b;" 2139 // "a + b;"
2140 // "a * c - b;") 2140 // "a * c - b;")
2141 scan("a ", "+", "* c -", " b;"); 2141 _scan("a ", "+", "* c -", " b;");
2142 assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]); 2142 _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]);
2143 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2143 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2144 } 2144 }
2145 2145
2146 void test_replace_operator_oneForOne() { 2146 void test_replace_operator_oneForOne() {
2147 // "a + b;" 2147 // "a + b;"
2148 // "a * b;") 2148 // "a * b;")
2149 scan("a ", "+", "*", " b;"); 2149 _scan("a ", "+", "*", " b;");
2150 assertTokens(0, 2, ["a", "*", "b", ";"]); 2150 _assertTokens(0, 2, ["a", "*", "b", ";"]);
2151 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); 2151 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
2152 } 2152 }
2153 2153
2154 void test_tokenMap() { 2154 void test_tokenMap() {
2155 // "main() {a + b;}" 2155 // "main() {a + b;}"
2156 // "main() { a + b;}" 2156 // "main() { a + b;}"
2157 scan("main() {", "", " ", "a + b;}"); 2157 _scan("main() {", "", " ", "a + b;}");
2158 TokenMap tokenMap = _incrementalScanner.tokenMap; 2158 TokenMap tokenMap = _incrementalScanner.tokenMap;
2159 Token oldToken = _originalTokens; 2159 Token oldToken = _originalTokens;
2160 while (oldToken.type != TokenType.EOF) { 2160 while (oldToken.type != TokenType.EOF) {
2161 Token newToken = tokenMap.get(oldToken); 2161 Token newToken = tokenMap.get(oldToken);
2162 JUnitTestCase.assertNotSame(oldToken, newToken); 2162 JUnitTestCase.assertNotSame(oldToken, newToken);
2163 JUnitTestCase.assertSame(oldToken.type, newToken.type); 2163 JUnitTestCase.assertSame(oldToken.type, newToken.type);
2164 JUnitTestCase.assertEquals(oldToken.lexeme, newToken.lexeme); 2164 JUnitTestCase.assertEquals(oldToken.lexeme, newToken.lexeme);
2165 oldToken = oldToken.next; 2165 oldToken = oldToken.next;
2166 } 2166 }
2167 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); 2167 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
2168 } 2168 }
2169 2169
2170 /** 2170 /**
2171 * Assert that the token at the given offset was replaced with a new token hav ing the given 2171 * Assert that the token at the given offset was replaced with a new token hav ing the given
2172 * lexeme. 2172 * lexeme.
2173 * 2173 *
2174 * @param tokenOffset the offset of the token being tested 2174 * @param tokenOffset the offset of the token being tested
2175 * @param lexeme the expected lexeme of the new token 2175 * @param lexeme the expected lexeme of the new token
2176 */ 2176 */
2177 void assertReplaced(int tokenOffset, String lexeme) { 2177 void _assertReplaced(int tokenOffset, String lexeme) {
2178 Token oldToken = _originalTokens; 2178 Token oldToken = _originalTokens;
2179 for (int i = 0; i < tokenOffset; i++) { 2179 for (int i = 0; i < tokenOffset; i++) {
2180 oldToken = oldToken.next; 2180 oldToken = oldToken.next;
2181 } 2181 }
2182 JUnitTestCase.assertEquals(lexeme, oldToken.lexeme); 2182 JUnitTestCase.assertEquals(lexeme, oldToken.lexeme);
2183 Token newToken = _incrementalScanner.tokenMap.get(oldToken); 2183 Token newToken = _incrementalScanner.tokenMap.get(oldToken);
2184 JUnitTestCase.assertNotNull(newToken); 2184 JUnitTestCase.assertNotNull(newToken);
2185 JUnitTestCase.assertEquals(lexeme, newToken.lexeme); 2185 JUnitTestCase.assertEquals(lexeme, newToken.lexeme);
2186 JUnitTestCase.assertNotSame(oldToken, newToken); 2186 JUnitTestCase.assertNotSame(oldToken, newToken);
2187 } 2187 }
2188 2188
2189 /** 2189 /**
2190 * Assert that the result of the incremental scan matches the given list of le xemes and that the 2190 * Assert that the result of the incremental scan matches the given list of le xemes and that the
2191 * left and right tokens correspond to the tokens at the given indices. 2191 * left and right tokens correspond to the tokens at the given indices.
2192 * 2192 *
2193 * @param leftIndex the expected index of the left token 2193 * @param leftIndex the expected index of the left token
2194 * @param rightIndex the expected index of the right token 2194 * @param rightIndex the expected index of the right token
2195 * @param lexemes the expected lexemes of the resulting tokens 2195 * @param lexemes the expected lexemes of the resulting tokens
2196 */ 2196 */
2197 void assertTokens(int leftIndex, int rightIndex, List<String> lexemes) { 2197 void _assertTokens(int leftIndex, int rightIndex, List<String> lexemes) {
2198 int count = lexemes.length; 2198 int count = lexemes.length;
2199 JUnitTestCase.assertTrueMsg("Invalid left index", leftIndex >= -1 && leftInd ex < count); 2199 JUnitTestCase.assertTrueMsg("Invalid left index", leftIndex >= -1 && leftInd ex < count);
2200 JUnitTestCase.assertTrueMsg("Invalid right index", rightIndex >= 0 && rightI ndex <= count); 2200 JUnitTestCase.assertTrueMsg("Invalid right index", rightIndex >= 0 && rightI ndex <= count);
2201 Token leftToken = null; 2201 Token leftToken = null;
2202 Token rightToken = null; 2202 Token rightToken = null;
2203 Token token = _incrementalTokens; 2203 Token token = _incrementalTokens;
2204 if (leftIndex < 0) { 2204 if (leftIndex < 0) {
2205 leftToken = token.previous; 2205 leftToken = token.previous;
2206 } 2206 }
2207 for (int i = 0; i < count; i++) { 2207 for (int i = 0; i < count; i++) {
(...skipping 23 matching lines...) Expand all
2231 /** 2231 /**
2232 * Given a description of the original and modified contents, perform an incre mental scan of the 2232 * Given a description of the original and modified contents, perform an incre mental scan of the
2233 * two pieces of text. Verify that the incremental scan produced the same toke ns as those that 2233 * two pieces of text. Verify that the incremental scan produced the same toke ns as those that
2234 * would be produced by a full scan of the new contents. 2234 * would be produced by a full scan of the new contents.
2235 * 2235 *
2236 * @param prefix the unchanged text before the edit region 2236 * @param prefix the unchanged text before the edit region
2237 * @param removed the text that was removed from the original contents 2237 * @param removed the text that was removed from the original contents
2238 * @param added the text that was added to the modified contents 2238 * @param added the text that was added to the modified contents
2239 * @param suffix the unchanged text after the edit region 2239 * @param suffix the unchanged text after the edit region
2240 */ 2240 */
2241 void scan(String prefix, String removed, String added, String suffix) { 2241 void _scan(String prefix, String removed, String added, String suffix) {
2242 // 2242 //
2243 // Compute the information needed to perform the test. 2243 // Compute the information needed to perform the test.
2244 // 2244 //
2245 String originalContents = "${prefix}${removed}${suffix}"; 2245 String originalContents = "${prefix}${removed}${suffix}";
2246 String modifiedContents = "${prefix}${added}${suffix}"; 2246 String modifiedContents = "${prefix}${added}${suffix}";
2247 int replaceStart = prefix.length; 2247 int replaceStart = prefix.length;
2248 Source source = new TestSource(); 2248 Source source = new TestSource();
2249 // 2249 //
2250 // Scan the original contents. 2250 // Scan the original contents.
2251 // 2251 //
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2414 } 2414 }
2415 } 2415 }
2416 2416
2417 main() { 2417 main() {
2418 CharSequenceReaderTest.dartSuite(); 2418 CharSequenceReaderTest.dartSuite();
2419 IncrementalScannerTest.dartSuite(); 2419 IncrementalScannerTest.dartSuite();
2420 KeywordStateTest.dartSuite(); 2420 KeywordStateTest.dartSuite();
2421 ScannerTest.dartSuite(); 2421 ScannerTest.dartSuite();
2422 TokenTypeTest.dartSuite(); 2422 TokenTypeTest.dartSuite();
2423 } 2423 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/resolver_test.dart ('k') | pkg/analyzer/test/generated/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698