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

Side by Side Diff: pkg/analysis_server/test/analysis/notification_navigation_test.dart

Issue 1478513002: Use async/await in all analysis domain tests. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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
OLDNEW
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.analysis.notification.navigation; 5 library test.analysis.notification.navigation;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 172 }
173 if (exists == true) { 173 if (exists == true) {
174 fail('Expected to find (offset=$offset; length=$length) in\n' 174 fail('Expected to find (offset=$offset; length=$length) in\n'
175 '${regions.join('\n')}'); 175 '${regions.join('\n')}');
176 } 176 }
177 } 177 }
178 } 178 }
179 179
180 @reflectiveTest 180 @reflectiveTest
181 class AnalysisNotificationNavigationTest extends AbstractNavigationTest { 181 class AnalysisNotificationNavigationTest extends AbstractNavigationTest {
182 Future prepareNavigation() { 182 Future prepareNavigation() async {
183 addAnalysisSubscription(AnalysisService.NAVIGATION, testFile); 183 addAnalysisSubscription(AnalysisService.NAVIGATION, testFile);
184 return waitForTasksFinished().then((_) { 184 await waitForTasksFinished();
185 assertRegionsSorted(); 185 assertRegionsSorted();
186 });
187 } 186 }
188 187
189 void processNotification(Notification notification) { 188 void processNotification(Notification notification) {
190 if (notification.event == ANALYSIS_NAVIGATION) { 189 if (notification.event == ANALYSIS_NAVIGATION) {
191 var params = new AnalysisNavigationParams.fromNotification(notification); 190 var params = new AnalysisNavigationParams.fromNotification(notification);
192 if (params.file == testFile) { 191 if (params.file == testFile) {
193 regions = params.regions; 192 regions = params.regions;
194 targets = params.targets; 193 targets = params.targets;
195 targetFiles = params.files; 194 targetFiles = params.files;
196 } 195 }
197 } 196 }
198 } 197 }
199 198
200 @override 199 @override
201 void setUp() { 200 void setUp() {
202 super.setUp(); 201 super.setUp();
203 createProject(); 202 createProject();
204 } 203 }
205 204
206 test_afterAnalysis() { 205 test_afterAnalysis() async {
207 addTestFile(''' 206 addTestFile('''
208 class AAA {} 207 class AAA {}
209 AAA aaa; 208 AAA aaa;
210 '''); 209 ''');
211 return waitForTasksFinished().then((_) { 210 await waitForTasksFinished();
212 return prepareNavigation().then((_) { 211 await prepareNavigation();
213 assertHasRegionTarget('AAA aaa;', 'AAA {}'); 212 assertHasRegionTarget('AAA aaa;', 'AAA {}');
214 });
215 });
216 } 213 }
217 214
218 test_annotationConstructor_implicit() async { 215 test_annotationConstructor_implicit() async {
219 addTestFile(''' 216 addTestFile('''
220 class A { 217 class A {
221 } 218 }
222 @A() 219 @A()
223 main() { 220 main() {
224 } 221 }
225 '''); 222 ''');
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 addTestFile(''' 312 addTestFile('''
316 import 'mayn.dart' as man; 313 import 'mayn.dart' as man;
317 @man.myan // ref 314 @man.myan // ref
318 main() { 315 main() {
319 } 316 }
320 '''); 317 ''');
321 await prepareNavigation(); 318 await prepareNavigation();
322 assertHasRegion('myan // ref'); 319 assertHasRegion('myan // ref');
323 } 320 }
324 321
325 test_class_fromSDK() { 322 test_class_fromSDK() async {
326 addTestFile(''' 323 addTestFile('''
327 int V = 42; 324 int V = 42;
328 '''); 325 ''');
329 return prepareNavigation().then((_) { 326 await prepareNavigation();
330 assertHasRegion('int V'); 327 assertHasRegion('int V');
331 int targetIndex = testTargetIndexes[0]; 328 int targetIndex = testTargetIndexes[0];
332 NavigationTarget target = targets[targetIndex]; 329 NavigationTarget target = targets[targetIndex];
333 expect(target.startLine, greaterThan(0)); 330 expect(target.startLine, greaterThan(0));
334 expect(target.startColumn, greaterThan(0)); 331 expect(target.startColumn, greaterThan(0));
335 });
336 } 332 }
337 333
338 test_constructor_named() { 334 test_constructor_named() async {
339 addTestFile(''' 335 addTestFile('''
340 class A { 336 class A {
341 A.named(BBB p) {} 337 A.named(BBB p) {}
342 } 338 }
343 class BBB {} 339 class BBB {}
344 '''); 340 ''');
345 return prepareNavigation().then((_) { 341 await prepareNavigation();
346 // has region for complete "A.named" 342 // has region for complete "A.named"
347 assertHasRegionString('A.named'); 343 assertHasRegionString('A.named');
348 assertHasTarget('named(BBB'); 344 assertHasTarget('named(BBB');
349 // no separate regions for "A" and "named" 345 // no separate regions for "A" and "named"
350 assertNoRegion('A.named(', 'A'.length); 346 assertNoRegion('A.named(', 'A'.length);
351 assertNoRegion('named(', 'named'.length); 347 assertNoRegion('named(', 'named'.length);
352 // validate that we don't forget to resolve parameters 348 // validate that we don't forget to resolve parameters
353 assertHasRegionTarget('BBB p', 'BBB {}'); 349 assertHasRegionTarget('BBB p', 'BBB {}');
354 });
355 } 350 }
356 351
357 test_constructor_unnamed() { 352 test_constructor_unnamed() async {
358 addTestFile(''' 353 addTestFile('''
359 class A { 354 class A {
360 A(BBB p) {} 355 A(BBB p) {}
361 } 356 }
362 class BBB {} 357 class BBB {}
363 '''); 358 ''');
364 return prepareNavigation().then((_) { 359 await prepareNavigation();
365 // has region for complete "A.named" 360 // has region for complete "A.named"
366 assertHasRegion("A(BBB"); 361 assertHasRegion("A(BBB");
367 assertHasTarget("A(BBB", 0); 362 assertHasTarget("A(BBB", 0);
368 // validate that we don't forget to resolve parameters 363 // validate that we don't forget to resolve parameters
369 assertHasRegionTarget('BBB p', 'BBB {}'); 364 assertHasRegionTarget('BBB p', 'BBB {}');
370 });
371 } 365 }
372 366
373 test_factoryRedirectingConstructor_implicit() { 367 test_factoryRedirectingConstructor_implicit() async {
374 addTestFile(''' 368 addTestFile('''
375 class A { 369 class A {
376 factory A() = B; 370 factory A() = B;
377 } 371 }
378 class B { 372 class B {
379 } 373 }
380 '''); 374 ''');
381 return prepareNavigation().then((_) { 375 await prepareNavigation();
382 assertHasRegion('B;'); 376 assertHasRegion('B;');
383 assertHasTarget('B {'); 377 assertHasTarget('B {');
384 });
385 } 378 }
386 379
387 test_factoryRedirectingConstructor_implicit_withTypeArgument() { 380 test_factoryRedirectingConstructor_implicit_withTypeArgument() async {
388 addTestFile(''' 381 addTestFile('''
389 class A {} 382 class A {}
390 class B { 383 class B {
391 factory B() = C<A>; 384 factory B() = C<A>;
392 } 385 }
393 class C<T> {} 386 class C<T> {}
394 '''); 387 ''');
395 return prepareNavigation().then((_) { 388 await prepareNavigation();
396 { 389 {
397 assertHasRegion('C<A>'); 390 assertHasRegion('C<A>');
398 assertHasTarget('C<T> {'); 391 assertHasTarget('C<T> {');
399 } 392 }
400 { 393 {
401 assertHasRegion('A>;'); 394 assertHasRegion('A>;');
402 assertHasTarget('A {'); 395 assertHasTarget('A {');
403 } 396 }
404 });
405 } 397 }
406 398
407 test_factoryRedirectingConstructor_named() { 399 test_factoryRedirectingConstructor_named() async {
408 addTestFile(''' 400 addTestFile('''
409 class A { 401 class A {
410 factory A() = B.named; 402 factory A() = B.named;
411 } 403 }
412 class B { 404 class B {
413 B.named(); 405 B.named();
414 } 406 }
415 '''); 407 ''');
416 return prepareNavigation().then((_) { 408 await prepareNavigation();
417 { 409 {
418 assertHasRegionString('B.named;', 'B'.length); 410 assertHasRegionString('B.named;', 'B'.length);
419 assertHasTarget('named();'); 411 assertHasTarget('named();');
420 } 412 }
421 { 413 {
422 assertHasRegionString('named;', 'named'.length); 414 assertHasRegionString('named;', 'named'.length);
423 assertHasTarget('named();'); 415 assertHasTarget('named();');
424 } 416 }
425 });
426 } 417 }
427 418
428 test_factoryRedirectingConstructor_named_withTypeArgument() { 419 test_factoryRedirectingConstructor_named_withTypeArgument() async {
429 addTestFile(''' 420 addTestFile('''
430 class A {} 421 class A {}
431 class B { 422 class B {
432 factory B.named() = C<A>.named; 423 factory B.named() = C<A>.named;
433 } 424 }
434 class C<T> { 425 class C<T> {
435 C.named() {} 426 C.named() {}
436 } 427 }
437 '''); 428 ''');
438 return prepareNavigation().then((_) { 429 await prepareNavigation();
439 { 430 {
440 assertHasRegion('C<A>'); 431 assertHasRegion('C<A>');
441 assertHasTarget('named() {}'); 432 assertHasTarget('named() {}');
442 } 433 }
443 { 434 {
444 assertHasRegion('A>.named'); 435 assertHasRegion('A>.named');
445 assertHasTarget('A {'); 436 assertHasTarget('A {');
446 } 437 }
447 { 438 {
448 assertHasRegion('named;', 'named'.length); 439 assertHasRegion('named;', 'named'.length);
449 assertHasTarget('named() {}'); 440 assertHasTarget('named() {}');
450 } 441 }
451 });
452 } 442 }
453 443
454 test_factoryRedirectingConstructor_unnamed() { 444 test_factoryRedirectingConstructor_unnamed() async {
455 addTestFile(''' 445 addTestFile('''
456 class A { 446 class A {
457 factory A() = B; 447 factory A() = B;
458 } 448 }
459 class B { 449 class B {
460 B() {} 450 B() {}
461 } 451 }
462 '''); 452 ''');
463 return prepareNavigation().then((_) { 453 await prepareNavigation();
464 assertHasRegion('B;'); 454 assertHasRegion('B;');
465 assertHasTarget('B() {}', 0); 455 assertHasTarget('B() {}', 0);
466 });
467 } 456 }
468 457
469 test_factoryRedirectingConstructor_unnamed_withTypeArgument() { 458 test_factoryRedirectingConstructor_unnamed_withTypeArgument() async {
470 addTestFile(''' 459 addTestFile('''
471 class A {} 460 class A {}
472 class B { 461 class B {
473 factory B() = C<A>; 462 factory B() = C<A>;
474 } 463 }
475 class C<T> { 464 class C<T> {
476 C() {} 465 C() {}
477 } 466 }
478 '''); 467 ''');
479 return prepareNavigation().then((_) { 468 await prepareNavigation();
480 { 469 {
481 assertHasRegion('C<A>'); 470 assertHasRegion('C<A>');
482 assertHasTarget('C() {}', 0); 471 assertHasTarget('C() {}', 0);
483 } 472 }
484 { 473 {
485 assertHasRegion('A>;'); 474 assertHasRegion('A>;');
486 assertHasTarget('A {'); 475 assertHasTarget('A {');
487 } 476 }
488 });
489 } 477 }
490 478
491 test_factoryRedirectingConstructor_unresolved() { 479 test_factoryRedirectingConstructor_unresolved() async {
492 addTestFile(''' 480 addTestFile('''
493 class A { 481 class A {
494 factory A() = B; 482 factory A() = B;
495 } 483 }
496 '''); 484 ''');
497 return prepareNavigation().then((_) { 485 await prepareNavigation();
498 // don't check regions, but there should be no exceptions 486 // don't check regions, but there should be no exceptions
499 });
500 } 487 }
501 488
502 test_fieldFormalParameter() { 489 test_fieldFormalParameter() async {
503 addTestFile(''' 490 addTestFile('''
504 class AAA { 491 class AAA {
505 int fff = 123; 492 int fff = 123;
506 AAA(this.fff); 493 AAA(this.fff);
507 } 494 }
508 '''); 495 ''');
509 return prepareNavigation().then((_) { 496 await prepareNavigation();
510 assertHasRegionTarget('fff);', 'fff = 123'); 497 assertHasRegionTarget('fff);', 'fff = 123');
511 });
512 } 498 }
513 499
514 test_fieldFormalParameter_unresolved() { 500 test_fieldFormalParameter_unresolved() async {
515 addTestFile(''' 501 addTestFile('''
516 class AAA { 502 class AAA {
517 AAA(this.fff); 503 AAA(this.fff);
518 } 504 }
519 '''); 505 ''');
520 return prepareNavigation().then((_) { 506 await prepareNavigation();
521 assertNoRegion('fff);', 3); 507 assertNoRegion('fff);', 3);
522 });
523 } 508 }
524 509
525 test_identifier_resolved() { 510 test_identifier_resolved() async {
526 addTestFile(''' 511 addTestFile('''
527 class AAA {} 512 class AAA {}
528 main() { 513 main() {
529 AAA aaa = null; 514 AAA aaa = null;
530 print(aaa); 515 print(aaa);
531 } 516 }
532 '''); 517 ''');
533 return prepareNavigation().then((_) { 518 await prepareNavigation();
534 assertHasRegionTarget('AAA aaa', 'AAA {}'); 519 assertHasRegionTarget('AAA aaa', 'AAA {}');
535 assertHasRegionTarget('aaa);', 'aaa = null'); 520 assertHasRegionTarget('aaa);', 'aaa = null');
536 assertHasRegionTarget('main() {', 'main() {'); 521 assertHasRegionTarget('main() {', 'main() {');
537 });
538 } 522 }
539 523
540 test_identifier_unresolved() { 524 test_identifier_unresolved() async {
541 addTestFile(''' 525 addTestFile('''
542 main() { 526 main() {
543 print(vvv); 527 print(vvv);
544 } 528 }
545 '''); 529 ''');
546 return prepareNavigation().then((_) { 530 await prepareNavigation();
547 assertNoRegionString('vvv'); 531 assertNoRegionString('vvv');
548 });
549 } 532 }
550 533
551 test_identifier_whenStrayImportDirective() { 534 test_identifier_whenStrayImportDirective() async {
552 addTestFile(''' 535 addTestFile('''
553 main() { 536 main() {
554 int aaa = 42; 537 int aaa = 42;
555 print(aaa); 538 print(aaa);
556 } 539 }
557 import 'dart:math'; 540 import 'dart:math';
558 '''); 541 ''');
559 return prepareNavigation().then((_) { 542 await prepareNavigation();
560 assertHasRegionTarget('aaa);', 'aaa = 42'); 543 assertHasRegionTarget('aaa);', 'aaa = 42');
561 });
562 } 544 }
563 545
564 test_inComment() async { 546 test_inComment() async {
565 addTestFile(''' 547 addTestFile('''
566 class FirstClass {} 548 class FirstClass {}
567 class SecondClass { 549 class SecondClass {
568 /** 550 /**
569 * Return a [FirstClass] object equivalent to this object in every other way. 551 * Return a [FirstClass] object equivalent to this object in every other way.
570 */ 552 */
571 convert() { 553 convert() {
572 return new FirstClass(); 554 return new FirstClass();
573 } 555 }
574 } 556 }
575 '''); 557 ''');
576 await prepareNavigation(); 558 await prepareNavigation();
577 assertHasRegionTarget('FirstClass]', 'FirstClass {'); 559 assertHasRegionTarget('FirstClass]', 'FirstClass {');
578 assertHasRegionTarget('FirstClass(', 'FirstClass {'); 560 assertHasRegionTarget('FirstClass(', 'FirstClass {');
579 } 561 }
580 562
581 test_instanceCreation_implicit() { 563 test_instanceCreation_implicit() async {
582 addTestFile(''' 564 addTestFile('''
583 class A { 565 class A {
584 } 566 }
585 main() { 567 main() {
586 new A(); 568 new A();
587 } 569 }
588 '''); 570 ''');
589 return prepareNavigation().then((_) { 571 await prepareNavigation();
590 assertHasRegionString('A()', 'A'.length); 572 assertHasRegionString('A()', 'A'.length);
591 assertHasTarget('A {'); 573 assertHasTarget('A {');
592 });
593 } 574 }
594 575
595 test_instanceCreation_implicit_withTypeArgument() { 576 test_instanceCreation_implicit_withTypeArgument() async {
596 addTestFile(''' 577 addTestFile('''
597 class A {} 578 class A {}
598 class B<T> {} 579 class B<T> {}
599 main() { 580 main() {
600 new B<A>(); 581 new B<A>();
601 } 582 }
602 '''); 583 ''');
603 return prepareNavigation().then((_) { 584 await prepareNavigation();
604 { 585 {
605 assertHasRegion('B<A>', 'B'.length); 586 assertHasRegion('B<A>', 'B'.length);
606 assertHasTarget('B<T> {'); 587 assertHasTarget('B<T> {');
607 } 588 }
608 { 589 {
609 assertHasRegion('A>();', 'A'.length); 590 assertHasRegion('A>();', 'A'.length);
610 assertHasTarget('A {'); 591 assertHasTarget('A {');
611 } 592 }
612 });
613 } 593 }
614 594
615 test_instanceCreation_named() { 595 test_instanceCreation_named() async {
616 addTestFile(''' 596 addTestFile('''
617 class A { 597 class A {
618 A.named() {} 598 A.named() {}
619 } 599 }
620 main() { 600 main() {
621 new A.named(); 601 new A.named();
622 } 602 }
623 '''); 603 ''');
624 return prepareNavigation().then((_) { 604 await prepareNavigation();
625 { 605 {
626 assertHasRegionString('A.named();', 'A'.length); 606 assertHasRegionString('A.named();', 'A'.length);
627 assertHasTarget('named() {}'); 607 assertHasTarget('named() {}');
628 } 608 }
629 { 609 {
630 assertHasRegionString('named();', 'named'.length); 610 assertHasRegionString('named();', 'named'.length);
631 assertHasTarget('named() {}'); 611 assertHasTarget('named() {}');
632 } 612 }
633 });
634 } 613 }
635 614
636 test_instanceCreation_named_withTypeArgument() { 615 test_instanceCreation_named_withTypeArgument() async {
637 addTestFile(''' 616 addTestFile('''
638 class A {} 617 class A {}
639 class B<T> { 618 class B<T> {
640 B.named() {} 619 B.named() {}
641 } 620 }
642 main() { 621 main() {
643 new B<A>.named(); 622 new B<A>.named();
644 } 623 }
645 '''); 624 ''');
646 return prepareNavigation().then((_) { 625 await prepareNavigation();
647 { 626 {
648 assertHasRegionString('B<A>', 'B'.length); 627 assertHasRegionString('B<A>', 'B'.length);
649 assertHasTarget('named() {}'); 628 assertHasTarget('named() {}');
650 } 629 }
651 { 630 {
652 assertHasRegion('A>.named'); 631 assertHasRegion('A>.named');
653 assertHasTarget('A {'); 632 assertHasTarget('A {');
654 } 633 }
655 { 634 {
656 assertHasRegion('named();', 'named'.length); 635 assertHasRegion('named();', 'named'.length);
657 assertHasTarget('named() {}'); 636 assertHasTarget('named() {}');
658 } 637 }
659 });
660 } 638 }
661 639
662 test_instanceCreation_unnamed() { 640 test_instanceCreation_unnamed() async {
663 addTestFile(''' 641 addTestFile('''
664 class A { 642 class A {
665 A() {} 643 A() {}
666 } 644 }
667 main() { 645 main() {
668 new A(); 646 new A();
669 } 647 }
670 '''); 648 ''');
671 return prepareNavigation().then((_) { 649 await prepareNavigation();
672 assertHasRegionString('A();', 'A'.length); 650 assertHasRegionString('A();', 'A'.length);
673 assertHasTarget('A() {}', 0); 651 assertHasTarget('A() {}', 0);
674 });
675 } 652 }
676 653
677 test_instanceCreation_unnamed_withTypeArgument() { 654 test_instanceCreation_unnamed_withTypeArgument() async {
678 addTestFile(''' 655 addTestFile('''
679 class A {} 656 class A {}
680 class B<T> { 657 class B<T> {
681 B() {} 658 B() {}
682 } 659 }
683 main() { 660 main() {
684 new B<A>(); 661 new B<A>();
685 } 662 }
686 '''); 663 ''');
687 return prepareNavigation().then((_) { 664 await prepareNavigation();
688 { 665 {
689 assertHasRegionString('B<A>();', 'B'.length); 666 assertHasRegionString('B<A>();', 'B'.length);
690 assertHasTarget('B() {}', 0); 667 assertHasTarget('B() {}', 0);
691 } 668 }
692 { 669 {
693 assertHasRegion('A>();'); 670 assertHasRegion('A>();');
694 assertHasTarget('A {'); 671 assertHasTarget('A {');
695 } 672 }
696 });
697 } 673 }
698 674
699 test_library() { 675 test_library() async {
700 addTestFile(''' 676 addTestFile('''
701 library my.lib; 677 library my.lib;
702 '''); 678 ''');
703 return prepareNavigation().then((_) { 679 await prepareNavigation();
704 assertHasRegionString('my.lib'); 680 assertHasRegionString('my.lib');
705 assertHasTargetString('my.lib'); 681 assertHasTargetString('my.lib');
706 });
707 } 682 }
708 683
709 test_multiplyDefinedElement() { 684 test_multiplyDefinedElement() async {
710 addFile('$projectPath/bin/libA.dart', 'library A; int TEST = 1;'); 685 addFile('$projectPath/bin/libA.dart', 'library A; int TEST = 1;');
711 addFile('$projectPath/bin/libB.dart', 'library B; int TEST = 2;'); 686 addFile('$projectPath/bin/libB.dart', 'library B; int TEST = 2;');
712 addTestFile(''' 687 addTestFile('''
713 import 'libA.dart'; 688 import 'libA.dart';
714 import 'libB.dart'; 689 import 'libB.dart';
715 main() { 690 main() {
716 TEST; 691 TEST;
717 } 692 }
718 '''); 693 ''');
719 return prepareNavigation().then((_) { 694 await prepareNavigation();
720 assertNoRegionAt('TEST'); 695 assertNoRegionAt('TEST');
721 });
722 } 696 }
723 697
724 test_operator_arithmetic() { 698 test_operator_arithmetic() async {
725 addTestFile(''' 699 addTestFile('''
726 class A { 700 class A {
727 A operator +(other) => null; 701 A operator +(other) => null;
728 A operator -() => null; 702 A operator -() => null;
729 A operator -(other) => null; 703 A operator -(other) => null;
730 A operator *(other) => null; 704 A operator *(other) => null;
731 A operator /(other) => null; 705 A operator /(other) => null;
732 } 706 }
733 main() { 707 main() {
734 var a = new A(); 708 var a = new A();
735 a - 1; 709 a - 1;
736 a + 2; 710 a + 2;
737 -a; // unary 711 -a; // unary
738 --a; 712 --a;
739 ++a; 713 ++a;
740 a--; // mm 714 a--; // mm
741 a++; // pp 715 a++; // pp
742 a -= 3; 716 a -= 3;
743 a += 4; 717 a += 4;
744 a *= 5; 718 a *= 5;
745 a /= 6; 719 a /= 6;
746 } 720 }
747 '''); 721 ''');
748 return prepareNavigation().then((_) { 722 await prepareNavigation();
749 assertHasOperatorRegion('- 1', 1, '-(other) => null', 1); 723 assertHasOperatorRegion('- 1', 1, '-(other) => null', 1);
750 assertHasOperatorRegion('+ 2', 1, '+(other) => null', 1); 724 assertHasOperatorRegion('+ 2', 1, '+(other) => null', 1);
751 assertHasOperatorRegion('-a; // unary', 1, '-() => null', 1); 725 assertHasOperatorRegion('-a; // unary', 1, '-() => null', 1);
752 assertHasOperatorRegion('--a;', 2, '-(other) => null', 1); 726 assertHasOperatorRegion('--a;', 2, '-(other) => null', 1);
753 assertHasOperatorRegion('++a;', 2, '+(other) => null', 1); 727 assertHasOperatorRegion('++a;', 2, '+(other) => null', 1);
754 assertHasOperatorRegion('--; // mm', 2, '-(other) => null', 1); 728 assertHasOperatorRegion('--; // mm', 2, '-(other) => null', 1);
755 assertHasOperatorRegion('++; // pp', 2, '+(other) => null', 1); 729 assertHasOperatorRegion('++; // pp', 2, '+(other) => null', 1);
756 assertHasOperatorRegion('-= 3', 2, '-(other) => null', 1); 730 assertHasOperatorRegion('-= 3', 2, '-(other) => null', 1);
757 assertHasOperatorRegion('+= 4', 2, '+(other) => null', 1); 731 assertHasOperatorRegion('+= 4', 2, '+(other) => null', 1);
758 assertHasOperatorRegion('*= 5', 2, '*(other) => null', 1); 732 assertHasOperatorRegion('*= 5', 2, '*(other) => null', 1);
759 assertHasOperatorRegion('/= 6', 2, '/(other) => null', 1); 733 assertHasOperatorRegion('/= 6', 2, '/(other) => null', 1);
760 });
761 } 734 }
762 735
763 test_operator_index() { 736 test_operator_index() async {
764 addTestFile(''' 737 addTestFile('''
765 class A { 738 class A {
766 A operator +(other) => null; 739 A operator +(other) => null;
767 } 740 }
768 class B { 741 class B {
769 A operator [](index) => null; 742 A operator [](index) => null;
770 operator []=(index, A value) {} 743 operator []=(index, A value) {}
771 } 744 }
772 main() { 745 main() {
773 var b = new B(); 746 var b = new B();
774 b[0] // []; 747 b[0] // [];
775 b[1] = 1; // []=; 748 b[1] = 1; // []=;
776 b[2] += 2; 749 b[2] += 2;
777 } 750 }
778 '''); 751 ''');
779 return prepareNavigation().then((_) { 752 await prepareNavigation();
780 assertHasOperatorRegion('[0', 1, '[](index)', 2); 753 assertHasOperatorRegion('[0', 1, '[](index)', 2);
781 assertHasOperatorRegion('] // []', 1, '[](index)', 2); 754 assertHasOperatorRegion('] // []', 1, '[](index)', 2);
782 assertHasOperatorRegion('[1', 1, '[]=(index,', 3); 755 assertHasOperatorRegion('[1', 1, '[]=(index,', 3);
783 assertHasOperatorRegion('] = 1;', 1, '[]=(index,', 3); 756 assertHasOperatorRegion('] = 1;', 1, '[]=(index,', 3);
784 assertHasOperatorRegion('[2', 1, '[]=(index,', 3); 757 assertHasOperatorRegion('[2', 1, '[]=(index,', 3);
785 assertHasOperatorRegion('] += 2;', 1, '[]=(index,', 3); 758 assertHasOperatorRegion('] += 2;', 1, '[]=(index,', 3);
786 assertHasOperatorRegion('+= 2;', 2, '+(other)', 1); 759 assertHasOperatorRegion('+= 2;', 2, '+(other)', 1);
787 });
788 } 760 }
789 761
790 test_partOf() { 762 test_partOf() async {
791 var libCode = 'library lib; part "test.dart";'; 763 var libCode = 'library lib; part "test.dart";';
792 var libFile = addFile('$projectPath/bin/lib.dart', libCode); 764 var libFile = addFile('$projectPath/bin/lib.dart', libCode);
793 addTestFile('part of lib;'); 765 addTestFile('part of lib;');
794 return prepareNavigation().then((_) { 766 await prepareNavigation();
795 assertHasRegionString('lib'); 767 assertHasRegionString('lib');
796 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length); 768 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length);
797 });
798 } 769 }
799 770
800 test_redirectingConstructorInvocation() { 771 test_redirectingConstructorInvocation() async {
801 addTestFile(''' 772 addTestFile('''
802 class A { 773 class A {
803 A() {} 774 A() {}
804 A.foo() : this(); 775 A.foo() : this();
805 A.bar() : this.foo(); 776 A.bar() : this.foo();
806 } 777 }
807 '''); 778 ''');
808 return prepareNavigation().then((_) { 779 await prepareNavigation();
809 { 780 {
810 assertHasRegion('this();'); 781 assertHasRegion('this();');
811 assertHasTarget('A() {}', 0); 782 assertHasTarget('A() {}', 0);
812 } 783 }
813 { 784 {
814 assertHasRegion('this.foo'); 785 assertHasRegion('this.foo');
815 assertHasTarget('foo() :'); 786 assertHasTarget('foo() :');
816 } 787 }
817 { 788 {
818 assertHasRegion('foo();'); 789 assertHasRegion('foo();');
819 assertHasTarget('foo() :'); 790 assertHasTarget('foo() :');
820 } 791 }
821 });
822 } 792 }
823 793
824 test_string_export() { 794 test_string_export() async {
825 var libCode = 'library lib;'; 795 var libCode = 'library lib;';
826 var libFile = addFile('$projectPath/bin/lib.dart', libCode); 796 var libFile = addFile('$projectPath/bin/lib.dart', libCode);
827 addTestFile('export "lib.dart";'); 797 addTestFile('export "lib.dart";');
828 return prepareNavigation().then((_) { 798 await prepareNavigation();
829 assertHasRegionString('"lib.dart"'); 799 assertHasRegionString('"lib.dart"');
830 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length); 800 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length);
831 });
832 } 801 }
833 802
834 test_string_export_unresolvedUri() { 803 test_string_export_unresolvedUri() async {
835 addTestFile('export "no.dart";'); 804 addTestFile('export "no.dart";');
836 return prepareNavigation().then((_) { 805 await prepareNavigation();
837 assertNoRegionString('"no.dart"'); 806 assertNoRegionString('"no.dart"');
838 });
839 } 807 }
840 808
841 test_string_import() { 809 test_string_import() async {
842 var libCode = 'library lib;'; 810 var libCode = 'library lib;';
843 var libFile = addFile('$projectPath/bin/lib.dart', libCode); 811 var libFile = addFile('$projectPath/bin/lib.dart', libCode);
844 addTestFile('import "lib.dart";'); 812 addTestFile('import "lib.dart";');
845 return prepareNavigation().then((_) { 813 await prepareNavigation();
846 assertHasRegionString('"lib.dart"'); 814 assertHasRegionString('"lib.dart"');
847 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length); 815 assertHasFileTarget(libFile, libCode.indexOf('lib;'), 'lib'.length);
848 });
849 } 816 }
850 817
851 test_string_import_noUri() { 818 test_string_import_noUri() async {
852 addTestFile('import ;'); 819 addTestFile('import ;');
853 return prepareNavigation().then((_) { 820 await prepareNavigation();
854 assertNoRegionAt('import ;'); 821 assertNoRegionAt('import ;');
855 });
856 } 822 }
857 823
858 test_string_import_unresolvedUri() { 824 test_string_import_unresolvedUri() async {
859 addTestFile('import "no.dart";'); 825 addTestFile('import "no.dart";');
860 return prepareNavigation().then((_) { 826 await prepareNavigation();
861 assertNoRegionString('"no.dart"'); 827 assertNoRegionString('"no.dart"');
862 });
863 } 828 }
864 829
865 test_string_part() { 830 test_string_part() async {
866 var unitCode = 'part of lib; f() {}'; 831 var unitCode = 'part of lib; f() {}';
867 var unitFile = addFile('$projectPath/bin/test_unit.dart', unitCode); 832 var unitFile = addFile('$projectPath/bin/test_unit.dart', unitCode);
868 addTestFile(''' 833 addTestFile('''
869 library lib; 834 library lib;
870 part "test_unit.dart"; 835 part "test_unit.dart";
871 '''); 836 ''');
872 return prepareNavigation().then((_) { 837 await prepareNavigation();
873 assertHasRegionString('"test_unit.dart"'); 838 assertHasRegionString('"test_unit.dart"');
874 assertHasFileTarget(unitFile, 0, 0); 839 assertHasFileTarget(unitFile, 0, 0);
875 });
876 } 840 }
877 841
878 test_string_part_unresolvedUri() { 842 test_string_part_unresolvedUri() async {
879 addTestFile(''' 843 addTestFile('''
880 library lib; 844 library lib;
881 part "test_unit.dart"; 845 part "test_unit.dart";
882 '''); 846 ''');
883 return prepareNavigation().then((_) { 847 await prepareNavigation();
884 assertNoRegionString('"test_unit.dart"'); 848 assertNoRegionString('"test_unit.dart"');
885 });
886 } 849 }
887 850
888 test_superConstructorInvocation() { 851 test_superConstructorInvocation() async {
889 addTestFile(''' 852 addTestFile('''
890 class A { 853 class A {
891 A() {} 854 A() {}
892 A.named() {} 855 A.named() {}
893 } 856 }
894 class B extends A { 857 class B extends A {
895 B() : super(); 858 B() : super();
896 B.named() : super.named(); 859 B.named() : super.named();
897 } 860 }
898 '''); 861 ''');
899 return prepareNavigation().then((_) { 862 await prepareNavigation();
900 { 863 {
901 assertHasRegionString('super'); 864 assertHasRegionString('super');
902 assertHasTarget('A() {}', 0); 865 assertHasTarget('A() {}', 0);
903 } 866 }
904 { 867 {
905 assertHasRegion('super.named'); 868 assertHasRegion('super.named');
906 assertHasTarget('named() {}'); 869 assertHasTarget('named() {}');
907 } 870 }
908 { 871 {
909 assertHasRegion('named();'); 872 assertHasRegion('named();');
910 assertHasTarget('named() {}'); 873 assertHasTarget('named() {}');
911 } 874 }
912 });
913 } 875 }
914 876
915 test_superConstructorInvocation_synthetic() { 877 test_superConstructorInvocation_synthetic() async {
916 addTestFile(''' 878 addTestFile('''
917 class A { 879 class A {
918 } 880 }
919 class B extends A { 881 class B extends A {
920 B() : super(); 882 B() : super();
921 } 883 }
922 '''); 884 ''');
923 return prepareNavigation().then((_) { 885 await prepareNavigation();
924 { 886 assertHasRegionString('super');
925 assertHasRegionString('super'); 887 assertHasTarget('A {');
926 assertHasTarget('A {');
927 }
928 });
929 } 888 }
930 889
931 test_targetElement() { 890 test_targetElement() async {
932 addTestFile(''' 891 addTestFile('''
933 class AAA {} 892 class AAA {}
934 main() { 893 main() {
935 AAA aaa = null; 894 AAA aaa = null;
936 } 895 }
937 '''); 896 ''');
938 return prepareNavigation().then((_) { 897 await prepareNavigation();
939 assertHasRegionTarget('AAA aaa', 'AAA {}'); 898 assertHasRegionTarget('AAA aaa', 'AAA {}');
940 expect(testTarget.kind, ElementKind.CLASS); 899 expect(testTarget.kind, ElementKind.CLASS);
941 });
942 } 900 }
943 901
944 test_type_dynamic() { 902 test_type_dynamic() async {
945 addTestFile(''' 903 addTestFile('''
946 main() { 904 main() {
947 dynamic v = null; 905 dynamic v = null;
948 } 906 }
949 '''); 907 ''');
950 return prepareNavigation().then((_) { 908 await prepareNavigation();
951 assertNoRegionAt('dynamic'); 909 assertNoRegionAt('dynamic');
952 });
953 } 910 }
954 911
955 test_type_void() { 912 test_type_void() async {
956 addTestFile(''' 913 addTestFile('''
957 void main() { 914 void main() {
958 } 915 }
959 '''); 916 ''');
960 return prepareNavigation().then((_) { 917 await prepareNavigation();
961 assertNoRegionAt('void'); 918 assertNoRegionAt('void');
962 });
963 } 919 }
964 } 920 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698