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