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

Side by Side Diff: pkg/analysis_server/test/analysis_notification_highlights_test.dart

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

Powered by Google App Engine
This is Rietveld 408576698