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

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

Issue 12502002: Update analyzer-experimental. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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 // This code was auto-generated, is not intended to be edited, and is subject to 1 // This code was auto-generated, is not intended to be edited, and is subject to
2 // significant change. Please see the README file for more information. 2 // significant change. Please see the README file for more information.
3 3
4 library engine.scanner_test; 4 library engine.scanner_test;
5 5
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'package:analyzer-experimental/src/generated/java_core.dart'; 7 import 'package:analyzer-experimental/src/generated/java_core.dart';
8 import 'package:analyzer-experimental/src/generated/java_engine.dart'; 8 import 'package:analyzer-experimental/src/generated/java_engine.dart';
9 import 'package:analyzer-experimental/src/generated/java_junit.dart'; 9 import 'package:analyzer-experimental/src/generated/java_junit.dart';
10 import 'package:analyzer-experimental/src/generated/source.dart'; 10 import 'package:analyzer-experimental/src/generated/source.dart';
11 import 'package:analyzer-experimental/src/generated/error.dart'; 11 import 'package:analyzer-experimental/src/generated/error.dart';
12 import 'package:analyzer-experimental/src/generated/scanner.dart'; 12 import 'package:analyzer-experimental/src/generated/scanner.dart';
13 import 'package:unittest/unittest.dart' as _ut; 13 import 'package:unittest/unittest.dart' as _ut;
14 import 'test_support.dart'; 14 import 'test_support.dart';
15 15
16 class KeywordStateTest extends JUnitTestCase {
17 void test_KeywordState() {
18 List<Keyword> keywords = Keyword.values;
19 int keywordCount = keywords.length;
20 List<String> textToTest = new List<String>(keywordCount * 3);
21 for (int i = 0; i < keywordCount; i++) {
22 String syntax3 = keywords[i].syntax;
23 textToTest[i] = syntax3;
24 textToTest[i + keywordCount] = "${syntax3}x";
25 textToTest[i + keywordCount * 2] = syntax3.substring(0, syntax3.length - 1 );
26 }
27 KeywordState firstState = KeywordState.KEYWORD_STATE;
28 for (int i = 0; i < textToTest.length; i++) {
29 String text = textToTest[i];
30 int index = 0;
31 int length10 = text.length;
32 KeywordState state = firstState;
33 while (index < length10 && state != null) {
34 state = state.next(text.codeUnitAt(index));
35 index++;
36 }
37 if (i < keywordCount) {
38 JUnitTestCase.assertNotNull(state);
39 JUnitTestCase.assertNotNull(state.keyword());
40 JUnitTestCase.assertEquals(keywords[i], state.keyword());
41 } else if (i < keywordCount * 2) {
42 JUnitTestCase.assertNull(state);
43 } else {
44 JUnitTestCase.assertNotNull(state);
45 }
46 }
47 }
48 static dartSuite() {
49 _ut.group('KeywordStateTest', () {
50 _ut.test('test_KeywordState', () {
51 final __test = new KeywordStateTest();
52 runJUnitTest(__test, __test.test_KeywordState);
53 });
54 });
55 }
56 }
57 class TokenTypeTest extends EngineTestCase {
58 void test_isOperator() {
59 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator());
60 JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator());
61 JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator());
62 JUnitTestCase.assertTrue(TokenType.BANG.isOperator());
63 JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator());
64 JUnitTestCase.assertTrue(TokenType.BAR.isOperator());
65 JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator());
66 JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator());
67 JUnitTestCase.assertTrue(TokenType.CARET.isOperator());
68 JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator());
69 JUnitTestCase.assertTrue(TokenType.EQ.isOperator());
70 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator());
71 JUnitTestCase.assertTrue(TokenType.GT.isOperator());
72 JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator());
73 JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator());
74 JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator());
75 JUnitTestCase.assertTrue(TokenType.INDEX.isOperator());
76 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator());
77 JUnitTestCase.assertTrue(TokenType.IS.isOperator());
78 JUnitTestCase.assertTrue(TokenType.LT.isOperator());
79 JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator());
80 JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator());
81 JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator());
82 JUnitTestCase.assertTrue(TokenType.MINUS.isOperator());
83 JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator());
84 JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator());
85 JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator());
86 JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator());
87 JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator());
88 JUnitTestCase.assertTrue(TokenType.PLUS.isOperator());
89 JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator());
90 JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator());
91 JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator());
92 JUnitTestCase.assertTrue(TokenType.SLASH.isOperator());
93 JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator());
94 JUnitTestCase.assertTrue(TokenType.STAR.isOperator());
95 JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator());
96 JUnitTestCase.assertTrue(TokenType.TILDE.isOperator());
97 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator());
98 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator());
99 }
100 void test_isUserDefinableOperator() {
101 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator());
102 JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator());
103 JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator());
104 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator());
105 JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator());
106 JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator());
107 JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator());
108 JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator());
109 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator());
110 JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator());
111 JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator());
112 JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator());
113 JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator());
114 JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator());
115 JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator());
116 JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator());
117 JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator());
118 JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator());
119 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator());
120 }
121 static dartSuite() {
122 _ut.group('TokenTypeTest', () {
123 _ut.test('test_isOperator', () {
124 final __test = new TokenTypeTest();
125 runJUnitTest(__test, __test.test_isOperator);
126 });
127 _ut.test('test_isUserDefinableOperator', () {
128 final __test = new TokenTypeTest();
129 runJUnitTest(__test, __test.test_isUserDefinableOperator);
130 });
131 });
132 }
133 }
134 /**
135 * The class {@code TokenFactory} defines utility methods that can be used to cr eate tokens.
136 */
137 class TokenFactory {
138 static Token token(Keyword keyword) => new KeywordToken(keyword, 0);
139 static Token token2(String lexeme) => new StringToken(TokenType.STRING, lexeme , 0);
140 static Token token3(TokenType type) => new Token(type, 0);
141 static Token token4(TokenType type, String lexeme) => new StringToken(type, le xeme, 0);
142 /**
143 * Prevent the creation of instances of this class.
144 */
145 TokenFactory() {
146 }
147 }
16 class CharBufferScannerTest extends AbstractScannerTest { 148 class CharBufferScannerTest extends AbstractScannerTest {
17 Token scan(String source, GatheringErrorListener listener) { 149 Token scan(String source, GatheringErrorListener listener) {
18 CharBuffer buffer = CharBuffer.wrap(source); 150 CharBuffer buffer = CharBuffer.wrap(source);
19 CharBufferScanner scanner = new CharBufferScanner(null, buffer, listener); 151 CharBufferScanner scanner = new CharBufferScanner(null, buffer, listener);
20 Token result = scanner.tokenize(); 152 Token result = scanner.tokenize();
21 listener.setLineInfo(new TestSource(), scanner.lineStarts); 153 listener.setLineInfo(new TestSource(), scanner.lineStarts);
22 return result; 154 return result;
23 } 155 }
24 static dartSuite() { 156 static dartSuite() {
25 _ut.group('CharBufferScannerTest', () { 157 _ut.group('CharBufferScannerTest', () {
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 final __test = new CharBufferScannerTest(); 767 final __test = new CharBufferScannerTest();
636 runJUnitTest(__test, __test.test_tilde_slash_eq); 768 runJUnitTest(__test, __test.test_tilde_slash_eq);
637 }); 769 });
638 _ut.test('test_unclosedPairInInterpolation', () { 770 _ut.test('test_unclosedPairInInterpolation', () {
639 final __test = new CharBufferScannerTest(); 771 final __test = new CharBufferScannerTest();
640 runJUnitTest(__test, __test.test_unclosedPairInInterpolation); 772 runJUnitTest(__test, __test.test_unclosedPairInInterpolation);
641 }); 773 });
642 }); 774 });
643 } 775 }
644 } 776 }
645 /**
646 * Instances of the class {@code TokenStreamValidator} are used to validate the correct construction
647 * of a stream of tokens.
648 */
649 class TokenStreamValidator {
650 /**
651 * Validate that the stream of tokens that starts with the given token is corr ect.
652 * @param token the first token in the stream of tokens to be validated
653 */
654 void validate(Token token) {
655 StringBuffer builder = new StringBuffer();
656 validateStream(builder, token);
657 if (builder.length > 0) {
658 JUnitTestCase.fail(builder.toString());
659 }
660 }
661 void validateStream(StringBuffer builder, Token token) {
662 if (token == null) {
663 return;
664 }
665 Token previousToken = null;
666 int previousEnd = -1;
667 Token currentToken = token;
668 while (currentToken != null && currentToken.type != TokenType.EOF) {
669 validateStream(builder, currentToken.precedingComments);
670 TokenType type23 = currentToken.type;
671 if (identical(type23, TokenType.OPEN_CURLY_BRACKET) || identical(type23, T okenType.OPEN_PAREN) || identical(type23, TokenType.OPEN_SQUARE_BRACKET) || iden tical(type23, TokenType.STRING_INTERPOLATION_EXPRESSION)) {
672 if (currentToken is! BeginToken) {
673 builder.add("\r\nExpected BeginToken, found ");
674 builder.add(currentToken.runtimeType.toString());
675 builder.add(" ");
676 writeToken(builder, currentToken);
677 }
678 }
679 int currentStart = currentToken.offset;
680 int currentLength = currentToken.length;
681 int currentEnd = currentStart + currentLength - 1;
682 if (currentStart <= previousEnd) {
683 builder.add("\r\nInvalid token sequence: ");
684 writeToken(builder, previousToken);
685 builder.add(" followed by ");
686 writeToken(builder, currentToken);
687 }
688 previousEnd = currentEnd;
689 previousToken = currentToken;
690 currentToken = currentToken.next;
691 }
692 }
693 void writeToken(StringBuffer builder, Token token) {
694 builder.add("[");
695 builder.add(token.type);
696 builder.add(", '");
697 builder.add(token.lexeme);
698 builder.add("', ");
699 builder.add(token.offset);
700 builder.add(", ");
701 builder.add(token.length);
702 builder.add("]");
703 }
704 }
705 class TokenTypeTest extends EngineTestCase {
706 void test_isOperator() {
707 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator());
708 JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator());
709 JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator());
710 JUnitTestCase.assertTrue(TokenType.BANG.isOperator());
711 JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator());
712 JUnitTestCase.assertTrue(TokenType.BAR.isOperator());
713 JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator());
714 JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator());
715 JUnitTestCase.assertTrue(TokenType.CARET.isOperator());
716 JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator());
717 JUnitTestCase.assertTrue(TokenType.EQ.isOperator());
718 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator());
719 JUnitTestCase.assertTrue(TokenType.GT.isOperator());
720 JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator());
721 JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator());
722 JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator());
723 JUnitTestCase.assertTrue(TokenType.INDEX.isOperator());
724 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator());
725 JUnitTestCase.assertTrue(TokenType.IS.isOperator());
726 JUnitTestCase.assertTrue(TokenType.LT.isOperator());
727 JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator());
728 JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator());
729 JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator());
730 JUnitTestCase.assertTrue(TokenType.MINUS.isOperator());
731 JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator());
732 JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator());
733 JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator());
734 JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator());
735 JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator());
736 JUnitTestCase.assertTrue(TokenType.PLUS.isOperator());
737 JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator());
738 JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator());
739 JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator());
740 JUnitTestCase.assertTrue(TokenType.SLASH.isOperator());
741 JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator());
742 JUnitTestCase.assertTrue(TokenType.STAR.isOperator());
743 JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator());
744 JUnitTestCase.assertTrue(TokenType.TILDE.isOperator());
745 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator());
746 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator());
747 }
748 void test_isUserDefinableOperator() {
749 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator());
750 JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator());
751 JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator());
752 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator());
753 JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator());
754 JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator());
755 JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator());
756 JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator());
757 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator());
758 JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator());
759 JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator());
760 JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator());
761 JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator());
762 JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator());
763 JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator());
764 JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator());
765 JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator());
766 JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator());
767 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator());
768 }
769 static dartSuite() {
770 _ut.group('TokenTypeTest', () {
771 _ut.test('test_isOperator', () {
772 final __test = new TokenTypeTest();
773 runJUnitTest(__test, __test.test_isOperator);
774 });
775 _ut.test('test_isUserDefinableOperator', () {
776 final __test = new TokenTypeTest();
777 runJUnitTest(__test, __test.test_isUserDefinableOperator);
778 });
779 });
780 }
781 }
782 /**
783 * The class {@code TokenFactory} defines utility methods that can be used to cr eate tokens.
784 */
785 class TokenFactory {
786 static Token token(Keyword keyword) => new KeywordToken(keyword, 0);
787 static Token token2(String lexeme) => new StringToken(TokenType.STRING, lexeme , 0);
788 static Token token3(TokenType type) => new Token(type, 0);
789 static Token token4(TokenType type, String lexeme) => new StringToken(type, le xeme, 0);
790 /**
791 * Prevent the creation of instances of this class.
792 */
793 TokenFactory() {
794 }
795 }
796 class KeywordStateTest extends JUnitTestCase {
797 void test_KeywordState() {
798 List<Keyword> keywords = Keyword.values;
799 int keywordCount = keywords.length;
800 List<String> textToTest = new List<String>(keywordCount * 3);
801 for (int i = 0; i < keywordCount; i++) {
802 String syntax3 = keywords[i].syntax;
803 textToTest[i] = syntax3;
804 textToTest[i + keywordCount] = "${syntax3}x";
805 textToTest[i + keywordCount * 2] = syntax3.substring(0, syntax3.length - 1 );
806 }
807 KeywordState firstState = KeywordState.KEYWORD_STATE;
808 for (int i = 0; i < textToTest.length; i++) {
809 String text = textToTest[i];
810 int index = 0;
811 int length10 = text.length;
812 KeywordState state = firstState;
813 while (index < length10 && state != null) {
814 state = state.next(text.codeUnitAt(index));
815 index++;
816 }
817 if (i < keywordCount) {
818 JUnitTestCase.assertNotNull(state);
819 JUnitTestCase.assertNotNull(state.keyword());
820 JUnitTestCase.assertEquals(keywords[i], state.keyword());
821 } else if (i < keywordCount * 2) {
822 JUnitTestCase.assertNull(state);
823 } else {
824 JUnitTestCase.assertNotNull(state);
825 }
826 }
827 }
828 static dartSuite() {
829 _ut.group('KeywordStateTest', () {
830 _ut.test('test_KeywordState', () {
831 final __test = new KeywordStateTest();
832 runJUnitTest(__test, __test.test_KeywordState);
833 });
834 });
835 }
836 }
837 class StringScannerTest extends AbstractScannerTest { 777 class StringScannerTest extends AbstractScannerTest {
838 void test_setSourceStart() { 778 void test_setSourceStart() {
839 int offsetDelta = 42; 779 int offsetDelta = 42;
840 GatheringErrorListener listener = new GatheringErrorListener(); 780 GatheringErrorListener listener = new GatheringErrorListener();
841 StringScanner scanner = new StringScanner(null, "a", listener); 781 StringScanner scanner = new StringScanner(null, "a", listener);
842 scanner.setSourceStart(3, 9, offsetDelta); 782 scanner.setSourceStart(3, 9, offsetDelta);
843 scanner.tokenize(); 783 scanner.tokenize();
844 List<int> lineStarts2 = scanner.lineStarts; 784 List<int> lineStarts2 = scanner.lineStarts;
845 JUnitTestCase.assertNotNull(lineStarts2); 785 JUnitTestCase.assertNotNull(lineStarts2);
846 JUnitTestCase.assertEquals(3, lineStarts2.length); 786 JUnitTestCase.assertEquals(3, lineStarts2.length);
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 final __test = new StringScannerTest(); 1410 final __test = new StringScannerTest();
1471 runJUnitTest(__test, __test.test_tilde_slash_eq); 1411 runJUnitTest(__test, __test.test_tilde_slash_eq);
1472 }); 1412 });
1473 _ut.test('test_unclosedPairInInterpolation', () { 1413 _ut.test('test_unclosedPairInInterpolation', () {
1474 final __test = new StringScannerTest(); 1414 final __test = new StringScannerTest();
1475 runJUnitTest(__test, __test.test_unclosedPairInInterpolation); 1415 runJUnitTest(__test, __test.test_unclosedPairInInterpolation);
1476 }); 1416 });
1477 }); 1417 });
1478 } 1418 }
1479 } 1419 }
1420 /**
1421 * Instances of the class {@code TokenStreamValidator} are used to validate the correct construction
1422 * of a stream of tokens.
1423 */
1424 class TokenStreamValidator {
1425 /**
1426 * Validate that the stream of tokens that starts with the given token is corr ect.
1427 * @param token the first token in the stream of tokens to be validated
1428 */
1429 void validate(Token token) {
1430 StringBuffer builder = new StringBuffer();
1431 validateStream(builder, token);
1432 if (builder.length > 0) {
1433 JUnitTestCase.fail(builder.toString());
1434 }
1435 }
1436 void validateStream(StringBuffer builder, Token token) {
1437 if (token == null) {
1438 return;
1439 }
1440 Token previousToken = null;
1441 int previousEnd = -1;
1442 Token currentToken = token;
1443 while (currentToken != null && currentToken.type != TokenType.EOF) {
1444 validateStream(builder, currentToken.precedingComments);
1445 TokenType type28 = currentToken.type;
1446 if (identical(type28, TokenType.OPEN_CURLY_BRACKET) || identical(type28, T okenType.OPEN_PAREN) || identical(type28, TokenType.OPEN_SQUARE_BRACKET) || iden tical(type28, TokenType.STRING_INTERPOLATION_EXPRESSION)) {
1447 if (currentToken is! BeginToken) {
1448 builder.write("\r\nExpected BeginToken, found ");
1449 builder.write(currentToken.runtimeType.toString());
1450 builder.write(" ");
1451 writeToken(builder, currentToken);
1452 }
1453 }
1454 int currentStart = currentToken.offset;
1455 int currentLength = currentToken.length;
1456 int currentEnd = currentStart + currentLength - 1;
1457 if (currentStart <= previousEnd) {
1458 builder.write("\r\nInvalid token sequence: ");
1459 writeToken(builder, previousToken);
1460 builder.write(" followed by ");
1461 writeToken(builder, currentToken);
1462 }
1463 previousEnd = currentEnd;
1464 previousToken = currentToken;
1465 currentToken = currentToken.next;
1466 }
1467 }
1468 void writeToken(StringBuffer builder, Token token) {
1469 builder.write("[");
1470 builder.write(token.type);
1471 builder.write(", '");
1472 builder.write(token.lexeme);
1473 builder.write("', ");
1474 builder.write(token.offset);
1475 builder.write(", ");
1476 builder.write(token.length);
1477 builder.write("]");
1478 }
1479 }
1480 abstract class AbstractScannerTest extends JUnitTestCase { 1480 abstract class AbstractScannerTest extends JUnitTestCase {
1481 void test_ampersand() { 1481 void test_ampersand() {
1482 assertToken(TokenType.AMPERSAND, "&"); 1482 assertToken(TokenType.AMPERSAND, "&");
1483 } 1483 }
1484 void test_ampersand_ampersand() { 1484 void test_ampersand_ampersand() {
1485 assertToken(TokenType.AMPERSAND_AMPERSAND, "&&"); 1485 assertToken(TokenType.AMPERSAND_AMPERSAND, "&&");
1486 } 1486 }
1487 void test_ampersand_eq() { 1487 void test_ampersand_eq() {
1488 assertToken(TokenType.AMPERSAND_EQ, "&="); 1488 assertToken(TokenType.AMPERSAND_EQ, "&=");
1489 } 1489 }
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 assertToken(TokenType.SLASH_EQ, "/="); 1857 assertToken(TokenType.SLASH_EQ, "/=");
1858 } 1858 }
1859 void test_star() { 1859 void test_star() {
1860 assertToken(TokenType.STAR, "*"); 1860 assertToken(TokenType.STAR, "*");
1861 } 1861 }
1862 void test_star_eq() { 1862 void test_star_eq() {
1863 assertToken(TokenType.STAR_EQ, "*="); 1863 assertToken(TokenType.STAR_EQ, "*=");
1864 } 1864 }
1865 void test_startAndEnd() { 1865 void test_startAndEnd() {
1866 Token token = scan2("a"); 1866 Token token = scan2("a");
1867 Token previous3 = token.previous; 1867 Token previous5 = token.previous;
1868 JUnitTestCase.assertEquals(token, previous3.next); 1868 JUnitTestCase.assertEquals(token, previous5.next);
1869 JUnitTestCase.assertEquals(previous3, previous3.previous); 1869 JUnitTestCase.assertEquals(previous5, previous5.previous);
1870 Token next7 = token.next; 1870 Token next7 = token.next;
1871 JUnitTestCase.assertEquals(next7, next7.next); 1871 JUnitTestCase.assertEquals(next7, next7.next);
1872 JUnitTestCase.assertEquals(token, next7.previous); 1872 JUnitTestCase.assertEquals(token, next7.previous);
1873 } 1873 }
1874 void test_string_multi_double() { 1874 void test_string_multi_double() {
1875 assertToken(TokenType.STRING, "\"\"\"multi-line\nstring\"\"\""); 1875 assertToken(TokenType.STRING, "\"\"\"multi-line\nstring\"\"\"");
1876 } 1876 }
1877 void test_string_multi_interpolation_block() { 1877 void test_string_multi_interpolation_block() {
1878 assertTokens("\"Hello \${name}!\"", [new StringToken(TokenType.STRING, "\"He llo ", 0), new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), new StringToken(TokenType.IDENTIFIER, "name", 9), new Token(TokenType.CLOSE_CUR LY_BRACKET, 13), new StringToken(TokenType.STRING, "!\"", 14)]); 1878 assertTokens("\"Hello \${name}!\"", [new StringToken(TokenType.STRING, "\"He llo ", 0), new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), new StringToken(TokenType.IDENTIFIER, "name", 9), new Token(TokenType.CLOSE_CUR LY_BRACKET, 13), new StringToken(TokenType.STRING, "!\"", 14)]);
1879 } 1879 }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
2054 listener.assertNoErrors(); 2054 listener.assertNoErrors();
2055 return token; 2055 return token;
2056 } 2056 }
2057 } 2057 }
2058 main() { 2058 main() {
2059 CharBufferScannerTest.dartSuite(); 2059 CharBufferScannerTest.dartSuite();
2060 KeywordStateTest.dartSuite(); 2060 KeywordStateTest.dartSuite();
2061 StringScannerTest.dartSuite(); 2061 StringScannerTest.dartSuite();
2062 TokenTypeTest.dartSuite(); 2062 TokenTypeTest.dartSuite();
2063 } 2063 }
OLDNEW
« no previous file with comments | « pkg/analyzer-experimental/test/generated/parser_test.dart ('k') | pkg/analyzer-experimental/test/generated/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698