| OLD | NEW |
| 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'; | |
| 11 import 'package:analyzer/src/generated/java_junit.dart'; | |
| 12 import 'package:analyzer/src/generated/source.dart'; | 10 import 'package:analyzer/src/generated/source.dart'; |
| 13 import 'package:analyzer/src/generated/error.dart'; | 11 import 'package:analyzer/src/generated/error.dart'; |
| 14 import 'package:analyzer/src/generated/scanner.dart'; | 12 import 'package:analyzer/src/generated/scanner.dart'; |
| 15 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; | 13 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; |
| 16 import 'package:unittest/unittest.dart' as _ut; | 14 import 'package:unittest/unittest.dart'; |
| 17 import 'test_support.dart'; | 15 import 'test_support.dart'; |
| 18 import '../reflective_tests.dart'; | 16 import '../reflective_tests.dart'; |
| 19 | 17 |
| 20 | 18 |
| 21 class CharSequenceReaderTest extends JUnitTestCase { | 19 class CharSequenceReaderTest { |
| 22 void test_advance() { | 20 void test_advance() { |
| 23 CharSequenceReader reader = new CharSequenceReader("x"); | 21 CharSequenceReader reader = new CharSequenceReader("x"); |
| 24 JUnitTestCase.assertEquals(0x78, reader.advance()); | 22 expect(reader.advance(), 0x78); |
| 25 JUnitTestCase.assertEquals(-1, reader.advance()); | 23 expect(reader.advance(), -1); |
| 26 JUnitTestCase.assertEquals(-1, reader.advance()); | 24 expect(reader.advance(), -1); |
| 27 } | 25 } |
| 28 | 26 |
| 29 void test_creation() { | 27 void test_creation() { |
| 30 JUnitTestCase.assertNotNull(new CharSequenceReader("x")); | 28 expect(new CharSequenceReader("x"), isNotNull); |
| 31 } | 29 } |
| 32 | 30 |
| 33 void test_getOffset() { | 31 void test_getOffset() { |
| 34 CharSequenceReader reader = new CharSequenceReader("x"); | 32 CharSequenceReader reader = new CharSequenceReader("x"); |
| 35 JUnitTestCase.assertEquals(-1, reader.offset); | 33 expect(reader.offset, -1); |
| 36 reader.advance(); | 34 reader.advance(); |
| 37 JUnitTestCase.assertEquals(0, reader.offset); | 35 expect(reader.offset, 0); |
| 38 reader.advance(); | 36 reader.advance(); |
| 39 JUnitTestCase.assertEquals(0, reader.offset); | 37 expect(reader.offset, 0); |
| 40 } | 38 } |
| 41 | 39 |
| 42 void test_getString() { | 40 void test_getString() { |
| 43 CharSequenceReader reader = new CharSequenceReader("xyzzy"); | 41 CharSequenceReader reader = new CharSequenceReader("xyzzy"); |
| 44 reader.offset = 3; | 42 reader.offset = 3; |
| 45 JUnitTestCase.assertEquals("yzz", reader.getString(1, 0)); | 43 expect(reader.getString(1, 0), "yzz"); |
| 46 JUnitTestCase.assertEquals("zzy", reader.getString(2, 1)); | 44 expect(reader.getString(2, 1), "zzy"); |
| 47 } | 45 } |
| 48 | 46 |
| 49 void test_peek() { | 47 void test_peek() { |
| 50 CharSequenceReader reader = new CharSequenceReader("xy"); | 48 CharSequenceReader reader = new CharSequenceReader("xy"); |
| 51 JUnitTestCase.assertEquals(0x78, reader.peek()); | 49 expect(reader.peek(), 0x78); |
| 52 JUnitTestCase.assertEquals(0x78, reader.peek()); | 50 expect(reader.peek(), 0x78); |
| 53 reader.advance(); | 51 reader.advance(); |
| 54 JUnitTestCase.assertEquals(0x79, reader.peek()); | 52 expect(reader.peek(), 0x79); |
| 55 JUnitTestCase.assertEquals(0x79, reader.peek()); | 53 expect(reader.peek(), 0x79); |
| 56 reader.advance(); | 54 reader.advance(); |
| 57 JUnitTestCase.assertEquals(-1, reader.peek()); | 55 expect(reader.peek(), -1); |
| 58 JUnitTestCase.assertEquals(-1, reader.peek()); | 56 expect(reader.peek(), -1); |
| 59 } | 57 } |
| 60 | 58 |
| 61 void test_setOffset() { | 59 void test_setOffset() { |
| 62 CharSequenceReader reader = new CharSequenceReader("xyz"); | 60 CharSequenceReader reader = new CharSequenceReader("xyz"); |
| 63 reader.offset = 2; | 61 reader.offset = 2; |
| 64 JUnitTestCase.assertEquals(2, reader.offset); | 62 expect(reader.offset, 2); |
| 65 } | 63 } |
| 66 } | 64 } |
| 67 | 65 |
| 68 class IncrementalScannerTest extends EngineTestCase { | 66 class IncrementalScannerTest extends EngineTestCase { |
| 69 /** | 67 /** |
| 70 * The first token from the token stream resulting from parsing the original s
ource, or | 68 * The first token from the token stream resulting from parsing the original s
ource, or |
| 71 * `null` if [scan] has not been invoked. | 69 * `null` if [scan] has not been invoked. |
| 72 */ | 70 */ |
| 73 Token _originalTokens; | 71 Token _originalTokens; |
| 74 | 72 |
| 75 /** | 73 /** |
| 76 * The scanner used to perform incremental scanning, or `null` if [scan] has n
ot been | 74 * The scanner used to perform incremental scanning, or `null` if [scan] has n
ot been |
| 77 * invoked. | 75 * invoked. |
| 78 */ | 76 */ |
| 79 IncrementalScanner _incrementalScanner; | 77 IncrementalScanner _incrementalScanner; |
| 80 | 78 |
| 81 /** | 79 /** |
| 82 * The first token from the token stream resulting from performing an incremen
tal scan, or | 80 * The first token from the token stream resulting from performing an incremen
tal scan, or |
| 83 * `null` if [scan] has not been invoked. | 81 * `null` if [scan] has not been invoked. |
| 84 */ | 82 */ |
| 85 Token _incrementalTokens; | 83 Token _incrementalTokens; |
| 86 | 84 |
| 87 void test_delete_identifier_beginning() { | 85 void test_delete_identifier_beginning() { |
| 88 // "abs + b;" | 86 // "abs + b;" |
| 89 // "s + b;") | 87 // "s + b;") |
| 90 _scan("", "ab", "", "s + b;"); | 88 _scan("", "ab", "", "s + b;"); |
| 91 _assertTokens(-1, 1, ["s", "+", "b", ";"]); | 89 _assertTokens(-1, 1, ["s", "+", "b", ";"]); |
| 92 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 90 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 93 } | 91 } |
| 94 | 92 |
| 95 void test_delete_identifier_end() { | 93 void test_delete_identifier_end() { |
| 96 // "abs + b;" | 94 // "abs + b;" |
| 97 // "a + b;") | 95 // "a + b;") |
| 98 _scan("a", "bs", "", " + b;"); | 96 _scan("a", "bs", "", " + b;"); |
| 99 _assertTokens(-1, 1, ["a", "+", "b", ";"]); | 97 _assertTokens(-1, 1, ["a", "+", "b", ";"]); |
| 100 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 98 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 101 } | 99 } |
| 102 | 100 |
| 103 void test_delete_identifier_middle() { | 101 void test_delete_identifier_middle() { |
| 104 // "abs + b;" | 102 // "abs + b;" |
| 105 // "as + b;") | 103 // "as + b;") |
| 106 _scan("a", "b", "", "s + b;"); | 104 _scan("a", "b", "", "s + b;"); |
| 107 _assertTokens(-1, 1, ["as", "+", "b", ";"]); | 105 _assertTokens(-1, 1, ["as", "+", "b", ";"]); |
| 108 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 106 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 109 } | 107 } |
| 110 | 108 |
| 111 void test_delete_mergeTokens() { | 109 void test_delete_mergeTokens() { |
| 112 // "a + b + c;" | 110 // "a + b + c;" |
| 113 // "ac;") | 111 // "ac;") |
| 114 _scan("a", " + b + ", "", "c;"); | 112 _scan("a", " + b + ", "", "c;"); |
| 115 _assertTokens(-1, 1, ["ac", ";"]); | 113 _assertTokens(-1, 1, ["ac", ";"]); |
| 116 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 114 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 117 } | 115 } |
| 118 | 116 |
| 119 void test_insert_afterIdentifier1() { | 117 void test_insert_afterIdentifier1() { |
| 120 // "a + b;" | 118 // "a + b;" |
| 121 // "abs + b;" | 119 // "abs + b;" |
| 122 _scan("a", "", "bs", " + b;"); | 120 _scan("a", "", "bs", " + b;"); |
| 123 _assertTokens(-1, 1, ["abs", "+", "b", ";"]); | 121 _assertTokens(-1, 1, ["abs", "+", "b", ";"]); |
| 124 _assertReplaced(1, "+"); | 122 _assertReplaced(1, "+"); |
| 125 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 123 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 126 } | 124 } |
| 127 | 125 |
| 128 void test_insert_afterIdentifier2() { | 126 void test_insert_afterIdentifier2() { |
| 129 // "a + b;" | 127 // "a + b;" |
| 130 // "a + by;" | 128 // "a + by;" |
| 131 _scan("a + b", "", "y", ";"); | 129 _scan("a + b", "", "y", ";"); |
| 132 _assertTokens(1, 3, ["a", "+", "by", ";"]); | 130 _assertTokens(1, 3, ["a", "+", "by", ";"]); |
| 133 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 131 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 134 } | 132 } |
| 135 | 133 |
| 136 void test_insert_beforeIdentifier() { | 134 void test_insert_beforeIdentifier() { |
| 137 // "a + b;" | 135 // "a + b;" |
| 138 // "a + xb;") | 136 // "a + xb;") |
| 139 _scan("a + ", "", "x", "b;"); | 137 _scan("a + ", "", "x", "b;"); |
| 140 _assertTokens(1, 3, ["a", "+", "xb", ";"]); | 138 _assertTokens(1, 3, ["a", "+", "xb", ";"]); |
| 141 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 139 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 142 } | 140 } |
| 143 | 141 |
| 144 void test_insert_beforeIdentifier_firstToken() { | 142 void test_insert_beforeIdentifier_firstToken() { |
| 145 // "a + b;" | 143 // "a + b;" |
| 146 // "xa + b;" | 144 // "xa + b;" |
| 147 _scan("", "", "x", "a + b;"); | 145 _scan("", "", "x", "a + b;"); |
| 148 _assertTokens(-1, 1, ["xa", "+", "b", ";"]); | 146 _assertTokens(-1, 1, ["xa", "+", "b", ";"]); |
| 149 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 147 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 150 } | 148 } |
| 151 | 149 |
| 152 void test_insert_convertOneFunctionToTwo() { | 150 void test_insert_convertOneFunctionToTwo() { |
| 153 // "f() {}" | 151 // "f() {}" |
| 154 // "f() => 0; g() {}" | 152 // "f() => 0; g() {}" |
| 155 _scan("f()", "", " => 0; g()", " {}"); | 153 _scan("f()", "", " => 0; g()", " {}"); |
| 156 _assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]
); | 154 _assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]
); |
| 157 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 155 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 158 } | 156 } |
| 159 | 157 |
| 160 void test_insert_end() { | 158 void test_insert_end() { |
| 161 // "class A {}" | 159 // "class A {}" |
| 162 // "class A {} class B {}" | 160 // "class A {} class B {}" |
| 163 _scan("class A {}", "", " class B {}", ""); | 161 _scan("class A {}", "", " class B {}", ""); |
| 164 _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]); | 162 _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]); |
| 165 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 163 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 166 } | 164 } |
| 167 | 165 |
| 168 void test_insert_insideIdentifier() { | 166 void test_insert_insideIdentifier() { |
| 169 // "cob;" | 167 // "cob;" |
| 170 // "cow.b;" | 168 // "cow.b;" |
| 171 _scan("co", "", "w.", "b;"); | 169 _scan("co", "", "w.", "b;"); |
| 172 _assertTokens(-1, 3, ["cow", ".", "b", ";"]); | 170 _assertTokens(-1, 3, ["cow", ".", "b", ";"]); |
| 173 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 171 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 174 } | 172 } |
| 175 | 173 |
| 176 void test_insert_newIdentifier1() { | 174 void test_insert_newIdentifier1() { |
| 177 // "a; c;" | 175 // "a; c;" |
| 178 // "a; b c;" | 176 // "a; b c;" |
| 179 _scan("a; ", "", "b", " c;"); | 177 _scan("a; ", "", "b", " c;"); |
| 180 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); | 178 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); |
| 181 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 179 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 182 } | 180 } |
| 183 | 181 |
| 184 void test_insert_newIdentifier2() { | 182 void test_insert_newIdentifier2() { |
| 185 // "a; c;" | 183 // "a; c;" |
| 186 // "a;b c;" | 184 // "a;b c;" |
| 187 _scan("a;", "", "b", " c;"); | 185 _scan("a;", "", "b", " c;"); |
| 188 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); | 186 _assertTokens(1, 3, ["a", ";", "b", "c", ";"]); |
| 189 _assertReplaced(1, ";"); | 187 _assertReplaced(1, ";"); |
| 190 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 188 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 191 } | 189 } |
| 192 | 190 |
| 193 void test_insert_period() { | 191 void test_insert_period() { |
| 194 // "a + b;" | 192 // "a + b;" |
| 195 // "a + b.;" | 193 // "a + b.;" |
| 196 _scan("a + b", "", ".", ";"); | 194 _scan("a + b", "", ".", ";"); |
| 197 _assertTokens(2, 4, ["a", "+", "b", ".", ";"]); | 195 _assertTokens(2, 4, ["a", "+", "b", ".", ";"]); |
| 198 } | 196 } |
| 199 | 197 |
| 200 void test_insert_period_betweenIdentifiers1() { | 198 void test_insert_period_betweenIdentifiers1() { |
| 201 // "a b;" | 199 // "a b;" |
| 202 // "a. b;" | 200 // "a. b;" |
| 203 _scan("a", "", ".", " b;"); | 201 _scan("a", "", ".", " b;"); |
| 204 _assertTokens(0, 2, ["a", ".", "b", ";"]); | 202 _assertTokens(0, 2, ["a", ".", "b", ";"]); |
| 205 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 203 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 206 } | 204 } |
| 207 | 205 |
| 208 void test_insert_period_betweenIdentifiers2() { | 206 void test_insert_period_betweenIdentifiers2() { |
| 209 // "a b;" | 207 // "a b;" |
| 210 // "a .b;" | 208 // "a .b;" |
| 211 _scan("a ", "", ".", "b;"); | 209 _scan("a ", "", ".", "b;"); |
| 212 _assertTokens(0, 2, ["a", ".", "b", ";"]); | 210 _assertTokens(0, 2, ["a", ".", "b", ";"]); |
| 213 } | 211 } |
| 214 | 212 |
| 215 void test_insert_period_betweenIdentifiers3() { | 213 void test_insert_period_betweenIdentifiers3() { |
| 216 // "a b;" | 214 // "a b;" |
| 217 // "a . b;" | 215 // "a . b;" |
| 218 _scan("a ", "", ".", " b;"); | 216 _scan("a ", "", ".", " b;"); |
| 219 _assertTokens(0, 2, ["a", ".", "b", ";"]); | 217 _assertTokens(0, 2, ["a", ".", "b", ";"]); |
| 220 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 218 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 221 } | 219 } |
| 222 | 220 |
| 223 void test_insert_period_insideExistingIdentifier() { | 221 void test_insert_period_insideExistingIdentifier() { |
| 224 // "ab;" | 222 // "ab;" |
| 225 // "a.b;" | 223 // "a.b;" |
| 226 _scan("a", "", ".", "b;"); | 224 _scan("a", "", ".", "b;"); |
| 227 _assertTokens(-1, 3, ["a", ".", "b", ";"]); | 225 _assertTokens(-1, 3, ["a", ".", "b", ";"]); |
| 228 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 226 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 229 } | 227 } |
| 230 | 228 |
| 231 void test_insert_periodAndIdentifier() { | 229 void test_insert_periodAndIdentifier() { |
| 232 // "a + b;" | 230 // "a + b;" |
| 233 // "a + b.x;" | 231 // "a + b.x;" |
| 234 _scan("a + b", "", ".x", ";"); | 232 _scan("a + b", "", ".x", ";"); |
| 235 _assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]); | 233 _assertTokens(2, 5, ["a", "+", "b", ".", "x", ";"]); |
| 236 } | 234 } |
| 237 | 235 |
| 238 void test_insert_whitespace_beginning_beforeToken() { | 236 void test_insert_whitespace_beginning_beforeToken() { |
| 239 // "a + b;" | 237 // "a + b;" |
| 240 // " a + b;" | 238 // " a + b;" |
| 241 _scan("", "", " ", "a + b;"); | 239 _scan("", "", " ", "a + b;"); |
| 242 _assertTokens(0, 1, ["a", "+", "b", ";"]); | 240 _assertTokens(0, 1, ["a", "+", "b", ";"]); |
| 243 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 241 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 244 } | 242 } |
| 245 | 243 |
| 246 void test_insert_whitespace_betweenTokens() { | 244 void test_insert_whitespace_betweenTokens() { |
| 247 // "a + b;" | 245 // "a + b;" |
| 248 // "a + b;" | 246 // "a + b;" |
| 249 _scan("a ", "", " ", "+ b;"); | 247 _scan("a ", "", " ", "+ b;"); |
| 250 _assertTokens(1, 2, ["a", "+", "b", ";"]); | 248 _assertTokens(1, 2, ["a", "+", "b", ";"]); |
| 251 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 249 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 252 } | 250 } |
| 253 | 251 |
| 254 void test_insert_whitespace_end_afterToken() { | 252 void test_insert_whitespace_end_afterToken() { |
| 255 // "a + b;" | 253 // "a + b;" |
| 256 // "a + b; " | 254 // "a + b; " |
| 257 _scan("a + b;", "", " ", ""); | 255 _scan("a + b;", "", " ", ""); |
| 258 _assertTokens(3, 4, ["a", "+", "b", ";"]); | 256 _assertTokens(3, 4, ["a", "+", "b", ";"]); |
| 259 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 257 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 260 } | 258 } |
| 261 | 259 |
| 262 void test_insert_whitespace_end_afterWhitespace() { | 260 void test_insert_whitespace_end_afterWhitespace() { |
| 263 // "a + b; " | 261 // "a + b; " |
| 264 // "a + b; " | 262 // "a + b; " |
| 265 _scan("a + b; ", "", " ", ""); | 263 _scan("a + b; ", "", " ", ""); |
| 266 _assertTokens(3, 4, ["a", "+", "b", ";"]); | 264 _assertTokens(3, 4, ["a", "+", "b", ";"]); |
| 267 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 265 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 268 } | 266 } |
| 269 | 267 |
| 270 void test_insert_whitespace_withMultipleComments() { | 268 void test_insert_whitespace_withMultipleComments() { |
| 271 // "//comment", "//comment2", "a + b;" | 269 // "//comment", "//comment2", "a + b;" |
| 272 // "//comment", "//comment2", "a + b;" | 270 // "//comment", "//comment2", "a + b;" |
| 273 _scan(r''' | 271 _scan(r''' |
| 274 //comment | 272 //comment |
| 275 //comment2 | 273 //comment2 |
| 276 a''', "", " ", " + b;"); | 274 a''', "", " ", " + b;"); |
| 277 _assertTokens(1, 2, ["a", "+", "b", ";"]); | 275 _assertTokens(1, 2, ["a", "+", "b", ";"]); |
| 278 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 276 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 279 } | 277 } |
| 280 | 278 |
| 281 void test_replace_identifier_beginning() { | 279 void test_replace_identifier_beginning() { |
| 282 // "bell + b;" | 280 // "bell + b;" |
| 283 // "fell + b;") | 281 // "fell + b;") |
| 284 _scan("", "b", "f", "ell + b;"); | 282 _scan("", "b", "f", "ell + b;"); |
| 285 _assertTokens(-1, 1, ["fell", "+", "b", ";"]); | 283 _assertTokens(-1, 1, ["fell", "+", "b", ";"]); |
| 286 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 284 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 287 } | 285 } |
| 288 | 286 |
| 289 void test_replace_identifier_end() { | 287 void test_replace_identifier_end() { |
| 290 // "bell + b;" | 288 // "bell + b;" |
| 291 // "belt + b;") | 289 // "belt + b;") |
| 292 _scan("bel", "l", "t", " + b;"); | 290 _scan("bel", "l", "t", " + b;"); |
| 293 _assertTokens(-1, 1, ["belt", "+", "b", ";"]); | 291 _assertTokens(-1, 1, ["belt", "+", "b", ";"]); |
| 294 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 292 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 295 } | 293 } |
| 296 | 294 |
| 297 void test_replace_identifier_middle() { | 295 void test_replace_identifier_middle() { |
| 298 // "first + b;" | 296 // "first + b;" |
| 299 // "frost + b;") | 297 // "frost + b;") |
| 300 _scan("f", "ir", "ro", "st + b;"); | 298 _scan("f", "ir", "ro", "st + b;"); |
| 301 _assertTokens(-1, 1, ["frost", "+", "b", ";"]); | 299 _assertTokens(-1, 1, ["frost", "+", "b", ";"]); |
| 302 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 300 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 303 } | 301 } |
| 304 | 302 |
| 305 void test_replace_multiple_partialFirstAndLast() { | 303 void test_replace_multiple_partialFirstAndLast() { |
| 306 // "aa + bb;" | 304 // "aa + bb;" |
| 307 // "ab * ab;") | 305 // "ab * ab;") |
| 308 _scan("a", "a + b", "b * a", "b;"); | 306 _scan("a", "a + b", "b * a", "b;"); |
| 309 _assertTokens(-1, 3, ["ab", "*", "ab", ";"]); | 307 _assertTokens(-1, 3, ["ab", "*", "ab", ";"]); |
| 310 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 308 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 311 } | 309 } |
| 312 | 310 |
| 313 void test_replace_operator_oneForMany() { | 311 void test_replace_operator_oneForMany() { |
| 314 // "a + b;" | 312 // "a + b;" |
| 315 // "a * c - b;") | 313 // "a * c - b;") |
| 316 _scan("a ", "+", "* c -", " b;"); | 314 _scan("a ", "+", "* c -", " b;"); |
| 317 _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]); | 315 _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]); |
| 318 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 316 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 319 } | 317 } |
| 320 | 318 |
| 321 void test_replace_operator_oneForOne() { | 319 void test_replace_operator_oneForOne() { |
| 322 // "a + b;" | 320 // "a + b;" |
| 323 // "a * b;") | 321 // "a * b;") |
| 324 _scan("a ", "+", "*", " b;"); | 322 _scan("a ", "+", "*", " b;"); |
| 325 _assertTokens(0, 2, ["a", "*", "b", ";"]); | 323 _assertTokens(0, 2, ["a", "*", "b", ";"]); |
| 326 JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange); | 324 expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
| 327 } | 325 } |
| 328 | 326 |
| 329 void test_tokenMap() { | 327 void test_tokenMap() { |
| 330 // "main() {a + b;}" | 328 // "main() {a + b;}" |
| 331 // "main() { a + b;}" | 329 // "main() { a + b;}" |
| 332 _scan("main() {", "", " ", "a + b;}"); | 330 _scan("main() {", "", " ", "a + b;}"); |
| 333 TokenMap tokenMap = _incrementalScanner.tokenMap; | 331 TokenMap tokenMap = _incrementalScanner.tokenMap; |
| 334 Token oldToken = _originalTokens; | 332 Token oldToken = _originalTokens; |
| 335 while (oldToken.type != TokenType.EOF) { | 333 while (oldToken.type != TokenType.EOF) { |
| 336 Token newToken = tokenMap.get(oldToken); | 334 Token newToken = tokenMap.get(oldToken); |
| 337 JUnitTestCase.assertNotSame(oldToken, newToken); | 335 expect(newToken, isNot(same(oldToken))); |
| 338 JUnitTestCase.assertSame(oldToken.type, newToken.type); | 336 expect(newToken.type, same(oldToken.type)); |
| 339 JUnitTestCase.assertEquals(oldToken.lexeme, newToken.lexeme); | 337 expect(newToken.lexeme, oldToken.lexeme); |
| 340 oldToken = oldToken.next; | 338 oldToken = oldToken.next; |
| 341 } | 339 } |
| 342 JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange); | 340 expect(_incrementalScanner.hasNonWhitespaceChange, isFalse); |
| 343 } | 341 } |
| 344 | 342 |
| 345 /** | 343 /** |
| 346 * Assert that the token at the given offset was replaced with a new token hav
ing the given | 344 * Assert that the token at the given offset was replaced with a new token hav
ing the given |
| 347 * lexeme. | 345 * lexeme. |
| 348 * | 346 * |
| 349 * @param tokenOffset the offset of the token being tested | 347 * @param tokenOffset the offset of the token being tested |
| 350 * @param lexeme the expected lexeme of the new token | 348 * @param lexeme the expected lexeme of the new token |
| 351 */ | 349 */ |
| 352 void _assertReplaced(int tokenOffset, String lexeme) { | 350 void _assertReplaced(int tokenOffset, String lexeme) { |
| 353 Token oldToken = _originalTokens; | 351 Token oldToken = _originalTokens; |
| 354 for (int i = 0; i < tokenOffset; i++) { | 352 for (int i = 0; i < tokenOffset; i++) { |
| 355 oldToken = oldToken.next; | 353 oldToken = oldToken.next; |
| 356 } | 354 } |
| 357 JUnitTestCase.assertEquals(lexeme, oldToken.lexeme); | 355 expect(oldToken.lexeme, lexeme); |
| 358 Token newToken = _incrementalScanner.tokenMap.get(oldToken); | 356 Token newToken = _incrementalScanner.tokenMap.get(oldToken); |
| 359 JUnitTestCase.assertNotNull(newToken); | 357 expect(newToken, isNotNull); |
| 360 JUnitTestCase.assertEquals(lexeme, newToken.lexeme); | 358 expect(newToken.lexeme, lexeme); |
| 361 JUnitTestCase.assertNotSame(oldToken, newToken); | 359 expect(newToken, isNot(same(oldToken))); |
| 362 } | 360 } |
| 363 | 361 |
| 364 /** | 362 /** |
| 365 * Assert that the result of the incremental scan matches the given list of le
xemes and that the | 363 * Assert that the result of the incremental scan matches the given list of le
xemes and that the |
| 366 * left and right tokens correspond to the tokens at the given indices. | 364 * left and right tokens correspond to the tokens at the given indices. |
| 367 * | 365 * |
| 368 * @param leftIndex the expected index of the left token | 366 * @param leftIndex the expected index of the left token |
| 369 * @param rightIndex the expected index of the right token | 367 * @param rightIndex the expected index of the right token |
| 370 * @param lexemes the expected lexemes of the resulting tokens | 368 * @param lexemes the expected lexemes of the resulting tokens |
| 371 */ | 369 */ |
| 372 void _assertTokens(int leftIndex, int rightIndex, List<String> lexemes) { | 370 void _assertTokens(int leftIndex, int rightIndex, List<String> lexemes) { |
| 373 int count = lexemes.length; | 371 int count = lexemes.length; |
| 374 JUnitTestCase.assertTrueMsg("Invalid left index", leftIndex >= -1 && leftInd
ex < count); | 372 expect(leftIndex >= -1 && leftIndex < count, isTrue, reason: "Invalid left i
ndex"); |
| 375 JUnitTestCase.assertTrueMsg("Invalid right index", rightIndex >= 0 && rightI
ndex <= count); | 373 expect(rightIndex >= 0 && rightIndex <= count, isTrue, reason: "Invalid righ
t index"); |
| 376 Token leftToken = null; | 374 Token leftToken = null; |
| 377 Token rightToken = null; | 375 Token rightToken = null; |
| 378 Token token = _incrementalTokens; | 376 Token token = _incrementalTokens; |
| 379 if (leftIndex < 0) { | 377 if (leftIndex < 0) { |
| 380 leftToken = token.previous; | 378 leftToken = token.previous; |
| 381 } | 379 } |
| 382 for (int i = 0; i < count; i++) { | 380 for (int i = 0; i < count; i++) { |
| 383 JUnitTestCase.assertEquals(lexemes[i], token.lexeme); | 381 expect(token.lexeme, lexemes[i]); |
| 384 if (i == leftIndex) { | 382 if (i == leftIndex) { |
| 385 leftToken = token; | 383 leftToken = token; |
| 386 } | 384 } |
| 387 if (i == rightIndex) { | 385 if (i == rightIndex) { |
| 388 rightToken = token; | 386 rightToken = token; |
| 389 } | 387 } |
| 390 token = token.next; | 388 token = token.next; |
| 391 } | 389 } |
| 392 if (rightIndex >= count) { | 390 if (rightIndex >= count) { |
| 393 rightToken = token; | 391 rightToken = token; |
| 394 } | 392 } |
| 395 JUnitTestCase.assertSameMsg("Too many tokens", TokenType.EOF, token.type); | 393 expect(token.type, same(TokenType.EOF), reason: "Too many tokens"); |
| 396 if (leftIndex >= 0) { | 394 if (leftIndex >= 0) { |
| 397 JUnitTestCase.assertNotNull(leftToken); | 395 expect(leftToken, isNotNull); |
| 398 } | 396 } |
| 399 JUnitTestCase.assertSameMsg("Invalid left token", leftToken, _incrementalSca
nner.leftToken); | 397 expect(_incrementalScanner.leftToken, same(leftToken), reason: "Invalid left
token"); |
| 400 if (rightIndex >= 0) { | 398 if (rightIndex >= 0) { |
| 401 JUnitTestCase.assertNotNull(rightToken); | 399 expect(rightToken, isNotNull); |
| 402 } | 400 } |
| 403 JUnitTestCase.assertSameMsg("Invalid right token", rightToken, _incrementalS
canner.rightToken); | 401 expect(_incrementalScanner.rightToken, same(rightToken), reason: "Invalid ri
ght token"); |
| 404 } | 402 } |
| 405 | 403 |
| 406 /** | 404 /** |
| 407 * Given a description of the original and modified contents, perform an incre
mental scan of the | 405 * Given a description of the original and modified contents, perform an incre
mental scan of the |
| 408 * two pieces of text. Verify that the incremental scan produced the same toke
ns as those that | 406 * two pieces of text. Verify that the incremental scan produced the same toke
ns as those that |
| 409 * would be produced by a full scan of the new contents. | 407 * would be produced by a full scan of the new contents. |
| 410 * | 408 * |
| 411 * @param prefix the unchanged text before the edit region | 409 * @param prefix the unchanged text before the edit region |
| 412 * @param removed the text that was removed from the original contents | 410 * @param removed the text that was removed from the original contents |
| 413 * @param added the text that was added to the modified contents | 411 * @param added the text that was added to the modified contents |
| 414 * @param suffix the unchanged text after the edit region | 412 * @param suffix the unchanged text after the edit region |
| 415 */ | 413 */ |
| 416 void _scan(String prefix, String removed, String added, String suffix) { | 414 void _scan(String prefix, String removed, String added, String suffix) { |
| 417 // | 415 // |
| 418 // Compute the information needed to perform the test. | 416 // Compute the information needed to perform the test. |
| 419 // | 417 // |
| 420 String originalContents = "$prefix$removed$suffix"; | 418 String originalContents = "$prefix$removed$suffix"; |
| 421 String modifiedContents = "$prefix$added$suffix"; | 419 String modifiedContents = "$prefix$added$suffix"; |
| 422 int replaceStart = prefix.length; | 420 int replaceStart = prefix.length; |
| 423 Source source = new TestSource(); | 421 Source source = new TestSource(); |
| 424 // | 422 // |
| 425 // Scan the original contents. | 423 // Scan the original contents. |
| 426 // | 424 // |
| 427 GatheringErrorListener originalListener = new GatheringErrorListener(); | 425 GatheringErrorListener originalListener = new GatheringErrorListener(); |
| 428 Scanner originalScanner = new Scanner(source, new CharSequenceReader(origina
lContents), originalListener); | 426 Scanner originalScanner = new Scanner(source, new CharSequenceReader(origina
lContents), originalListener); |
| 429 _originalTokens = originalScanner.tokenize(); | 427 _originalTokens = originalScanner.tokenize(); |
| 430 JUnitTestCase.assertNotNull(_originalTokens); | 428 expect(_originalTokens, isNotNull); |
| 431 // | 429 // |
| 432 // Scan the modified contents. | 430 // Scan the modified contents. |
| 433 // | 431 // |
| 434 GatheringErrorListener modifiedListener = new GatheringErrorListener(); | 432 GatheringErrorListener modifiedListener = new GatheringErrorListener(); |
| 435 Scanner modifiedScanner = new Scanner(source, new CharSequenceReader(modifie
dContents), modifiedListener); | 433 Scanner modifiedScanner = new Scanner(source, new CharSequenceReader(modifie
dContents), modifiedListener); |
| 436 Token modifiedTokens = modifiedScanner.tokenize(); | 434 Token modifiedTokens = modifiedScanner.tokenize(); |
| 437 JUnitTestCase.assertNotNull(modifiedTokens); | 435 expect(modifiedTokens, isNotNull); |
| 438 // | 436 // |
| 439 // Incrementally scan the modified contents. | 437 // Incrementally scan the modified contents. |
| 440 // | 438 // |
| 441 GatheringErrorListener incrementalListener = new GatheringErrorListener(); | 439 GatheringErrorListener incrementalListener = new GatheringErrorListener(); |
| 442 _incrementalScanner = new IncrementalScanner(source, new CharSequenceReader(
modifiedContents), incrementalListener); | 440 _incrementalScanner = new IncrementalScanner(source, new CharSequenceReader(
modifiedContents), incrementalListener); |
| 443 _incrementalTokens = _incrementalScanner.rescan(_originalTokens, replaceStar
t, removed.length, added.length); | 441 _incrementalTokens = _incrementalScanner.rescan(_originalTokens, replaceStar
t, removed.length, added.length); |
| 444 // | 442 // |
| 445 // Validate that the results of the incremental scan are the same as the ful
l scan of the | 443 // Validate that the results of the incremental scan are the same as the ful
l scan of the |
| 446 // modified source. | 444 // modified source. |
| 447 // | 445 // |
| 448 Token incrementalToken = _incrementalTokens; | 446 Token incrementalToken = _incrementalTokens; |
| 449 JUnitTestCase.assertNotNull(incrementalToken); | 447 expect(incrementalToken, isNotNull); |
| 450 while (incrementalToken.type != TokenType.EOF && modifiedTokens.type != Toke
nType.EOF) { | 448 while (incrementalToken.type != TokenType.EOF && modifiedTokens.type != Toke
nType.EOF) { |
| 451 JUnitTestCase.assertSameMsg("Wrong type for token", modifiedTokens.type, i
ncrementalToken.type); | 449 expect(incrementalToken.type, same(modifiedTokens.type), reason: "Wrong ty
pe for token"); |
| 452 JUnitTestCase.assertEqualsMsg("Wrong offset for token", modifiedTokens.off
set, incrementalToken.offset); | 450 expect(incrementalToken.offset, modifiedTokens.offset, reason: "Wrong offs
et for token"); |
| 453 JUnitTestCase.assertEqualsMsg("Wrong length for token", modifiedTokens.len
gth, incrementalToken.length); | 451 expect(incrementalToken.length, modifiedTokens.length, reason: "Wrong leng
th for token"); |
| 454 JUnitTestCase.assertEqualsMsg("Wrong lexeme for token", modifiedTokens.lex
eme, incrementalToken.lexeme); | 452 expect(incrementalToken.lexeme, modifiedTokens.lexeme, reason: "Wrong lexe
me for token"); |
| 455 incrementalToken = incrementalToken.next; | 453 incrementalToken = incrementalToken.next; |
| 456 modifiedTokens = modifiedTokens.next; | 454 modifiedTokens = modifiedTokens.next; |
| 457 } | 455 } |
| 458 JUnitTestCase.assertSameMsg("Too many tokens", TokenType.EOF, incrementalTok
en.type); | 456 expect(incrementalToken.type, same(TokenType.EOF), reason: "Too many tokens"
); |
| 459 JUnitTestCase.assertSameMsg("Not enough tokens", TokenType.EOF, modifiedToke
ns.type); | 457 expect(modifiedTokens.type, same(TokenType.EOF), reason: "Not enough tokens"
); |
| 460 // TODO(brianwilkerson) Verify that the errors are correct? | 458 // TODO(brianwilkerson) Verify that the errors are correct? |
| 461 } | 459 } |
| 462 } | 460 } |
| 463 | 461 |
| 464 class KeywordStateTest extends JUnitTestCase { | 462 class KeywordStateTest { |
| 465 void test_KeywordState() { | 463 void test_KeywordState() { |
| 466 // | 464 // |
| 467 // Generate the test data to be scanned. | 465 // Generate the test data to be scanned. |
| 468 // | 466 // |
| 469 List<Keyword> keywords = Keyword.values; | 467 List<Keyword> keywords = Keyword.values; |
| 470 int keywordCount = keywords.length; | 468 int keywordCount = keywords.length; |
| 471 List<String> textToTest = new List<String>(keywordCount * 3); | 469 List<String> textToTest = new List<String>(keywordCount * 3); |
| 472 for (int i = 0; i < keywordCount; i++) { | 470 for (int i = 0; i < keywordCount; i++) { |
| 473 String syntax = keywords[i].syntax; | 471 String syntax = keywords[i].syntax; |
| 474 textToTest[i] = syntax; | 472 textToTest[i] = syntax; |
| 475 textToTest[i + keywordCount] = "${syntax}x"; | 473 textToTest[i + keywordCount] = "${syntax}x"; |
| 476 textToTest[i + keywordCount * 2] = syntax.substring(0, syntax.length - 1); | 474 textToTest[i + keywordCount * 2] = syntax.substring(0, syntax.length - 1); |
| 477 } | 475 } |
| 478 // | 476 // |
| 479 // Scan each of the identifiers. | 477 // Scan each of the identifiers. |
| 480 // | 478 // |
| 481 KeywordState firstState = KeywordState.KEYWORD_STATE; | 479 KeywordState firstState = KeywordState.KEYWORD_STATE; |
| 482 for (int i = 0; i < textToTest.length; i++) { | 480 for (int i = 0; i < textToTest.length; i++) { |
| 483 String text = textToTest[i]; | 481 String text = textToTest[i]; |
| 484 int index = 0; | 482 int index = 0; |
| 485 int length = text.length; | 483 int length = text.length; |
| 486 KeywordState state = firstState; | 484 KeywordState state = firstState; |
| 487 while (index < length && state != null) { | 485 while (index < length && state != null) { |
| 488 state = state.next(text.codeUnitAt(index)); | 486 state = state.next(text.codeUnitAt(index)); |
| 489 index++; | 487 index++; |
| 490 } | 488 } |
| 491 if (i < keywordCount) { | 489 if (i < keywordCount) { |
| 492 // keyword | 490 // keyword |
| 493 JUnitTestCase.assertNotNull(state); | 491 expect(state, isNotNull); |
| 494 JUnitTestCase.assertNotNull(state.keyword()); | 492 expect(state.keyword(), isNotNull); |
| 495 JUnitTestCase.assertEquals(keywords[i], state.keyword()); | 493 expect(state.keyword(), keywords[i]); |
| 496 } else if (i < keywordCount * 2) { | 494 } else if (i < keywordCount * 2) { |
| 497 // keyword + "x" | 495 // keyword + "x" |
| 498 JUnitTestCase.assertNull(state); | 496 expect(state, isNull); |
| 499 } else { | 497 } else { |
| 500 // keyword.substring(0, keyword.length() - 1) | 498 // keyword.substring(0, keyword.length() - 1) |
| 501 JUnitTestCase.assertNotNull(state); | 499 expect(state, isNotNull); |
| 502 } | 500 } |
| 503 } | 501 } |
| 504 } | 502 } |
| 505 } | 503 } |
| 506 | 504 |
| 507 class ScannerTest extends JUnitTestCase { | 505 class ScannerTest { |
| 508 void fail_incomplete_string_interpolation() { | 506 void fail_incomplete_string_interpolation() { |
| 509 // https://code.google.com/p/dart/issues/detail?id=18073 | 507 // https://code.google.com/p/dart/issues/detail?id=18073 |
| 510 _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"fo
o \${bar", [ | 508 _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"fo
o \${bar", [ |
| 511 new StringToken(TokenType.STRING, "\"foo ", 0), | 509 new StringToken(TokenType.STRING, "\"foo ", 0), |
| 512 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), | 510 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), |
| 513 new StringToken(TokenType.IDENTIFIER, "bar", 7)]); | 511 new StringToken(TokenType.IDENTIFIER, "bar", 7)]); |
| 514 } | 512 } |
| 515 | 513 |
| 516 void test_ampersand() { | 514 void test_ampersand() { |
| 517 _assertToken(TokenType.AMPERSAND, "&"); | 515 _assertToken(TokenType.AMPERSAND, "&"); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 } | 580 } |
| 583 | 581 |
| 584 void test_comma() { | 582 void test_comma() { |
| 585 _assertToken(TokenType.COMMA, ","); | 583 _assertToken(TokenType.COMMA, ","); |
| 586 } | 584 } |
| 587 | 585 |
| 588 void test_comment_disabled_multi() { | 586 void test_comment_disabled_multi() { |
| 589 Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ ")
, AnalysisErrorListener.NULL_LISTENER); | 587 Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ ")
, AnalysisErrorListener.NULL_LISTENER); |
| 590 scanner.preserveComments = false; | 588 scanner.preserveComments = false; |
| 591 Token token = scanner.tokenize(); | 589 Token token = scanner.tokenize(); |
| 592 JUnitTestCase.assertNotNull(token); | 590 expect(token, isNotNull); |
| 593 JUnitTestCase.assertNull(token.precedingComments); | 591 expect(token.precedingComments, isNull); |
| 594 } | 592 } |
| 595 | 593 |
| 596 void test_comment_multi() { | 594 void test_comment_multi() { |
| 597 _assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment */"); | 595 _assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment */"); |
| 598 } | 596 } |
| 599 | 597 |
| 600 void test_comment_multi_unterminated() { | 598 void test_comment_multi_unterminated() { |
| 601 _assertError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, 3, "/* x"); | 599 _assertError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, 3, "/* x"); |
| 602 } | 600 } |
| 603 | 601 |
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 _assertToken(TokenType.SEMICOLON, ";"); | 1048 _assertToken(TokenType.SEMICOLON, ";"); |
| 1051 } | 1049 } |
| 1052 | 1050 |
| 1053 void test_setSourceStart() { | 1051 void test_setSourceStart() { |
| 1054 int offsetDelta = 42; | 1052 int offsetDelta = 42; |
| 1055 GatheringErrorListener listener = new GatheringErrorListener(); | 1053 GatheringErrorListener listener = new GatheringErrorListener(); |
| 1056 Scanner scanner = new Scanner(null, new SubSequenceReader("a", offsetDelta),
listener); | 1054 Scanner scanner = new Scanner(null, new SubSequenceReader("a", offsetDelta),
listener); |
| 1057 scanner.setSourceStart(3, 9); | 1055 scanner.setSourceStart(3, 9); |
| 1058 scanner.tokenize(); | 1056 scanner.tokenize(); |
| 1059 List<int> lineStarts = scanner.lineStarts; | 1057 List<int> lineStarts = scanner.lineStarts; |
| 1060 JUnitTestCase.assertNotNull(lineStarts); | 1058 expect(lineStarts, isNotNull); |
| 1061 JUnitTestCase.assertEquals(3, lineStarts.length); | 1059 expect(lineStarts.length, 3); |
| 1062 JUnitTestCase.assertEquals(33, lineStarts[2]); | 1060 expect(lineStarts[2], 33); |
| 1063 } | 1061 } |
| 1064 | 1062 |
| 1065 void test_slash() { | 1063 void test_slash() { |
| 1066 _assertToken(TokenType.SLASH, "/"); | 1064 _assertToken(TokenType.SLASH, "/"); |
| 1067 } | 1065 } |
| 1068 | 1066 |
| 1069 void test_slash_eq() { | 1067 void test_slash_eq() { |
| 1070 _assertToken(TokenType.SLASH_EQ, "/="); | 1068 _assertToken(TokenType.SLASH_EQ, "/="); |
| 1071 } | 1069 } |
| 1072 | 1070 |
| 1073 void test_star() { | 1071 void test_star() { |
| 1074 _assertToken(TokenType.STAR, "*"); | 1072 _assertToken(TokenType.STAR, "*"); |
| 1075 } | 1073 } |
| 1076 | 1074 |
| 1077 void test_star_eq() { | 1075 void test_star_eq() { |
| 1078 _assertToken(TokenType.STAR_EQ, "*="); | 1076 _assertToken(TokenType.STAR_EQ, "*="); |
| 1079 } | 1077 } |
| 1080 | 1078 |
| 1081 void test_startAndEnd() { | 1079 void test_startAndEnd() { |
| 1082 Token token = _scan("a"); | 1080 Token token = _scan("a"); |
| 1083 Token previous = token.previous; | 1081 Token previous = token.previous; |
| 1084 JUnitTestCase.assertEquals(token, previous.next); | 1082 expect(previous.next, token); |
| 1085 JUnitTestCase.assertEquals(previous, previous.previous); | 1083 expect(previous.previous, previous); |
| 1086 Token next = token.next; | 1084 Token next = token.next; |
| 1087 JUnitTestCase.assertEquals(next, next.next); | 1085 expect(next.next, next); |
| 1088 JUnitTestCase.assertEquals(token, next.previous); | 1086 expect(next.previous, token); |
| 1089 } | 1087 } |
| 1090 | 1088 |
| 1091 void test_string_multi_double() { | 1089 void test_string_multi_double() { |
| 1092 _assertToken(TokenType.STRING, "\"\"\"line1\nline2\"\"\""); | 1090 _assertToken(TokenType.STRING, "\"\"\"line1\nline2\"\"\""); |
| 1093 } | 1091 } |
| 1094 | 1092 |
| 1095 void test_string_multi_embeddedQuotes() { | 1093 void test_string_multi_embeddedQuotes() { |
| 1096 _assertToken(TokenType.STRING, "\"\"\"line1\n\"\"\nline2\"\"\""); | 1094 _assertToken(TokenType.STRING, "\"\"\"line1\n\"\"\nline2\"\"\""); |
| 1097 } | 1095 } |
| 1098 | 1096 |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1301 void test_unclosedPairInInterpolation() { | 1299 void test_unclosedPairInInterpolation() { |
| 1302 GatheringErrorListener listener = new GatheringErrorListener(); | 1300 GatheringErrorListener listener = new GatheringErrorListener(); |
| 1303 _scanWithListener("'\${(}'", listener); | 1301 _scanWithListener("'\${(}'", listener); |
| 1304 } | 1302 } |
| 1305 | 1303 |
| 1306 void _assertComment(TokenType commentType, String source) { | 1304 void _assertComment(TokenType commentType, String source) { |
| 1307 // | 1305 // |
| 1308 // Test without a trailing end-of-line marker | 1306 // Test without a trailing end-of-line marker |
| 1309 // | 1307 // |
| 1310 Token token = _scan(source); | 1308 Token token = _scan(source); |
| 1311 JUnitTestCase.assertNotNull(token); | 1309 expect(token, isNotNull); |
| 1312 JUnitTestCase.assertEquals(TokenType.EOF, token.type); | 1310 expect(token.type, TokenType.EOF); |
| 1313 Token comment = token.precedingComments; | 1311 Token comment = token.precedingComments; |
| 1314 JUnitTestCase.assertNotNull(comment); | 1312 expect(comment, isNotNull); |
| 1315 JUnitTestCase.assertEquals(commentType, comment.type); | 1313 expect(comment.type, commentType); |
| 1316 JUnitTestCase.assertEquals(0, comment.offset); | 1314 expect(comment.offset, 0); |
| 1317 JUnitTestCase.assertEquals(source.length, comment.length); | 1315 expect(comment.length, source.length); |
| 1318 JUnitTestCase.assertEquals(source, comment.lexeme); | 1316 expect(comment.lexeme, source); |
| 1319 // | 1317 // |
| 1320 // Test with a trailing end-of-line marker | 1318 // Test with a trailing end-of-line marker |
| 1321 // | 1319 // |
| 1322 token = _scan("$source\n"); | 1320 token = _scan("$source\n"); |
| 1323 JUnitTestCase.assertNotNull(token); | 1321 expect(token, isNotNull); |
| 1324 JUnitTestCase.assertEquals(TokenType.EOF, token.type); | 1322 expect(token.type, TokenType.EOF); |
| 1325 comment = token.precedingComments; | 1323 comment = token.precedingComments; |
| 1326 JUnitTestCase.assertNotNull(comment); | 1324 expect(comment, isNotNull); |
| 1327 JUnitTestCase.assertEquals(commentType, comment.type); | 1325 expect(comment.type, commentType); |
| 1328 JUnitTestCase.assertEquals(0, comment.offset); | 1326 expect(comment.offset, 0); |
| 1329 JUnitTestCase.assertEquals(source.length, comment.length); | 1327 expect(comment.length, source.length); |
| 1330 JUnitTestCase.assertEquals(source, comment.lexeme); | 1328 expect(comment.lexeme, source); |
| 1331 } | 1329 } |
| 1332 | 1330 |
| 1333 /** | 1331 /** |
| 1334 * Assert that scanning the given source produces an error with the given code
. | 1332 * Assert that scanning the given source produces an error with the given code
. |
| 1335 * | 1333 * |
| 1336 * @param expectedError the error that should be produced | 1334 * @param expectedError the error that should be produced |
| 1337 * @param expectedOffset the string offset that should be associated with the
error | 1335 * @param expectedOffset the string offset that should be associated with the
error |
| 1338 * @param source the source to be scanned to produce the error | 1336 * @param source the source to be scanned to produce the error |
| 1339 */ | 1337 */ |
| 1340 void _assertError(ScannerErrorCode expectedError, int expectedOffset, String s
ource) { | 1338 void _assertError(ScannerErrorCode expectedError, int expectedOffset, String s
ource) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1360 } | 1358 } |
| 1361 | 1359 |
| 1362 /** | 1360 /** |
| 1363 * Assert that when scanned the given source contains a single keyword token w
ith the same lexeme | 1361 * Assert that when scanned the given source contains a single keyword token w
ith the same lexeme |
| 1364 * as the original source. | 1362 * as the original source. |
| 1365 * | 1363 * |
| 1366 * @param source the source to be scanned | 1364 * @param source the source to be scanned |
| 1367 */ | 1365 */ |
| 1368 void _assertKeywordToken(String source) { | 1366 void _assertKeywordToken(String source) { |
| 1369 Token token = _scan(source); | 1367 Token token = _scan(source); |
| 1370 JUnitTestCase.assertNotNull(token); | 1368 expect(token, isNotNull); |
| 1371 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); | 1369 expect(token.type, TokenType.KEYWORD); |
| 1372 JUnitTestCase.assertEquals(0, token.offset); | 1370 expect(token.offset, 0); |
| 1373 JUnitTestCase.assertEquals(source.length, token.length); | 1371 expect(token.length, source.length); |
| 1374 JUnitTestCase.assertEquals(source, token.lexeme); | 1372 expect(token.lexeme, source); |
| 1375 Object value = token.value(); | 1373 Object value = token.value(); |
| 1376 JUnitTestCase.assertTrue(value is Keyword); | 1374 expect(value is Keyword, isTrue); |
| 1377 JUnitTestCase.assertEquals(source, (value as Keyword).syntax); | 1375 expect((value as Keyword).syntax, source); |
| 1378 token = _scan(" $source "); | 1376 token = _scan(" $source "); |
| 1379 JUnitTestCase.assertNotNull(token); | 1377 expect(token, isNotNull); |
| 1380 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); | 1378 expect(token.type, TokenType.KEYWORD); |
| 1381 JUnitTestCase.assertEquals(1, token.offset); | 1379 expect(token.offset, 1); |
| 1382 JUnitTestCase.assertEquals(source.length, token.length); | 1380 expect(token.length, source.length); |
| 1383 JUnitTestCase.assertEquals(source, token.lexeme); | 1381 expect(token.lexeme, source); |
| 1384 value = token.value(); | 1382 value = token.value(); |
| 1385 JUnitTestCase.assertTrue(value is Keyword); | 1383 expect(value is Keyword, isTrue); |
| 1386 JUnitTestCase.assertEquals(source, (value as Keyword).syntax); | 1384 expect((value as Keyword).syntax, source); |
| 1387 JUnitTestCase.assertEquals(TokenType.EOF, token.next.type); | 1385 expect(token.next.type, TokenType.EOF); |
| 1388 } | 1386 } |
| 1389 | 1387 |
| 1390 void _assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expecte
dLocations) { | 1388 void _assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expecte
dLocations) { |
| 1391 GatheringErrorListener listener = new GatheringErrorListener(); | 1389 GatheringErrorListener listener = new GatheringErrorListener(); |
| 1392 _scanWithListener(source, listener); | 1390 _scanWithListener(source, listener); |
| 1393 listener.assertNoErrors(); | 1391 listener.assertNoErrors(); |
| 1394 LineInfo info = listener.getLineInfo(new TestSource()); | 1392 LineInfo info = listener.getLineInfo(new TestSource()); |
| 1395 JUnitTestCase.assertNotNull(info); | 1393 expect(info, isNotNull); |
| 1396 for (ScannerTest_ExpectedLocation expectedLocation in expectedLocations) { | 1394 for (ScannerTest_ExpectedLocation expectedLocation in expectedLocations) { |
| 1397 LineInfo_Location location = info.getLocation(expectedLocation._offset); | 1395 LineInfo_Location location = info.getLocation(expectedLocation._offset); |
| 1398 JUnitTestCase.assertEquals(expectedLocation._lineNumber, location.lineNumb
er); | 1396 expect(location.lineNumber, expectedLocation._lineNumber); |
| 1399 JUnitTestCase.assertEquals(expectedLocation._columnNumber, location.column
Number); | 1397 expect(location.columnNumber, expectedLocation._columnNumber); |
| 1400 } | 1398 } |
| 1401 } | 1399 } |
| 1402 | 1400 |
| 1403 /** | 1401 /** |
| 1404 * Assert that the token scanned from the given source has the expected type. | 1402 * Assert that the token scanned from the given source has the expected type. |
| 1405 * | 1403 * |
| 1406 * @param expectedType the expected type of the token | 1404 * @param expectedType the expected type of the token |
| 1407 * @param source the source to be scanned to produce the actual token | 1405 * @param source the source to be scanned to produce the actual token |
| 1408 */ | 1406 */ |
| 1409 Token _assertToken(TokenType expectedType, String source) { | 1407 Token _assertToken(TokenType expectedType, String source) { |
| 1410 Token originalToken = _scan(source); | 1408 Token originalToken = _scan(source); |
| 1411 JUnitTestCase.assertNotNull(originalToken); | 1409 expect(originalToken, isNotNull); |
| 1412 JUnitTestCase.assertEquals(expectedType, originalToken.type); | 1410 expect(originalToken.type, expectedType); |
| 1413 JUnitTestCase.assertEquals(0, originalToken.offset); | 1411 expect(originalToken.offset, 0); |
| 1414 JUnitTestCase.assertEquals(source.length, originalToken.length); | 1412 expect(originalToken.length, source.length); |
| 1415 JUnitTestCase.assertEquals(source, originalToken.lexeme); | 1413 expect(originalToken.lexeme, source); |
| 1416 if (expectedType == TokenType.SCRIPT_TAG) { | 1414 if (expectedType == TokenType.SCRIPT_TAG) { |
| 1417 // Adding space before the script tag is not allowed, and adding text at t
he end changes nothing. | 1415 // Adding space before the script tag is not allowed, and adding text at t
he end changes nothing. |
| 1418 return originalToken; | 1416 return originalToken; |
| 1419 } else if (expectedType == TokenType.SINGLE_LINE_COMMENT) { | 1417 } else if (expectedType == TokenType.SINGLE_LINE_COMMENT) { |
| 1420 // Adding space to an end-of-line comment changes the comment. | 1418 // Adding space to an end-of-line comment changes the comment. |
| 1421 Token tokenWithSpaces = _scan(" $source"); | 1419 Token tokenWithSpaces = _scan(" $source"); |
| 1422 JUnitTestCase.assertNotNull(tokenWithSpaces); | 1420 expect(tokenWithSpaces, isNotNull); |
| 1423 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type); | 1421 expect(tokenWithSpaces.type, expectedType); |
| 1424 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset); | 1422 expect(tokenWithSpaces.offset, 1); |
| 1425 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length); | 1423 expect(tokenWithSpaces.length, source.length); |
| 1426 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme); | 1424 expect(tokenWithSpaces.lexeme, source); |
| 1427 return originalToken; | 1425 return originalToken; |
| 1428 } else if (expectedType == TokenType.INT || expectedType == TokenType.DOUBLE
) { | 1426 } else if (expectedType == TokenType.INT || expectedType == TokenType.DOUBLE
) { |
| 1429 Token tokenWithLowerD = _scan("${source}d"); | 1427 Token tokenWithLowerD = _scan("${source}d"); |
| 1430 JUnitTestCase.assertNotNull(tokenWithLowerD); | 1428 expect(tokenWithLowerD, isNotNull); |
| 1431 JUnitTestCase.assertEquals(expectedType, tokenWithLowerD.type); | 1429 expect(tokenWithLowerD.type, expectedType); |
| 1432 JUnitTestCase.assertEquals(0, tokenWithLowerD.offset); | 1430 expect(tokenWithLowerD.offset, 0); |
| 1433 JUnitTestCase.assertEquals(source.length, tokenWithLowerD.length); | 1431 expect(tokenWithLowerD.length, source.length); |
| 1434 JUnitTestCase.assertEquals(source, tokenWithLowerD.lexeme); | 1432 expect(tokenWithLowerD.lexeme, source); |
| 1435 Token tokenWithUpperD = _scan("${source}D"); | 1433 Token tokenWithUpperD = _scan("${source}D"); |
| 1436 JUnitTestCase.assertNotNull(tokenWithUpperD); | 1434 expect(tokenWithUpperD, isNotNull); |
| 1437 JUnitTestCase.assertEquals(expectedType, tokenWithUpperD.type); | 1435 expect(tokenWithUpperD.type, expectedType); |
| 1438 JUnitTestCase.assertEquals(0, tokenWithUpperD.offset); | 1436 expect(tokenWithUpperD.offset, 0); |
| 1439 JUnitTestCase.assertEquals(source.length, tokenWithUpperD.length); | 1437 expect(tokenWithUpperD.length, source.length); |
| 1440 JUnitTestCase.assertEquals(source, tokenWithUpperD.lexeme); | 1438 expect(tokenWithUpperD.lexeme, source); |
| 1441 } | 1439 } |
| 1442 Token tokenWithSpaces = _scan(" $source "); | 1440 Token tokenWithSpaces = _scan(" $source "); |
| 1443 JUnitTestCase.assertNotNull(tokenWithSpaces); | 1441 expect(tokenWithSpaces, isNotNull); |
| 1444 JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type); | 1442 expect(tokenWithSpaces.type, expectedType); |
| 1445 JUnitTestCase.assertEquals(1, tokenWithSpaces.offset); | 1443 expect(tokenWithSpaces.offset, 1); |
| 1446 JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length); | 1444 expect(tokenWithSpaces.length, source.length); |
| 1447 JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme); | 1445 expect(tokenWithSpaces.lexeme, source); |
| 1448 JUnitTestCase.assertEquals(TokenType.EOF, originalToken.next.type); | 1446 expect(originalToken.next.type, TokenType.EOF); |
| 1449 return originalToken; | 1447 return originalToken; |
| 1450 } | 1448 } |
| 1451 | 1449 |
| 1452 /** | 1450 /** |
| 1453 * Assert that when scanned the given source contains a sequence of tokens ide
ntical to the given | 1451 * Assert that when scanned the given source contains a sequence of tokens ide
ntical to the given |
| 1454 * tokens. | 1452 * tokens. |
| 1455 * | 1453 * |
| 1456 * @param source the source to be scanned | 1454 * @param source the source to be scanned |
| 1457 * @param expectedTokens the tokens that are expected to be in the source | 1455 * @param expectedTokens the tokens that are expected to be in the source |
| 1458 */ | 1456 */ |
| 1459 void _assertTokens(String source, List<Token> expectedTokens) { | 1457 void _assertTokens(String source, List<Token> expectedTokens) { |
| 1460 Token token = _scan(source); | 1458 Token token = _scan(source); |
| 1461 _checkTokens(token, expectedTokens); | 1459 _checkTokens(token, expectedTokens); |
| 1462 } | 1460 } |
| 1463 | 1461 |
| 1464 void _checkTokens(Token firstToken, List<Token> expectedTokens) { | 1462 void _checkTokens(Token firstToken, List<Token> expectedTokens) { |
| 1465 JUnitTestCase.assertNotNull(firstToken); | 1463 expect(firstToken, isNotNull); |
| 1466 Token token = firstToken; | 1464 Token token = firstToken; |
| 1467 for (int i = 0; i < expectedTokens.length; i++) { | 1465 for (int i = 0; i < expectedTokens.length; i++) { |
| 1468 Token expectedToken = expectedTokens[i]; | 1466 Token expectedToken = expectedTokens[i]; |
| 1469 JUnitTestCase.assertEqualsMsg("Wrong type for token $i", expectedToken.typ
e, token.type); | 1467 expect(token.type, expectedToken.type, reason: "Wrong type for token $i"); |
| 1470 JUnitTestCase.assertEqualsMsg("Wrong offset for token $i", expectedToken.o
ffset, token.offset); | 1468 expect(token.offset, expectedToken.offset, reason: "Wrong offset for token
$i"); |
| 1471 JUnitTestCase.assertEqualsMsg("Wrong length for token $i", expectedToken.l
ength, token.length); | 1469 expect(token.length, expectedToken.length, reason: "Wrong length for token
$i"); |
| 1472 JUnitTestCase.assertEqualsMsg("Wrong lexeme for token $i", expectedToken.l
exeme, token.lexeme); | 1470 expect(token.lexeme, expectedToken.lexeme, reason: "Wrong lexeme for token
$i"); |
| 1473 token = token.next; | 1471 token = token.next; |
| 1474 JUnitTestCase.assertNotNull(token); | 1472 expect(token, isNotNull); |
| 1475 } | 1473 } |
| 1476 JUnitTestCase.assertEquals(TokenType.EOF, token.type); | 1474 expect(token.type, TokenType.EOF); |
| 1477 } | 1475 } |
| 1478 | 1476 |
| 1479 Token _scan(String source) { | 1477 Token _scan(String source) { |
| 1480 GatheringErrorListener listener = new GatheringErrorListener(); | 1478 GatheringErrorListener listener = new GatheringErrorListener(); |
| 1481 Token token = _scanWithListener(source, listener); | 1479 Token token = _scanWithListener(source, listener); |
| 1482 listener.assertNoErrors(); | 1480 listener.assertNoErrors(); |
| 1483 return token; | 1481 return token; |
| 1484 } | 1482 } |
| 1485 | 1483 |
| 1486 Token _scanWithListener(String source, GatheringErrorListener listener) { | 1484 Token _scanWithListener(String source, GatheringErrorListener listener) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1512 class TokenStreamValidator { | 1510 class TokenStreamValidator { |
| 1513 /** | 1511 /** |
| 1514 * Validate that the stream of tokens that starts with the given token is corr
ect. | 1512 * Validate that the stream of tokens that starts with the given token is corr
ect. |
| 1515 * | 1513 * |
| 1516 * @param token the first token in the stream of tokens to be validated | 1514 * @param token the first token in the stream of tokens to be validated |
| 1517 */ | 1515 */ |
| 1518 void validate(Token token) { | 1516 void validate(Token token) { |
| 1519 StringBuffer buffer = new StringBuffer(); | 1517 StringBuffer buffer = new StringBuffer(); |
| 1520 _validateStream(buffer, token); | 1518 _validateStream(buffer, token); |
| 1521 if (buffer.length > 0) { | 1519 if (buffer.length > 0) { |
| 1522 JUnitTestCase.fail(buffer.toString()); | 1520 fail(buffer.toString()); |
| 1523 } | 1521 } |
| 1524 } | 1522 } |
| 1525 | 1523 |
| 1526 void _validateStream(StringBuffer buffer, Token token) { | 1524 void _validateStream(StringBuffer buffer, Token token) { |
| 1527 if (token == null) { | 1525 if (token == null) { |
| 1528 return; | 1526 return; |
| 1529 } | 1527 } |
| 1530 Token previousToken = null; | 1528 Token previousToken = null; |
| 1531 int previousEnd = -1; | 1529 int previousEnd = -1; |
| 1532 Token currentToken = token; | 1530 Token currentToken = token; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1564 buffer.write("', "); | 1562 buffer.write("', "); |
| 1565 buffer.write(token.offset); | 1563 buffer.write(token.offset); |
| 1566 buffer.write(", "); | 1564 buffer.write(", "); |
| 1567 buffer.write(token.length); | 1565 buffer.write(token.length); |
| 1568 buffer.write("]"); | 1566 buffer.write("]"); |
| 1569 } | 1567 } |
| 1570 } | 1568 } |
| 1571 | 1569 |
| 1572 class TokenTypeTest extends EngineTestCase { | 1570 class TokenTypeTest extends EngineTestCase { |
| 1573 void test_isOperator() { | 1571 void test_isOperator() { |
| 1574 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator); | 1572 expect(TokenType.AMPERSAND.isOperator, isTrue); |
| 1575 JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator); | 1573 expect(TokenType.AMPERSAND_AMPERSAND.isOperator, isTrue); |
| 1576 JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator); | 1574 expect(TokenType.AMPERSAND_EQ.isOperator, isTrue); |
| 1577 JUnitTestCase.assertTrue(TokenType.BANG.isOperator); | 1575 expect(TokenType.BANG.isOperator, isTrue); |
| 1578 JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator); | 1576 expect(TokenType.BANG_EQ.isOperator, isTrue); |
| 1579 JUnitTestCase.assertTrue(TokenType.BAR.isOperator); | 1577 expect(TokenType.BAR.isOperator, isTrue); |
| 1580 JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator); | 1578 expect(TokenType.BAR_BAR.isOperator, isTrue); |
| 1581 JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator); | 1579 expect(TokenType.BAR_EQ.isOperator, isTrue); |
| 1582 JUnitTestCase.assertTrue(TokenType.CARET.isOperator); | 1580 expect(TokenType.CARET.isOperator, isTrue); |
| 1583 JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator); | 1581 expect(TokenType.CARET_EQ.isOperator, isTrue); |
| 1584 JUnitTestCase.assertTrue(TokenType.EQ.isOperator); | 1582 expect(TokenType.EQ.isOperator, isTrue); |
| 1585 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator); | 1583 expect(TokenType.EQ_EQ.isOperator, isTrue); |
| 1586 JUnitTestCase.assertTrue(TokenType.GT.isOperator); | 1584 expect(TokenType.GT.isOperator, isTrue); |
| 1587 JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator); | 1585 expect(TokenType.GT_EQ.isOperator, isTrue); |
| 1588 JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator); | 1586 expect(TokenType.GT_GT.isOperator, isTrue); |
| 1589 JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator); | 1587 expect(TokenType.GT_GT_EQ.isOperator, isTrue); |
| 1590 JUnitTestCase.assertTrue(TokenType.INDEX.isOperator); | 1588 expect(TokenType.INDEX.isOperator, isTrue); |
| 1591 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator); | 1589 expect(TokenType.INDEX_EQ.isOperator, isTrue); |
| 1592 JUnitTestCase.assertTrue(TokenType.IS.isOperator); | 1590 expect(TokenType.IS.isOperator, isTrue); |
| 1593 JUnitTestCase.assertTrue(TokenType.LT.isOperator); | 1591 expect(TokenType.LT.isOperator, isTrue); |
| 1594 JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator); | 1592 expect(TokenType.LT_EQ.isOperator, isTrue); |
| 1595 JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator); | 1593 expect(TokenType.LT_LT.isOperator, isTrue); |
| 1596 JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator); | 1594 expect(TokenType.LT_LT_EQ.isOperator, isTrue); |
| 1597 JUnitTestCase.assertTrue(TokenType.MINUS.isOperator); | 1595 expect(TokenType.MINUS.isOperator, isTrue); |
| 1598 JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator); | 1596 expect(TokenType.MINUS_EQ.isOperator, isTrue); |
| 1599 JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator); | 1597 expect(TokenType.MINUS_MINUS.isOperator, isTrue); |
| 1600 JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator); | 1598 expect(TokenType.PERCENT.isOperator, isTrue); |
| 1601 JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator); | 1599 expect(TokenType.PERCENT_EQ.isOperator, isTrue); |
| 1602 JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator); | 1600 expect(TokenType.PERIOD_PERIOD.isOperator, isTrue); |
| 1603 JUnitTestCase.assertTrue(TokenType.PLUS.isOperator); | 1601 expect(TokenType.PLUS.isOperator, isTrue); |
| 1604 JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator); | 1602 expect(TokenType.PLUS_EQ.isOperator, isTrue); |
| 1605 JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator); | 1603 expect(TokenType.PLUS_PLUS.isOperator, isTrue); |
| 1606 JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator); | 1604 expect(TokenType.QUESTION.isOperator, isTrue); |
| 1607 JUnitTestCase.assertTrue(TokenType.SLASH.isOperator); | 1605 expect(TokenType.SLASH.isOperator, isTrue); |
| 1608 JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator); | 1606 expect(TokenType.SLASH_EQ.isOperator, isTrue); |
| 1609 JUnitTestCase.assertTrue(TokenType.STAR.isOperator); | 1607 expect(TokenType.STAR.isOperator, isTrue); |
| 1610 JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator); | 1608 expect(TokenType.STAR_EQ.isOperator, isTrue); |
| 1611 JUnitTestCase.assertTrue(TokenType.TILDE.isOperator); | 1609 expect(TokenType.TILDE.isOperator, isTrue); |
| 1612 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator); | 1610 expect(TokenType.TILDE_SLASH.isOperator, isTrue); |
| 1613 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator); | 1611 expect(TokenType.TILDE_SLASH_EQ.isOperator, isTrue); |
| 1614 } | 1612 } |
| 1615 | 1613 |
| 1616 void test_isUserDefinableOperator() { | 1614 void test_isUserDefinableOperator() { |
| 1617 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator); | 1615 expect(TokenType.AMPERSAND.isUserDefinableOperator, isTrue); |
| 1618 JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator); | 1616 expect(TokenType.BAR.isUserDefinableOperator, isTrue); |
| 1619 JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator); | 1617 expect(TokenType.CARET.isUserDefinableOperator, isTrue); |
| 1620 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator); | 1618 expect(TokenType.EQ_EQ.isUserDefinableOperator, isTrue); |
| 1621 JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator); | 1619 expect(TokenType.GT.isUserDefinableOperator, isTrue); |
| 1622 JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator); | 1620 expect(TokenType.GT_EQ.isUserDefinableOperator, isTrue); |
| 1623 JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator); | 1621 expect(TokenType.GT_GT.isUserDefinableOperator, isTrue); |
| 1624 JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator); | 1622 expect(TokenType.INDEX.isUserDefinableOperator, isTrue); |
| 1625 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator); | 1623 expect(TokenType.INDEX_EQ.isUserDefinableOperator, isTrue); |
| 1626 JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator); | 1624 expect(TokenType.LT.isUserDefinableOperator, isTrue); |
| 1627 JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator); | 1625 expect(TokenType.LT_EQ.isUserDefinableOperator, isTrue); |
| 1628 JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator); | 1626 expect(TokenType.LT_LT.isUserDefinableOperator, isTrue); |
| 1629 JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator); | 1627 expect(TokenType.MINUS.isUserDefinableOperator, isTrue); |
| 1630 JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator); | 1628 expect(TokenType.PERCENT.isUserDefinableOperator, isTrue); |
| 1631 JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator); | 1629 expect(TokenType.PLUS.isUserDefinableOperator, isTrue); |
| 1632 JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator); | 1630 expect(TokenType.SLASH.isUserDefinableOperator, isTrue); |
| 1633 JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator); | 1631 expect(TokenType.STAR.isUserDefinableOperator, isTrue); |
| 1634 JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator); | 1632 expect(TokenType.TILDE.isUserDefinableOperator, isTrue); |
| 1635 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator); | 1633 expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue); |
| 1636 } | 1634 } |
| 1637 } | 1635 } |
| 1638 | 1636 |
| 1639 main() { | 1637 main() { |
| 1640 _ut.groupSep = ' | '; | 1638 groupSep = ' | '; |
| 1641 runReflectiveTests(CharSequenceReaderTest); | 1639 runReflectiveTests(CharSequenceReaderTest); |
| 1642 runReflectiveTests(IncrementalScannerTest); | 1640 runReflectiveTests(IncrementalScannerTest); |
| 1643 runReflectiveTests(KeywordStateTest); | 1641 runReflectiveTests(KeywordStateTest); |
| 1644 runReflectiveTests(ScannerTest); | 1642 runReflectiveTests(ScannerTest); |
| 1645 runReflectiveTests(TokenTypeTest); | 1643 runReflectiveTests(TokenTypeTest); |
| 1646 } | 1644 } |
| OLD | NEW |