| 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 library test.domain.analysis.notification.highlights; | 5 library test.domain.analysis.notification.highlights; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/computer/computer_highlights.dart'; | |
| 10 import 'package:analysis_server/src/constants.dart'; | 9 import 'package:analysis_server/src/constants.dart'; |
| 11 import 'package:analysis_server/src/protocol.dart'; | 10 import 'package:analysis_server/src/protocol.dart'; |
| 12 import 'package:analysis_server/src/protocol2.dart' show AnalysisService; | 11 import 'package:analysis_server/src/protocol2.dart'; |
| 13 import 'package:analysis_testing/reflective_tests.dart'; | 12 import 'package:analysis_testing/reflective_tests.dart'; |
| 14 import 'package:unittest/unittest.dart'; | 13 import 'package:unittest/unittest.dart'; |
| 15 | 14 |
| 16 import 'analysis_abstract.dart'; | 15 import 'analysis_abstract.dart'; |
| 17 | 16 |
| 18 | 17 |
| 19 main() { | 18 main() { |
| 20 runReflectiveTests(AnalysisNotificationHighlightsTest); | 19 runReflectiveTests(AnalysisNotificationHighlightsTest); |
| 21 runReflectiveTests(HighlightTypeTest); | 20 runReflectiveTests(HighlightTypeTest); |
| 22 } | 21 } |
| 23 | 22 |
| 24 | 23 |
| 25 @ReflectiveTestCase() | 24 @ReflectiveTestCase() |
| 26 class AnalysisNotificationHighlightsTest extends AbstractAnalysisTest { | 25 class AnalysisNotificationHighlightsTest extends AbstractAnalysisTest { |
| 27 List<HighlightRegion> regions; | 26 List<HighlightRegion> regions; |
| 28 | 27 |
| 29 void assertHasRawRegion(HighlightType type, int offset, int length) { | 28 void assertHasRawRegion(HighlightRegionType type, int offset, int length) { |
| 30 for (HighlightRegion region in regions) { | 29 for (HighlightRegion region in regions) { |
| 31 if (region.offset == offset && | 30 if (region.offset == offset && |
| 32 region.length == length && | 31 region.length == length && |
| 33 region.type == type) { | 32 region.type == type) { |
| 34 return; | 33 return; |
| 35 } | 34 } |
| 36 } | 35 } |
| 37 fail( | 36 fail( |
| 38 'Expected to find (offset=$offset; length=$length; type=$type) in\n' | 37 'Expected to find (offset=$offset; length=$length; type=$type) in\n' |
| 39 '${regions.join('\n')}'); | 38 '${regions.join('\n')}'); |
| 40 } | 39 } |
| 41 | 40 |
| 42 void assertHasRegion(HighlightType type, String search, [int length = -1]) { | 41 void assertHasRegion(HighlightRegionType type, String search, [int length = -1
]) { |
| 43 int offset = findOffset(search); | 42 int offset = findOffset(search); |
| 44 length = findRegionLength(search, length); | 43 length = findRegionLength(search, length); |
| 45 assertHasRawRegion(type, offset, length); | 44 assertHasRawRegion(type, offset, length); |
| 46 } | 45 } |
| 47 | 46 |
| 48 void assertHasStringRegion(HighlightType type, String str) { | 47 void assertHasStringRegion(HighlightRegionType type, String str) { |
| 49 int offset = findOffset(str); | 48 int offset = findOffset(str); |
| 50 int length = str.length; | 49 int length = str.length; |
| 51 assertHasRawRegion(type, offset, length); | 50 assertHasRawRegion(type, offset, length); |
| 52 } | 51 } |
| 53 | 52 |
| 54 void assertNoRawRegion(HighlightType type, int offset, int length) { | 53 void assertNoRawRegion(HighlightRegionType type, int offset, int length) { |
| 55 for (HighlightRegion region in regions) { | 54 for (HighlightRegion region in regions) { |
| 56 if (region.offset == offset && | 55 if (region.offset == offset && |
| 57 region.length == length && | 56 region.length == length && |
| 58 region.type == type) { | 57 region.type == type) { |
| 59 fail( | 58 fail( |
| 60 'Not expected to find (offset=$offset; length=$length; type=$type) i
n\n' | 59 'Not expected to find (offset=$offset; length=$length; type=$type) i
n\n' |
| 61 '${regions.join('\n')}'); | 60 '${regions.join('\n')}'); |
| 62 } | 61 } |
| 63 } | 62 } |
| 64 } | 63 } |
| 65 | 64 |
| 66 | 65 |
| 67 void assertNoRegion(HighlightType type, String search, [int length = -1]) { | 66 void assertNoRegion(HighlightRegionType type, String search, [int length = -1]
) { |
| 68 int offset = findOffset(search); | 67 int offset = findOffset(search); |
| 69 length = findRegionLength(search, length); | 68 length = findRegionLength(search, length); |
| 70 assertNoRawRegion(type, offset, length); | 69 assertNoRawRegion(type, offset, length); |
| 71 } | 70 } |
| 72 | 71 |
| 73 int findRegionLength(String search, int length) { | 72 int findRegionLength(String search, int length) { |
| 74 if (length == -1) { | 73 if (length == -1) { |
| 75 length = 0; | 74 length = 0; |
| 76 while (length < search.length) { | 75 while (length < search.length) { |
| 77 int c = search.codeUnitAt(length); | 76 int c = search.codeUnitAt(length); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 90 return length; | 89 return length; |
| 91 } | 90 } |
| 92 | 91 |
| 93 Future prepareHighlights() { | 92 Future prepareHighlights() { |
| 94 addAnalysisSubscription(AnalysisService.HIGHLIGHTS, testFile); | 93 addAnalysisSubscription(AnalysisService.HIGHLIGHTS, testFile); |
| 95 return waitForTasksFinished(); | 94 return waitForTasksFinished(); |
| 96 } | 95 } |
| 97 | 96 |
| 98 void processNotification(Notification notification) { | 97 void processNotification(Notification notification) { |
| 99 if (notification.event == ANALYSIS_HIGHLIGHTS) { | 98 if (notification.event == ANALYSIS_HIGHLIGHTS) { |
| 100 String file = notification.getParameter(FILE); | 99 var params = new AnalysisHighlightsParams.fromNotification(notification); |
| 101 if (file == testFile) { | 100 if (params.file == testFile) { |
| 102 regions = []; | 101 regions = params.regions; |
| 103 List<Map<String, Object>> regionsJson = | |
| 104 notification.getParameter(REGIONS); | |
| 105 for (Map<String, Object> regionJson in regionsJson) { | |
| 106 regions.add(new HighlightRegion.fromJson(regionJson)); | |
| 107 } | |
| 108 } | 102 } |
| 109 } | 103 } |
| 110 } | 104 } |
| 111 | 105 |
| 112 @override | 106 @override |
| 113 void setUp() { | 107 void setUp() { |
| 114 super.setUp(); | 108 super.setUp(); |
| 115 createProject(); | 109 createProject(); |
| 116 } | 110 } |
| 117 | 111 |
| 118 test_ANNOTATION_hasArguments() { | 112 test_ANNOTATION_hasArguments() { |
| 119 addTestFile(''' | 113 addTestFile(''' |
| 120 class AAA { | 114 class AAA { |
| 121 const AAA(a, b, c); | 115 const AAA(a, b, c); |
| 122 } | 116 } |
| 123 @AAA(1, 2, 3) main() {} | 117 @AAA(1, 2, 3) main() {} |
| 124 '''); | 118 '''); |
| 125 return prepareHighlights().then((_) { | 119 return prepareHighlights().then((_) { |
| 126 assertHasRegion(HighlightType.ANNOTATION, '@AAA(', '@AAA('.length); | 120 assertHasRegion(HighlightRegionType.ANNOTATION, '@AAA(', '@AAA('.length); |
| 127 assertHasRegion(HighlightType.ANNOTATION, ') main', ')'.length); | 121 assertHasRegion(HighlightRegionType.ANNOTATION, ') main', ')'.length); |
| 128 }); | 122 }); |
| 129 } | 123 } |
| 130 | 124 |
| 131 test_ANNOTATION_noArguments() { | 125 test_ANNOTATION_noArguments() { |
| 132 addTestFile(''' | 126 addTestFile(''' |
| 133 const AAA = 42; | 127 const AAA = 42; |
| 134 @AAA main() {} | 128 @AAA main() {} |
| 135 '''); | 129 '''); |
| 136 return prepareHighlights().then((_) { | 130 return prepareHighlights().then((_) { |
| 137 assertHasRegion(HighlightType.ANNOTATION, '@AAA'); | 131 assertHasRegion(HighlightRegionType.ANNOTATION, '@AAA'); |
| 138 }); | 132 }); |
| 139 } | 133 } |
| 140 | 134 |
| 141 test_BUILT_IN_abstract() { | 135 test_BUILT_IN_abstract() { |
| 142 addTestFile(''' | 136 addTestFile(''' |
| 143 abstract class A {}; | 137 abstract class A {}; |
| 144 main() { | 138 main() { |
| 145 var abstract = 42; | 139 var abstract = 42; |
| 146 }'''); | 140 }'''); |
| 147 return prepareHighlights().then((_) { | 141 return prepareHighlights().then((_) { |
| 148 assertHasRegion(HighlightType.BUILT_IN, 'abstract class'); | 142 assertHasRegion(HighlightRegionType.BUILT_IN, 'abstract class'); |
| 149 assertNoRegion(HighlightType.BUILT_IN, 'abstract = 42'); | 143 assertNoRegion(HighlightRegionType.BUILT_IN, 'abstract = 42'); |
| 150 }); | 144 }); |
| 151 } | 145 } |
| 152 | 146 |
| 153 test_BUILT_IN_as() { | 147 test_BUILT_IN_as() { |
| 154 addTestFile(''' | 148 addTestFile(''' |
| 155 import 'dart:math' as math; | 149 import 'dart:math' as math; |
| 156 main() { | 150 main() { |
| 157 p as int; | 151 p as int; |
| 158 var as = 42; | 152 var as = 42; |
| 159 }'''); | 153 }'''); |
| 160 return prepareHighlights().then((_) { | 154 return prepareHighlights().then((_) { |
| 161 assertHasRegion(HighlightType.BUILT_IN, 'as math'); | 155 assertHasRegion(HighlightRegionType.BUILT_IN, 'as math'); |
| 162 assertHasRegion(HighlightType.BUILT_IN, 'as int'); | 156 assertHasRegion(HighlightRegionType.BUILT_IN, 'as int'); |
| 163 assertNoRegion(HighlightType.BUILT_IN, 'as = 42'); | 157 assertNoRegion(HighlightRegionType.BUILT_IN, 'as = 42'); |
| 164 }); | 158 }); |
| 165 } | 159 } |
| 166 | 160 |
| 167 test_BUILT_IN_deferred() { | 161 test_BUILT_IN_deferred() { |
| 168 addTestFile(''' | 162 addTestFile(''' |
| 169 import 'dart:math' deferred as math; | 163 import 'dart:math' deferred as math; |
| 170 main() { | 164 main() { |
| 171 var deferred = 42; | 165 var deferred = 42; |
| 172 }'''); | 166 }'''); |
| 173 return prepareHighlights().then((_) { | 167 return prepareHighlights().then((_) { |
| 174 assertHasRegion(HighlightType.BUILT_IN, 'deferred as math'); | 168 assertHasRegion(HighlightRegionType.BUILT_IN, 'deferred as math'); |
| 175 assertNoRegion(HighlightType.BUILT_IN, 'deferred = 42'); | 169 assertNoRegion(HighlightRegionType.BUILT_IN, 'deferred = 42'); |
| 176 }); | 170 }); |
| 177 } | 171 } |
| 178 | 172 |
| 179 test_BUILT_IN_export() { | 173 test_BUILT_IN_export() { |
| 180 addTestFile(''' | 174 addTestFile(''' |
| 181 export "dart:math"; | 175 export "dart:math"; |
| 182 main() { | 176 main() { |
| 183 var export = 42; | 177 var export = 42; |
| 184 }'''); | 178 }'''); |
| 185 return prepareHighlights().then((_) { | 179 return prepareHighlights().then((_) { |
| 186 assertHasRegion(HighlightType.BUILT_IN, 'export "dart:'); | 180 assertHasRegion(HighlightRegionType.BUILT_IN, 'export "dart:'); |
| 187 assertNoRegion(HighlightType.BUILT_IN, 'export = 42'); | 181 assertNoRegion(HighlightRegionType.BUILT_IN, 'export = 42'); |
| 188 }); | 182 }); |
| 189 } | 183 } |
| 190 | 184 |
| 191 test_BUILT_IN_external() { | 185 test_BUILT_IN_external() { |
| 192 addTestFile(''' | 186 addTestFile(''' |
| 193 class A { | 187 class A { |
| 194 external A(); | 188 external A(); |
| 195 external aaa(); | 189 external aaa(); |
| 196 } | 190 } |
| 197 external main() { | 191 external main() { |
| 198 var external = 42; | 192 var external = 42; |
| 199 }'''); | 193 }'''); |
| 200 return prepareHighlights().then((_) { | 194 return prepareHighlights().then((_) { |
| 201 assertHasRegion(HighlightType.BUILT_IN, 'external A()'); | 195 assertHasRegion(HighlightRegionType.BUILT_IN, 'external A()'); |
| 202 assertHasRegion(HighlightType.BUILT_IN, 'external aaa()'); | 196 assertHasRegion(HighlightRegionType.BUILT_IN, 'external aaa()'); |
| 203 assertHasRegion(HighlightType.BUILT_IN, 'external main()'); | 197 assertHasRegion(HighlightRegionType.BUILT_IN, 'external main()'); |
| 204 assertNoRegion(HighlightType.BUILT_IN, 'external = 42'); | 198 assertNoRegion(HighlightRegionType.BUILT_IN, 'external = 42'); |
| 205 }); | 199 }); |
| 206 } | 200 } |
| 207 | 201 |
| 208 test_BUILT_IN_factory() { | 202 test_BUILT_IN_factory() { |
| 209 addTestFile(''' | 203 addTestFile(''' |
| 210 class A { | 204 class A { |
| 211 factory A() => null; | 205 factory A() => null; |
| 212 } | 206 } |
| 213 main() { | 207 main() { |
| 214 var factory = 42; | 208 var factory = 42; |
| 215 }'''); | 209 }'''); |
| 216 return prepareHighlights().then((_) { | 210 return prepareHighlights().then((_) { |
| 217 assertHasRegion(HighlightType.BUILT_IN, 'factory A()'); | 211 assertHasRegion(HighlightRegionType.BUILT_IN, 'factory A()'); |
| 218 assertNoRegion(HighlightType.BUILT_IN, 'factory = 42'); | 212 assertNoRegion(HighlightRegionType.BUILT_IN, 'factory = 42'); |
| 219 }); | 213 }); |
| 220 } | 214 } |
| 221 | 215 |
| 222 test_BUILT_IN_get() { | 216 test_BUILT_IN_get() { |
| 223 addTestFile(''' | 217 addTestFile(''' |
| 224 get aaa => 1; | 218 get aaa => 1; |
| 225 class A { | 219 class A { |
| 226 get bbb => 2; | 220 get bbb => 2; |
| 227 } | 221 } |
| 228 main() { | 222 main() { |
| 229 var get = 42; | 223 var get = 42; |
| 230 }'''); | 224 }'''); |
| 231 return prepareHighlights().then((_) { | 225 return prepareHighlights().then((_) { |
| 232 assertHasRegion(HighlightType.BUILT_IN, 'get aaa =>'); | 226 assertHasRegion(HighlightRegionType.BUILT_IN, 'get aaa =>'); |
| 233 assertHasRegion(HighlightType.BUILT_IN, 'get bbb =>'); | 227 assertHasRegion(HighlightRegionType.BUILT_IN, 'get bbb =>'); |
| 234 assertNoRegion(HighlightType.BUILT_IN, 'get = 42'); | 228 assertNoRegion(HighlightRegionType.BUILT_IN, 'get = 42'); |
| 235 }); | 229 }); |
| 236 } | 230 } |
| 237 | 231 |
| 238 test_BUILT_IN_hide() { | 232 test_BUILT_IN_hide() { |
| 239 addTestFile(''' | 233 addTestFile(''' |
| 240 import 'foo.dart' hide Foo; | 234 import 'foo.dart' hide Foo; |
| 241 main() { | 235 main() { |
| 242 var hide = 42; | 236 var hide = 42; |
| 243 }'''); | 237 }'''); |
| 244 return prepareHighlights().then((_) { | 238 return prepareHighlights().then((_) { |
| 245 assertHasRegion(HighlightType.BUILT_IN, 'hide Foo'); | 239 assertHasRegion(HighlightRegionType.BUILT_IN, 'hide Foo'); |
| 246 assertNoRegion(HighlightType.BUILT_IN, 'hide = 42'); | 240 assertNoRegion(HighlightRegionType.BUILT_IN, 'hide = 42'); |
| 247 }); | 241 }); |
| 248 } | 242 } |
| 249 | 243 |
| 250 test_BUILT_IN_implements() { | 244 test_BUILT_IN_implements() { |
| 251 addTestFile(''' | 245 addTestFile(''' |
| 252 class A {} | 246 class A {} |
| 253 class B implements A {} | 247 class B implements A {} |
| 254 main() { | 248 main() { |
| 255 var implements = 42; | 249 var implements = 42; |
| 256 }'''); | 250 }'''); |
| 257 return prepareHighlights().then((_) { | 251 return prepareHighlights().then((_) { |
| 258 assertHasRegion(HighlightType.BUILT_IN, 'implements A {}'); | 252 assertHasRegion(HighlightRegionType.BUILT_IN, 'implements A {}'); |
| 259 assertNoRegion(HighlightType.BUILT_IN, 'implements = 42'); | 253 assertNoRegion(HighlightRegionType.BUILT_IN, 'implements = 42'); |
| 260 }); | 254 }); |
| 261 } | 255 } |
| 262 | 256 |
| 263 test_BUILT_IN_import() { | 257 test_BUILT_IN_import() { |
| 264 addTestFile(''' | 258 addTestFile(''' |
| 265 import "foo.dart"; | 259 import "foo.dart"; |
| 266 main() { | 260 main() { |
| 267 var import = 42; | 261 var import = 42; |
| 268 }'''); | 262 }'''); |
| 269 return prepareHighlights().then((_) { | 263 return prepareHighlights().then((_) { |
| 270 assertHasRegion(HighlightType.BUILT_IN, 'import "'); | 264 assertHasRegion(HighlightRegionType.BUILT_IN, 'import "'); |
| 271 assertNoRegion(HighlightType.BUILT_IN, 'import = 42'); | 265 assertNoRegion(HighlightRegionType.BUILT_IN, 'import = 42'); |
| 272 }); | 266 }); |
| 273 } | 267 } |
| 274 | 268 |
| 275 test_BUILT_IN_library() { | 269 test_BUILT_IN_library() { |
| 276 addTestFile(''' | 270 addTestFile(''' |
| 277 library lib; | 271 library lib; |
| 278 main() { | 272 main() { |
| 279 var library = 42; | 273 var library = 42; |
| 280 }'''); | 274 }'''); |
| 281 return prepareHighlights().then((_) { | 275 return prepareHighlights().then((_) { |
| 282 assertHasRegion(HighlightType.BUILT_IN, 'library lib;'); | 276 assertHasRegion(HighlightRegionType.BUILT_IN, 'library lib;'); |
| 283 assertNoRegion(HighlightType.BUILT_IN, 'library = 42'); | 277 assertNoRegion(HighlightRegionType.BUILT_IN, 'library = 42'); |
| 284 }); | 278 }); |
| 285 } | 279 } |
| 286 | 280 |
| 287 test_BUILT_IN_native() { | 281 test_BUILT_IN_native() { |
| 288 addTestFile(''' | 282 addTestFile(''' |
| 289 class A native "A_native" {} | 283 class A native "A_native" {} |
| 290 class B { | 284 class B { |
| 291 bbb() native "bbb_native"; | 285 bbb() native "bbb_native"; |
| 292 } | 286 } |
| 293 main() { | 287 main() { |
| 294 var native = 42; | 288 var native = 42; |
| 295 }'''); | 289 }'''); |
| 296 return prepareHighlights().then((_) { | 290 return prepareHighlights().then((_) { |
| 297 assertHasRegion(HighlightType.BUILT_IN, 'native "A_'); | 291 assertHasRegion(HighlightRegionType.BUILT_IN, 'native "A_'); |
| 298 assertHasRegion(HighlightType.BUILT_IN, 'native "bbb_'); | 292 assertHasRegion(HighlightRegionType.BUILT_IN, 'native "bbb_'); |
| 299 assertNoRegion(HighlightType.BUILT_IN, 'native = 42'); | 293 assertNoRegion(HighlightRegionType.BUILT_IN, 'native = 42'); |
| 300 }); | 294 }); |
| 301 } | 295 } |
| 302 | 296 |
| 303 test_BUILT_IN_on() { | 297 test_BUILT_IN_on() { |
| 304 addTestFile(''' | 298 addTestFile(''' |
| 305 main() { | 299 main() { |
| 306 try { | 300 try { |
| 307 } on int catch (e) { | 301 } on int catch (e) { |
| 308 } | 302 } |
| 309 var on = 42; | 303 var on = 42; |
| 310 }'''); | 304 }'''); |
| 311 return prepareHighlights().then((_) { | 305 return prepareHighlights().then((_) { |
| 312 assertHasRegion(HighlightType.BUILT_IN, 'on int'); | 306 assertHasRegion(HighlightRegionType.BUILT_IN, 'on int'); |
| 313 assertNoRegion(HighlightType.BUILT_IN, 'on = 42'); | 307 assertNoRegion(HighlightRegionType.BUILT_IN, 'on = 42'); |
| 314 }); | 308 }); |
| 315 } | 309 } |
| 316 | 310 |
| 317 test_BUILT_IN_operator() { | 311 test_BUILT_IN_operator() { |
| 318 addTestFile(''' | 312 addTestFile(''' |
| 319 class A { | 313 class A { |
| 320 operator +(x) => null; | 314 operator +(x) => null; |
| 321 } | 315 } |
| 322 main() { | 316 main() { |
| 323 var operator = 42; | 317 var operator = 42; |
| 324 }'''); | 318 }'''); |
| 325 return prepareHighlights().then((_) { | 319 return prepareHighlights().then((_) { |
| 326 assertHasRegion(HighlightType.BUILT_IN, 'operator +('); | 320 assertHasRegion(HighlightRegionType.BUILT_IN, 'operator +('); |
| 327 assertNoRegion(HighlightType.BUILT_IN, 'operator = 42'); | 321 assertNoRegion(HighlightRegionType.BUILT_IN, 'operator = 42'); |
| 328 }); | 322 }); |
| 329 } | 323 } |
| 330 | 324 |
| 331 test_BUILT_IN_part() { | 325 test_BUILT_IN_part() { |
| 332 addTestFile(''' | 326 addTestFile(''' |
| 333 part "my_part.dart"; | 327 part "my_part.dart"; |
| 334 main() { | 328 main() { |
| 335 var part = 42; | 329 var part = 42; |
| 336 }'''); | 330 }'''); |
| 337 addFile('/project/bin/my_part.dart', 'part of lib;'); | 331 addFile('/project/bin/my_part.dart', 'part of lib;'); |
| 338 return prepareHighlights().then((_) { | 332 return prepareHighlights().then((_) { |
| 339 assertHasRegion(HighlightType.BUILT_IN, 'part "my_'); | 333 assertHasRegion(HighlightRegionType.BUILT_IN, 'part "my_'); |
| 340 assertNoRegion(HighlightType.BUILT_IN, 'part = 42'); | 334 assertNoRegion(HighlightRegionType.BUILT_IN, 'part = 42'); |
| 341 }); | 335 }); |
| 342 } | 336 } |
| 343 | 337 |
| 344 test_BUILT_IN_partOf() { | 338 test_BUILT_IN_partOf() { |
| 345 addTestFile(''' | 339 addTestFile(''' |
| 346 part of lib; | 340 part of lib; |
| 347 main() { | 341 main() { |
| 348 var part = 1; | 342 var part = 1; |
| 349 var of = 2; | 343 var of = 2; |
| 350 }'''); | 344 }'''); |
| 351 _addLibraryForTestPart(); | 345 _addLibraryForTestPart(); |
| 352 return prepareHighlights().then((_) { | 346 return prepareHighlights().then((_) { |
| 353 assertHasRegion(HighlightType.BUILT_IN, 'part of', 'part of'.length); | 347 assertHasRegion(HighlightRegionType.BUILT_IN, 'part of', 'part of'.length)
; |
| 354 assertNoRegion(HighlightType.BUILT_IN, 'part = 1'); | 348 assertNoRegion(HighlightRegionType.BUILT_IN, 'part = 1'); |
| 355 assertNoRegion(HighlightType.BUILT_IN, 'of = 2'); | 349 assertNoRegion(HighlightRegionType.BUILT_IN, 'of = 2'); |
| 356 }); | 350 }); |
| 357 } | 351 } |
| 358 | 352 |
| 359 test_BUILT_IN_set() { | 353 test_BUILT_IN_set() { |
| 360 addTestFile(''' | 354 addTestFile(''' |
| 361 set aaa(x) {} | 355 set aaa(x) {} |
| 362 class A | 356 class A |
| 363 set bbb(x) {} | 357 set bbb(x) {} |
| 364 } | 358 } |
| 365 main() { | 359 main() { |
| 366 var set = 42; | 360 var set = 42; |
| 367 }'''); | 361 }'''); |
| 368 return prepareHighlights().then((_) { | 362 return prepareHighlights().then((_) { |
| 369 assertHasRegion(HighlightType.BUILT_IN, 'set aaa('); | 363 assertHasRegion(HighlightRegionType.BUILT_IN, 'set aaa('); |
| 370 assertHasRegion(HighlightType.BUILT_IN, 'set bbb('); | 364 assertHasRegion(HighlightRegionType.BUILT_IN, 'set bbb('); |
| 371 assertNoRegion(HighlightType.BUILT_IN, 'set = 42'); | 365 assertNoRegion(HighlightRegionType.BUILT_IN, 'set = 42'); |
| 372 }); | 366 }); |
| 373 } | 367 } |
| 374 | 368 |
| 375 test_BUILT_IN_show() { | 369 test_BUILT_IN_show() { |
| 376 addTestFile(''' | 370 addTestFile(''' |
| 377 import 'foo.dart' show Foo; | 371 import 'foo.dart' show Foo; |
| 378 main() { | 372 main() { |
| 379 var show = 42; | 373 var show = 42; |
| 380 }'''); | 374 }'''); |
| 381 return prepareHighlights().then((_) { | 375 return prepareHighlights().then((_) { |
| 382 assertHasRegion(HighlightType.BUILT_IN, 'show Foo'); | 376 assertHasRegion(HighlightRegionType.BUILT_IN, 'show Foo'); |
| 383 assertNoRegion(HighlightType.BUILT_IN, 'show = 42'); | 377 assertNoRegion(HighlightRegionType.BUILT_IN, 'show = 42'); |
| 384 }); | 378 }); |
| 385 } | 379 } |
| 386 | 380 |
| 387 test_BUILT_IN_static() { | 381 test_BUILT_IN_static() { |
| 388 addTestFile(''' | 382 addTestFile(''' |
| 389 class A { | 383 class A { |
| 390 static aaa; | 384 static aaa; |
| 391 static bbb() {} | 385 static bbb() {} |
| 392 } | 386 } |
| 393 main() { | 387 main() { |
| 394 var static = 42; | 388 var static = 42; |
| 395 }'''); | 389 }'''); |
| 396 return prepareHighlights().then((_) { | 390 return prepareHighlights().then((_) { |
| 397 assertHasRegion(HighlightType.BUILT_IN, 'static aaa;'); | 391 assertHasRegion(HighlightRegionType.BUILT_IN, 'static aaa;'); |
| 398 assertHasRegion(HighlightType.BUILT_IN, 'static bbb()'); | 392 assertHasRegion(HighlightRegionType.BUILT_IN, 'static bbb()'); |
| 399 assertNoRegion(HighlightType.BUILT_IN, 'static = 42'); | 393 assertNoRegion(HighlightRegionType.BUILT_IN, 'static = 42'); |
| 400 }); | 394 }); |
| 401 } | 395 } |
| 402 | 396 |
| 403 test_BUILT_IN_typedef() { | 397 test_BUILT_IN_typedef() { |
| 404 addTestFile(''' | 398 addTestFile(''' |
| 405 typedef A(); | 399 typedef A(); |
| 406 main() { | 400 main() { |
| 407 var typedef = 42; | 401 var typedef = 42; |
| 408 }'''); | 402 }'''); |
| 409 return prepareHighlights().then((_) { | 403 return prepareHighlights().then((_) { |
| 410 assertHasRegion(HighlightType.BUILT_IN, 'typedef A();'); | 404 assertHasRegion(HighlightRegionType.BUILT_IN, 'typedef A();'); |
| 411 assertNoRegion(HighlightType.BUILT_IN, 'typedef = 42'); | 405 assertNoRegion(HighlightRegionType.BUILT_IN, 'typedef = 42'); |
| 412 }); | 406 }); |
| 413 } | 407 } |
| 414 | 408 |
| 415 test_CLASS() { | 409 test_CLASS() { |
| 416 addTestFile(''' | 410 addTestFile(''' |
| 417 class AAA {} | 411 class AAA {} |
| 418 AAA aaa; | 412 AAA aaa; |
| 419 '''); | 413 '''); |
| 420 return prepareHighlights().then((_) { | 414 return prepareHighlights().then((_) { |
| 421 assertHasRegion(HighlightType.CLASS, 'AAA {}'); | 415 assertHasRegion(HighlightRegionType.CLASS, 'AAA {}'); |
| 422 assertHasRegion(HighlightType.CLASS, 'AAA aaa'); | 416 assertHasRegion(HighlightRegionType.CLASS, 'AAA aaa'); |
| 423 }); | 417 }); |
| 424 } | 418 } |
| 425 | 419 |
| 426 test_CLASS_notDynamic() { | 420 test_CLASS_notDynamic() { |
| 427 addTestFile(''' | 421 addTestFile(''' |
| 428 dynamic f() {} | 422 dynamic f() {} |
| 429 '''); | 423 '''); |
| 430 return prepareHighlights().then((_) { | 424 return prepareHighlights().then((_) { |
| 431 assertNoRegion(HighlightType.CLASS, 'dynamic f()'); | 425 assertNoRegion(HighlightRegionType.CLASS, 'dynamic f()'); |
| 432 }); | 426 }); |
| 433 } | 427 } |
| 434 | 428 |
| 435 test_CLASS_notVoid() { | 429 test_CLASS_notVoid() { |
| 436 addTestFile(''' | 430 addTestFile(''' |
| 437 void f() {} | 431 void f() {} |
| 438 '''); | 432 '''); |
| 439 return prepareHighlights().then((_) { | 433 return prepareHighlights().then((_) { |
| 440 assertNoRegion(HighlightType.CLASS, 'void f()'); | 434 assertNoRegion(HighlightRegionType.CLASS, 'void f()'); |
| 441 }); | 435 }); |
| 442 } | 436 } |
| 443 | 437 |
| 444 test_COMMENT() { | 438 test_COMMENT() { |
| 445 addTestFile(''' | 439 addTestFile(''' |
| 446 /** | 440 /** |
| 447 * documentation comment | 441 * documentation comment |
| 448 */ | 442 */ |
| 449 void main() { | 443 void main() { |
| 450 // end-of-line comment | 444 // end-of-line comment |
| 451 my_function(1); | 445 my_function(1); |
| 452 } | 446 } |
| 453 | 447 |
| 454 void my_function(String a) { | 448 void my_function(String a) { |
| 455 /* block comment */ | 449 /* block comment */ |
| 456 } | 450 } |
| 457 '''); | 451 '''); |
| 458 return prepareHighlights().then((_) { | 452 return prepareHighlights().then((_) { |
| 459 assertHasRegion(HighlightType.COMMENT_DOCUMENTATION, '/**', 32); | 453 assertHasRegion(HighlightRegionType.COMMENT_DOCUMENTATION, '/**', 32); |
| 460 assertHasRegion(HighlightType.COMMENT_END_OF_LINE, '//', 22); | 454 assertHasRegion(HighlightRegionType.COMMENT_END_OF_LINE, '//', 22); |
| 461 assertHasRegion(HighlightType.COMMENT_BLOCK, '/* b', 19); | 455 assertHasRegion(HighlightRegionType.COMMENT_BLOCK, '/* b', 19); |
| 462 }); | 456 }); |
| 463 } | 457 } |
| 464 | 458 |
| 465 test_CONSTRUCTOR() { | 459 test_CONSTRUCTOR() { |
| 466 addTestFile(''' | 460 addTestFile(''' |
| 467 class AAA { | 461 class AAA { |
| 468 AAA() {} | 462 AAA() {} |
| 469 AAA.name(p) {} | 463 AAA.name(p) {} |
| 470 } | 464 } |
| 471 main() { | 465 main() { |
| 472 new AAA(); | 466 new AAA(); |
| 473 new AAA.name(42); | 467 new AAA.name(42); |
| 474 } | 468 } |
| 475 '''); | 469 '''); |
| 476 return prepareHighlights().then((_) { | 470 return prepareHighlights().then((_) { |
| 477 assertHasRegion(HighlightType.CONSTRUCTOR, 'name(p)'); | 471 assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(p)'); |
| 478 assertHasRegion(HighlightType.CONSTRUCTOR, 'name(42)'); | 472 assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(42)'); |
| 479 assertNoRegion(HighlightType.CONSTRUCTOR, 'AAA() {}'); | 473 assertNoRegion(HighlightRegionType.CONSTRUCTOR, 'AAA() {}'); |
| 480 assertNoRegion(HighlightType.CONSTRUCTOR, 'AAA();'); | 474 assertNoRegion(HighlightRegionType.CONSTRUCTOR, 'AAA();'); |
| 481 }); | 475 }); |
| 482 } | 476 } |
| 483 | 477 |
| 484 test_DIRECTIVE() { | 478 test_DIRECTIVE() { |
| 485 addTestFile(''' | 479 addTestFile(''' |
| 486 library lib; | 480 library lib; |
| 487 import 'dart:math'; | 481 import 'dart:math'; |
| 488 export 'dart:math'; | 482 export 'dart:math'; |
| 489 part 'part.dart'; | 483 part 'part.dart'; |
| 490 '''); | 484 '''); |
| 491 return prepareHighlights().then((_) { | 485 return prepareHighlights().then((_) { |
| 492 assertHasStringRegion(HighlightType.DIRECTIVE, "library lib;"); | 486 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "library lib;"); |
| 493 assertHasStringRegion(HighlightType.DIRECTIVE, "import 'dart:math';"); | 487 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "import 'dart:math';"
); |
| 494 assertHasStringRegion(HighlightType.DIRECTIVE, "export 'dart:math';"); | 488 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "export 'dart:math';"
); |
| 495 assertHasStringRegion(HighlightType.DIRECTIVE, "part 'part.dart';"); | 489 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "part 'part.dart';"); |
| 496 }); | 490 }); |
| 497 } | 491 } |
| 498 | 492 |
| 499 test_DIRECTIVE_partOf() { | 493 test_DIRECTIVE_partOf() { |
| 500 addTestFile(''' | 494 addTestFile(''' |
| 501 part of lib; | 495 part of lib; |
| 502 '''); | 496 '''); |
| 503 _addLibraryForTestPart(); | 497 _addLibraryForTestPart(); |
| 504 return prepareHighlights().then((_) { | 498 return prepareHighlights().then((_) { |
| 505 assertHasStringRegion(HighlightType.DIRECTIVE, "part of lib;"); | 499 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "part of lib;"); |
| 506 }); | 500 }); |
| 507 } | 501 } |
| 508 | 502 |
| 509 test_DYNAMIC_TYPE() { | 503 test_DYNAMIC_TYPE() { |
| 510 addTestFile(''' | 504 addTestFile(''' |
| 511 f() {} | 505 f() {} |
| 512 main(p) { | 506 main(p) { |
| 513 print(p); | 507 print(p); |
| 514 var v1 = f(); | 508 var v1 = f(); |
| 515 int v2; | 509 int v2; |
| 516 var v3 = v2; | 510 var v3 = v2; |
| 517 } | 511 } |
| 518 '''); | 512 '''); |
| 519 return prepareHighlights().then((_) { | 513 return prepareHighlights().then((_) { |
| 520 assertHasRegion(HighlightType.DYNAMIC_TYPE, 'p)'); | 514 assertHasRegion(HighlightRegionType.DYNAMIC_TYPE, 'p)'); |
| 521 assertHasRegion(HighlightType.DYNAMIC_TYPE, 'v1 ='); | 515 assertHasRegion(HighlightRegionType.DYNAMIC_TYPE, 'v1 ='); |
| 522 assertNoRegion(HighlightType.DYNAMIC_TYPE, 'v2;'); | 516 assertNoRegion(HighlightRegionType.DYNAMIC_TYPE, 'v2;'); |
| 523 assertNoRegion(HighlightType.DYNAMIC_TYPE, 'v3 ='); | 517 assertNoRegion(HighlightRegionType.DYNAMIC_TYPE, 'v3 ='); |
| 524 }); | 518 }); |
| 525 } | 519 } |
| 526 | 520 |
| 527 test_FIELD() { | 521 test_FIELD() { |
| 528 addTestFile(''' | 522 addTestFile(''' |
| 529 class A { | 523 class A { |
| 530 int aaa = 1; | 524 int aaa = 1; |
| 531 int bbb = 2; | 525 int bbb = 2; |
| 532 A([this.bbb = 3]); | 526 A([this.bbb = 3]); |
| 533 } | 527 } |
| 534 main(A a) { | 528 main(A a) { |
| 535 a.aaa = 4; | 529 a.aaa = 4; |
| 536 a.bbb = 5; | 530 a.bbb = 5; |
| 537 } | 531 } |
| 538 '''); | 532 '''); |
| 539 return prepareHighlights().then((_) { | 533 return prepareHighlights().then((_) { |
| 540 assertHasRegion(HighlightType.FIELD, 'aaa = 1'); | 534 assertHasRegion(HighlightRegionType.FIELD, 'aaa = 1'); |
| 541 assertHasRegion(HighlightType.FIELD, 'bbb = 2'); | 535 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 2'); |
| 542 assertHasRegion(HighlightType.FIELD, 'bbb = 3'); | 536 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 3'); |
| 543 assertHasRegion(HighlightType.FIELD, 'aaa = 4'); | 537 assertHasRegion(HighlightRegionType.FIELD, 'aaa = 4'); |
| 544 assertHasRegion(HighlightType.FIELD, 'bbb = 5'); | 538 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 5'); |
| 545 }); | 539 }); |
| 546 } | 540 } |
| 547 | 541 |
| 548 test_FIELD_STATIC() { | 542 test_FIELD_STATIC() { |
| 549 addTestFile(''' | 543 addTestFile(''' |
| 550 class A { | 544 class A { |
| 551 static aaa = 1; | 545 static aaa = 1; |
| 552 static get bbb => null; | 546 static get bbb => null; |
| 553 static set ccc(x) {} | 547 static set ccc(x) {} |
| 554 } | 548 } |
| 555 main() { | 549 main() { |
| 556 A.aaa = 2; | 550 A.aaa = 2; |
| 557 A.bbb; | 551 A.bbb; |
| 558 A.ccc = 3; | 552 A.ccc = 3; |
| 559 } | 553 } |
| 560 '''); | 554 '''); |
| 561 return prepareHighlights().then((_) { | 555 return prepareHighlights().then((_) { |
| 562 assertHasRegion(HighlightType.FIELD_STATIC, 'aaa = 1'); | 556 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'aaa = 1'); |
| 563 assertHasRegion(HighlightType.FIELD_STATIC, 'aaa = 2'); | 557 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'aaa = 2'); |
| 564 assertHasRegion(HighlightType.FIELD_STATIC, 'bbb;'); | 558 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'bbb;'); |
| 565 assertHasRegion(HighlightType.FIELD_STATIC, 'ccc = 3'); | 559 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'ccc = 3'); |
| 566 }); | 560 }); |
| 567 } | 561 } |
| 568 | 562 |
| 569 test_FUNCTION() { | 563 test_FUNCTION() { |
| 570 addTestFile(''' | 564 addTestFile(''' |
| 571 fff(p) {} | 565 fff(p) {} |
| 572 main() { | 566 main() { |
| 573 fff(42); | 567 fff(42); |
| 574 } | 568 } |
| 575 '''); | 569 '''); |
| 576 return prepareHighlights().then((_) { | 570 return prepareHighlights().then((_) { |
| 577 assertHasRegion(HighlightType.FUNCTION_DECLARATION, 'fff(p) {}'); | 571 assertHasRegion(HighlightRegionType.FUNCTION_DECLARATION, 'fff(p) {}'); |
| 578 assertHasRegion(HighlightType.FUNCTION, 'fff(42)'); | 572 assertHasRegion(HighlightRegionType.FUNCTION, 'fff(42)'); |
| 579 }); | 573 }); |
| 580 } | 574 } |
| 581 | 575 |
| 582 test_FUNCTION_TYPE_ALIAS() { | 576 test_FUNCTION_TYPE_ALIAS() { |
| 583 addTestFile(''' | 577 addTestFile(''' |
| 584 typedef FFF(p); | 578 typedef FFF(p); |
| 585 main(FFF fff) { | 579 main(FFF fff) { |
| 586 } | 580 } |
| 587 '''); | 581 '''); |
| 588 return prepareHighlights().then((_) { | 582 return prepareHighlights().then((_) { |
| 589 assertHasRegion(HighlightType.FUNCTION_TYPE_ALIAS, 'FFF(p)'); | 583 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF(p)'); |
| 590 assertHasRegion(HighlightType.FUNCTION_TYPE_ALIAS, 'FFF fff)'); | 584 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF fff)'); |
| 591 }); | 585 }); |
| 592 } | 586 } |
| 593 | 587 |
| 594 test_GETTER_DECLARATION() { | 588 test_GETTER_DECLARATION() { |
| 595 addTestFile(''' | 589 addTestFile(''' |
| 596 get aaa => null; | 590 get aaa => null; |
| 597 class A { | 591 class A { |
| 598 get bbb => null; | 592 get bbb => null; |
| 599 } | 593 } |
| 600 main(A a) { | 594 main(A a) { |
| 601 aaa; | 595 aaa; |
| 602 a.bbb; | 596 a.bbb; |
| 603 } | 597 } |
| 604 '''); | 598 '''); |
| 605 return prepareHighlights().then((_) { | 599 return prepareHighlights().then((_) { |
| 606 assertHasRegion(HighlightType.GETTER_DECLARATION, 'aaa => null'); | 600 assertHasRegion(HighlightRegionType.GETTER_DECLARATION, 'aaa => null'); |
| 607 assertHasRegion(HighlightType.GETTER_DECLARATION, 'bbb => null'); | 601 assertHasRegion(HighlightRegionType.GETTER_DECLARATION, 'bbb => null'); |
| 608 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'aaa;'); | 602 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'aaa;'); |
| 609 assertHasRegion(HighlightType.FIELD, 'bbb;'); | 603 assertHasRegion(HighlightRegionType.FIELD, 'bbb;'); |
| 610 }); | 604 }); |
| 611 } | 605 } |
| 612 | 606 |
| 613 test_IDENTIFIER_DEFAULT() { | 607 test_IDENTIFIER_DEFAULT() { |
| 614 addTestFile(''' | 608 addTestFile(''' |
| 615 main() { | 609 main() { |
| 616 aaa = 42; | 610 aaa = 42; |
| 617 bbb(84); | 611 bbb(84); |
| 618 CCC ccc; | 612 CCC ccc; |
| 619 } | 613 } |
| 620 '''); | 614 '''); |
| 621 return prepareHighlights().then((_) { | 615 return prepareHighlights().then((_) { |
| 622 assertHasRegion(HighlightType.IDENTIFIER_DEFAULT, 'aaa = 42'); | 616 assertHasRegion(HighlightRegionType.IDENTIFIER_DEFAULT, 'aaa = 42'); |
| 623 assertHasRegion(HighlightType.IDENTIFIER_DEFAULT, 'bbb(84)'); | 617 assertHasRegion(HighlightRegionType.IDENTIFIER_DEFAULT, 'bbb(84)'); |
| 624 assertHasRegion(HighlightType.IDENTIFIER_DEFAULT, 'CCC ccc'); | 618 assertHasRegion(HighlightRegionType.IDENTIFIER_DEFAULT, 'CCC ccc'); |
| 625 }); | 619 }); |
| 626 } | 620 } |
| 627 | 621 |
| 628 test_IMPORT_PREFIX() { | 622 test_IMPORT_PREFIX() { |
| 629 addTestFile(''' | 623 addTestFile(''' |
| 630 import 'dart:math' as ma; | 624 import 'dart:math' as ma; |
| 631 main() { | 625 main() { |
| 632 ma.max(1, 2); | 626 ma.max(1, 2); |
| 633 } | 627 } |
| 634 '''); | 628 '''); |
| 635 return prepareHighlights().then((_) { | 629 return prepareHighlights().then((_) { |
| 636 assertHasRegion(HighlightType.IMPORT_PREFIX, 'ma;'); | 630 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma;'); |
| 637 assertHasRegion(HighlightType.IMPORT_PREFIX, 'ma.max'); | 631 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma.max'); |
| 638 }); | 632 }); |
| 639 } | 633 } |
| 640 | 634 |
| 641 test_KEYWORD() { | 635 test_KEYWORD() { |
| 642 addTestFile(''' | 636 addTestFile(''' |
| 643 main() { | 637 main() { |
| 644 assert(true); | 638 assert(true); |
| 645 for (;;) break; | 639 for (;;) break; |
| 646 switch (0) { | 640 switch (0) { |
| 647 case 0: break; | 641 case 0: break; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 665 class A {} | 659 class A {} |
| 666 class B extends A { | 660 class B extends A { |
| 667 B() : super(); | 661 B() : super(); |
| 668 m() { | 662 m() { |
| 669 return this; | 663 return this; |
| 670 } | 664 } |
| 671 } | 665 } |
| 672 class C = Object with A; | 666 class C = Object with A; |
| 673 '''); | 667 '''); |
| 674 return prepareHighlights().then((_) { | 668 return prepareHighlights().then((_) { |
| 675 assertHasRegion(HighlightType.KEYWORD, 'assert(true)'); | 669 assertHasRegion(HighlightRegionType.KEYWORD, 'assert(true)'); |
| 676 assertHasRegion(HighlightType.KEYWORD, 'for (;;)'); | 670 assertHasRegion(HighlightRegionType.KEYWORD, 'for (;;)'); |
| 677 assertHasRegion(HighlightType.KEYWORD, 'for (var v4 in'); | 671 assertHasRegion(HighlightRegionType.KEYWORD, 'for (var v4 in'); |
| 678 assertHasRegion(HighlightType.KEYWORD, 'break;'); | 672 assertHasRegion(HighlightRegionType.KEYWORD, 'break;'); |
| 679 assertHasRegion(HighlightType.KEYWORD, 'case 0:'); | 673 assertHasRegion(HighlightRegionType.KEYWORD, 'case 0:'); |
| 680 assertHasRegion(HighlightType.KEYWORD, 'catch (e) {}'); | 674 assertHasRegion(HighlightRegionType.KEYWORD, 'catch (e) {}'); |
| 681 assertHasRegion(HighlightType.KEYWORD, 'class A {}'); | 675 assertHasRegion(HighlightRegionType.KEYWORD, 'class A {}'); |
| 682 assertHasRegion(HighlightType.KEYWORD, 'const v1'); | 676 assertHasRegion(HighlightRegionType.KEYWORD, 'const v1'); |
| 683 assertHasRegion(HighlightType.KEYWORD, 'continue;'); | 677 assertHasRegion(HighlightRegionType.KEYWORD, 'continue;'); |
| 684 assertHasRegion(HighlightType.KEYWORD, 'default:'); | 678 assertHasRegion(HighlightRegionType.KEYWORD, 'default:'); |
| 685 assertHasRegion(HighlightType.KEYWORD, 'do {} while'); | 679 assertHasRegion(HighlightRegionType.KEYWORD, 'do {} while'); |
| 686 assertHasRegion(HighlightType.KEYWORD, 'if (true)'); | 680 assertHasRegion(HighlightRegionType.KEYWORD, 'if (true)'); |
| 687 assertHasRegion(HighlightType.KEYWORD, 'false;'); | 681 assertHasRegion(HighlightRegionType.KEYWORD, 'false;'); |
| 688 assertHasRegion(HighlightType.KEYWORD, 'final v3 ='); | 682 assertHasRegion(HighlightRegionType.KEYWORD, 'final v3 ='); |
| 689 assertHasRegion(HighlightType.KEYWORD, 'finally {}'); | 683 assertHasRegion(HighlightRegionType.KEYWORD, 'finally {}'); |
| 690 assertHasRegion(HighlightType.KEYWORD, 'in []'); | 684 assertHasRegion(HighlightRegionType.KEYWORD, 'in []'); |
| 691 assertHasRegion(HighlightType.KEYWORD, 'is int'); | 685 assertHasRegion(HighlightRegionType.KEYWORD, 'is int'); |
| 692 assertHasRegion(HighlightType.KEYWORD, 'new A();'); | 686 assertHasRegion(HighlightRegionType.KEYWORD, 'new A();'); |
| 693 assertHasRegion(HighlightType.KEYWORD, 'rethrow;'); | 687 assertHasRegion(HighlightRegionType.KEYWORD, 'rethrow;'); |
| 694 assertHasRegion(HighlightType.KEYWORD, 'return this'); | 688 assertHasRegion(HighlightRegionType.KEYWORD, 'return this'); |
| 695 assertHasRegion(HighlightType.KEYWORD, 'super();'); | 689 assertHasRegion(HighlightRegionType.KEYWORD, 'super();'); |
| 696 assertHasRegion(HighlightType.KEYWORD, 'switch (0)'); | 690 assertHasRegion(HighlightRegionType.KEYWORD, 'switch (0)'); |
| 697 assertHasRegion(HighlightType.KEYWORD, 'this;'); | 691 assertHasRegion(HighlightRegionType.KEYWORD, 'this;'); |
| 698 assertHasRegion(HighlightType.KEYWORD, 'true;'); | 692 assertHasRegion(HighlightRegionType.KEYWORD, 'true;'); |
| 699 assertHasRegion(HighlightType.KEYWORD, 'try {'); | 693 assertHasRegion(HighlightRegionType.KEYWORD, 'try {'); |
| 700 assertHasRegion(HighlightType.KEYWORD, 'while (true) {}'); | 694 assertHasRegion(HighlightRegionType.KEYWORD, 'while (true) {}'); |
| 701 assertHasRegion(HighlightType.KEYWORD, 'while (true);'); | 695 assertHasRegion(HighlightRegionType.KEYWORD, 'while (true);'); |
| 702 assertHasRegion(HighlightType.KEYWORD, 'with A;'); | 696 assertHasRegion(HighlightRegionType.KEYWORD, 'with A;'); |
| 703 }); | 697 }); |
| 704 } | 698 } |
| 705 | 699 |
| 706 test_KEYWORD_void() { | 700 test_KEYWORD_void() { |
| 707 addTestFile(''' | 701 addTestFile(''' |
| 708 void main() { | 702 void main() { |
| 709 } | 703 } |
| 710 '''); | 704 '''); |
| 711 return prepareHighlights().then((_) { | 705 return prepareHighlights().then((_) { |
| 712 assertHasRegion(HighlightType.KEYWORD, 'void main()'); | 706 assertHasRegion(HighlightRegionType.KEYWORD, 'void main()'); |
| 713 }); | 707 }); |
| 714 } | 708 } |
| 715 | 709 |
| 716 test_LITERAL_BOOLEAN() { | 710 test_LITERAL_BOOLEAN() { |
| 717 addTestFile('var V = true;'); | 711 addTestFile('var V = true;'); |
| 718 return prepareHighlights().then((_) { | 712 return prepareHighlights().then((_) { |
| 719 assertHasRegion(HighlightType.LITERAL_BOOLEAN, 'true;'); | 713 assertHasRegion(HighlightRegionType.LITERAL_BOOLEAN, 'true;'); |
| 720 }); | 714 }); |
| 721 } | 715 } |
| 722 | 716 |
| 723 test_LITERAL_DOUBLE() { | 717 test_LITERAL_DOUBLE() { |
| 724 addTestFile('var V = 4.2;'); | 718 addTestFile('var V = 4.2;'); |
| 725 return prepareHighlights().then((_) { | 719 return prepareHighlights().then((_) { |
| 726 assertHasRegion(HighlightType.LITERAL_DOUBLE, '4.2;', '4.2'.length); | 720 assertHasRegion(HighlightRegionType.LITERAL_DOUBLE, '4.2;', '4.2'.length); |
| 727 }); | 721 }); |
| 728 } | 722 } |
| 729 | 723 |
| 730 test_LITERAL_INTEGER() { | 724 test_LITERAL_INTEGER() { |
| 731 addTestFile('var V = 42;'); | 725 addTestFile('var V = 42;'); |
| 732 return prepareHighlights().then((_) { | 726 return prepareHighlights().then((_) { |
| 733 assertHasRegion(HighlightType.LITERAL_INTEGER, '42;'); | 727 assertHasRegion(HighlightRegionType.LITERAL_INTEGER, '42;'); |
| 734 }); | 728 }); |
| 735 } | 729 } |
| 736 | 730 |
| 737 test_LITERAL_LIST() { | 731 test_LITERAL_LIST() { |
| 738 addTestFile('var V = <int>[1, 2, 3];'); | 732 addTestFile('var V = <int>[1, 2, 3];'); |
| 739 return prepareHighlights().then((_) { | 733 return prepareHighlights().then((_) { |
| 740 assertHasStringRegion(HighlightType.LITERAL_LIST, '<int>[1, 2, 3]'); | 734 assertHasStringRegion(HighlightRegionType.LITERAL_LIST, '<int>[1, 2, 3]'); |
| 741 }); | 735 }); |
| 742 } | 736 } |
| 743 | 737 |
| 744 test_LITERAL_MAP() { | 738 test_LITERAL_MAP() { |
| 745 addTestFile("var V = const <int, String>{1: 'a', 2: 'b', 3: 'c'};"); | 739 addTestFile("var V = const <int, String>{1: 'a', 2: 'b', 3: 'c'};"); |
| 746 return prepareHighlights().then((_) { | 740 return prepareHighlights().then((_) { |
| 747 assertHasStringRegion( | 741 assertHasStringRegion( |
| 748 HighlightType.LITERAL_MAP, | 742 HighlightRegionType.LITERAL_MAP, |
| 749 "const <int, String>{1: 'a', 2: 'b', 3: 'c'}"); | 743 "const <int, String>{1: 'a', 2: 'b', 3: 'c'}"); |
| 750 }); | 744 }); |
| 751 } | 745 } |
| 752 | 746 |
| 753 test_LITERAL_STRING() { | 747 test_LITERAL_STRING() { |
| 754 addTestFile('var V = "abc";'); | 748 addTestFile('var V = "abc";'); |
| 755 return prepareHighlights().then((_) { | 749 return prepareHighlights().then((_) { |
| 756 assertHasRegion(HighlightType.LITERAL_STRING, '"abc";', '"abc"'.length); | 750 assertHasRegion(HighlightRegionType.LITERAL_STRING, '"abc";', '"abc"'.leng
th); |
| 757 }); | 751 }); |
| 758 } | 752 } |
| 759 | 753 |
| 760 test_LOCAL_VARIABLE() { | 754 test_LOCAL_VARIABLE() { |
| 761 addTestFile(''' | 755 addTestFile(''' |
| 762 main() { | 756 main() { |
| 763 int vvv = 0; | 757 int vvv = 0; |
| 764 vvv; | 758 vvv; |
| 765 vvv = 1; | 759 vvv = 1; |
| 766 } | 760 } |
| 767 '''); | 761 '''); |
| 768 return prepareHighlights().then((_) { | 762 return prepareHighlights().then((_) { |
| 769 assertHasRegion(HighlightType.LOCAL_VARIABLE_DECLARATION, 'vvv = 0'); | 763 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE_DECLARATION, 'vvv = 0')
; |
| 770 assertHasRegion(HighlightType.LOCAL_VARIABLE, 'vvv;'); | 764 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE, 'vvv;'); |
| 771 assertHasRegion(HighlightType.LOCAL_VARIABLE, 'vvv = 1;'); | 765 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE, 'vvv = 1;'); |
| 772 }); | 766 }); |
| 773 } | 767 } |
| 774 | 768 |
| 775 test_METHOD() { | 769 test_METHOD() { |
| 776 addTestFile(''' | 770 addTestFile(''' |
| 777 class A { | 771 class A { |
| 778 aaa() {} | 772 aaa() {} |
| 779 static bbb() {} | 773 static bbb() {} |
| 780 } | 774 } |
| 781 main(A a) { | 775 main(A a) { |
| 782 a.aaa(); | 776 a.aaa(); |
| 783 a.aaa; | 777 a.aaa; |
| 784 A.bbb(); | 778 A.bbb(); |
| 785 A.bbb; | 779 A.bbb; |
| 786 } | 780 } |
| 787 '''); | 781 '''); |
| 788 return prepareHighlights().then((_) { | 782 return prepareHighlights().then((_) { |
| 789 assertHasRegion(HighlightType.METHOD_DECLARATION, 'aaa() {}'); | 783 assertHasRegion(HighlightRegionType.METHOD_DECLARATION, 'aaa() {}'); |
| 790 assertHasRegion(HighlightType.METHOD_DECLARATION_STATIC, 'bbb() {}'); | 784 assertHasRegion(HighlightRegionType.METHOD_DECLARATION_STATIC, 'bbb() {}')
; |
| 791 assertHasRegion(HighlightType.METHOD, 'aaa();'); | 785 assertHasRegion(HighlightRegionType.METHOD, 'aaa();'); |
| 792 assertHasRegion(HighlightType.METHOD, 'aaa;'); | 786 assertHasRegion(HighlightRegionType.METHOD, 'aaa;'); |
| 793 assertHasRegion(HighlightType.METHOD_STATIC, 'bbb();'); | 787 assertHasRegion(HighlightRegionType.METHOD_STATIC, 'bbb();'); |
| 794 assertHasRegion(HighlightType.METHOD_STATIC, 'bbb;'); | 788 assertHasRegion(HighlightRegionType.METHOD_STATIC, 'bbb;'); |
| 795 }); | 789 }); |
| 796 } | 790 } |
| 797 | 791 |
| 798 test_METHOD_bestType() { | 792 test_METHOD_bestType() { |
| 799 addTestFile(''' | 793 addTestFile(''' |
| 800 main(p) { | 794 main(p) { |
| 801 if (p is List) { | 795 if (p is List) { |
| 802 p.add(null); | 796 p.add(null); |
| 803 } | 797 } |
| 804 } | 798 } |
| 805 '''); | 799 '''); |
| 806 return prepareHighlights().then((_) { | 800 return prepareHighlights().then((_) { |
| 807 assertHasRegion(HighlightType.METHOD, 'add(null)'); | 801 assertHasRegion(HighlightRegionType.METHOD, 'add(null)'); |
| 808 }); | 802 }); |
| 809 } | 803 } |
| 810 | 804 |
| 811 test_PARAMETER() { | 805 test_PARAMETER() { |
| 812 addTestFile(''' | 806 addTestFile(''' |
| 813 main(int p) { | 807 main(int p) { |
| 814 p; | 808 p; |
| 815 p = 42; | 809 p = 42; |
| 816 } | 810 } |
| 817 '''); | 811 '''); |
| 818 return prepareHighlights().then((_) { | 812 return prepareHighlights().then((_) { |
| 819 assertHasRegion(HighlightType.PARAMETER, 'p) {'); | 813 assertHasRegion(HighlightRegionType.PARAMETER, 'p) {'); |
| 820 assertHasRegion(HighlightType.PARAMETER, 'p;'); | 814 assertHasRegion(HighlightRegionType.PARAMETER, 'p;'); |
| 821 assertHasRegion(HighlightType.PARAMETER, 'p = 42'); | 815 assertHasRegion(HighlightRegionType.PARAMETER, 'p = 42'); |
| 822 }); | 816 }); |
| 823 } | 817 } |
| 824 | 818 |
| 825 test_SETTER_DECLARATION() { | 819 test_SETTER_DECLARATION() { |
| 826 addTestFile(''' | 820 addTestFile(''' |
| 827 set aaa(x) {} | 821 set aaa(x) {} |
| 828 class A { | 822 class A { |
| 829 set bbb(x) {} | 823 set bbb(x) {} |
| 830 } | 824 } |
| 831 main(A a) { | 825 main(A a) { |
| 832 aaa = 1; | 826 aaa = 1; |
| 833 a.bbb = 2; | 827 a.bbb = 2; |
| 834 } | 828 } |
| 835 '''); | 829 '''); |
| 836 return prepareHighlights().then((_) { | 830 return prepareHighlights().then((_) { |
| 837 assertHasRegion(HighlightType.SETTER_DECLARATION, 'aaa(x)'); | 831 assertHasRegion(HighlightRegionType.SETTER_DECLARATION, 'aaa(x)'); |
| 838 assertHasRegion(HighlightType.SETTER_DECLARATION, 'bbb(x)'); | 832 assertHasRegion(HighlightRegionType.SETTER_DECLARATION, 'bbb(x)'); |
| 839 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'aaa = 1'); | 833 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'aaa = 1'); |
| 840 assertHasRegion(HighlightType.FIELD, 'bbb = 2'); | 834 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 2'); |
| 841 }); | 835 }); |
| 842 } | 836 } |
| 843 | 837 |
| 844 test_TOP_LEVEL_VARIABLE() { | 838 test_TOP_LEVEL_VARIABLE() { |
| 845 addTestFile(''' | 839 addTestFile(''' |
| 846 const VVV = 0; | 840 const VVV = 0; |
| 847 @VVV // annotation | 841 @VVV // annotation |
| 848 main() { | 842 main() { |
| 849 print(VVV); | 843 print(VVV); |
| 850 VVV = 1; | 844 VVV = 1; |
| 851 } | 845 } |
| 852 '''); | 846 '''); |
| 853 return prepareHighlights().then((_) { | 847 return prepareHighlights().then((_) { |
| 854 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'VVV = 0'); | 848 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV = 0'); |
| 855 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'VVV // annotation'); | 849 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV // annotation
'); |
| 856 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'VVV);'); | 850 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV);'); |
| 857 assertHasRegion(HighlightType.TOP_LEVEL_VARIABLE, 'VVV = 1'); | 851 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV = 1'); |
| 858 }); | 852 }); |
| 859 } | 853 } |
| 860 | 854 |
| 861 test_TYPE_NAME_DYNAMIC() { | 855 test_TYPE_NAME_DYNAMIC() { |
| 862 addTestFile(''' | 856 addTestFile(''' |
| 863 dynamic main() { | 857 dynamic main() { |
| 864 dynamic = 42; | 858 dynamic = 42; |
| 865 } | 859 } |
| 866 '''); | 860 '''); |
| 867 return prepareHighlights().then((_) { | 861 return prepareHighlights().then((_) { |
| 868 assertHasRegion(HighlightType.TYPE_NAME_DYNAMIC, 'dynamic main()'); | 862 assertHasRegion(HighlightRegionType.TYPE_NAME_DYNAMIC, 'dynamic main()'); |
| 869 assertNoRegion(HighlightType.IDENTIFIER_DEFAULT, 'dynamic main()'); | 863 assertNoRegion(HighlightRegionType.IDENTIFIER_DEFAULT, 'dynamic main()'); |
| 870 assertNoRegion(HighlightType.TYPE_NAME_DYNAMIC, 'dynamic = 42'); | 864 assertNoRegion(HighlightRegionType.TYPE_NAME_DYNAMIC, 'dynamic = 42'); |
| 871 }); | 865 }); |
| 872 } | 866 } |
| 873 | 867 |
| 874 test_TYPE_PARAMETER() { | 868 test_TYPE_PARAMETER() { |
| 875 addTestFile(''' | 869 addTestFile(''' |
| 876 class A<T> { | 870 class A<T> { |
| 877 T fff; | 871 T fff; |
| 878 T mmm(T p) => null; | 872 T mmm(T p) => null; |
| 879 } | 873 } |
| 880 '''); | 874 '''); |
| 881 return prepareHighlights().then((_) { | 875 return prepareHighlights().then((_) { |
| 882 assertHasRegion(HighlightType.TYPE_PARAMETER, 'T> {'); | 876 assertHasRegion(HighlightRegionType.TYPE_PARAMETER, 'T> {'); |
| 883 assertHasRegion(HighlightType.TYPE_PARAMETER, 'T fff;'); | 877 assertHasRegion(HighlightRegionType.TYPE_PARAMETER, 'T fff;'); |
| 884 assertHasRegion(HighlightType.TYPE_PARAMETER, 'T mmm('); | 878 assertHasRegion(HighlightRegionType.TYPE_PARAMETER, 'T mmm('); |
| 885 assertHasRegion(HighlightType.TYPE_PARAMETER, 'T p)'); | 879 assertHasRegion(HighlightRegionType.TYPE_PARAMETER, 'T p)'); |
| 886 }); | 880 }); |
| 887 } | 881 } |
| 888 | 882 |
| 889 void _addLibraryForTestPart() { | 883 void _addLibraryForTestPart() { |
| 890 addFile('$testFolder/my_lib.dart', ''' | 884 addFile('$testFolder/my_lib.dart', ''' |
| 891 library lib; | 885 library lib; |
| 892 part 'test.dart'; | 886 part 'test.dart'; |
| 893 '''); | 887 '''); |
| 894 } | 888 } |
| 895 } | 889 } |
| 896 | 890 |
| 897 | 891 |
| 898 @ReflectiveTestCase() | 892 @ReflectiveTestCase() |
| 899 class HighlightTypeTest { | 893 class HighlightTypeTest { |
| 900 void test_toString() { | 894 void test_toString() { |
| 901 expect(HighlightType.CLASS.toString(), HighlightType.CLASS.name); | 895 expect(HighlightRegionType.CLASS.toString(), 'HighlightRegionType.CLASS'); |
| 902 } | 896 } |
| 903 | 897 |
| 904 void test_valueOf() { | 898 void test_constructor() { |
| 905 expect( | 899 expect( |
| 906 HighlightType.CLASS, | 900 HighlightRegionType.CLASS, |
| 907 HighlightType.valueOf(HighlightType.CLASS.name)); | 901 new HighlightRegionType(HighlightRegionType.CLASS.name)); |
| 908 } | 902 } |
| 909 | 903 |
| 910 void test_valueOf_unknown() { | 904 void test_valueOf_unknown() { |
| 911 expect(() { | 905 expect(() { |
| 912 HighlightType.valueOf('no-such-type'); | 906 new HighlightRegionType('no-such-type'); |
| 913 }, throws); | 907 }, throws); |
| 914 } | 908 } |
| 915 } | 909 } |
| OLD | NEW |