| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 analyzer.test.src.task.driver_test; | 5 library analyzer.test.src.task.driver_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/context/cache.dart'; | 7 import 'package:analyzer/src/context/cache.dart'; |
| 8 import 'package:analyzer/src/generated/engine.dart'; | 8 import 'package:analyzer/src/generated/engine.dart'; |
| 9 import 'package:analyzer/src/generated/java_engine.dart'; | 9 import 'package:analyzer/src/generated/java_engine.dart'; |
| 10 import 'package:analyzer/src/task/driver.dart'; | 10 import 'package:analyzer/src/task/driver.dart'; |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 } | 337 } |
| 338 | 338 |
| 339 test_performAnalysisTask_onResultComputed() { | 339 test_performAnalysisTask_onResultComputed() { |
| 340 AnalysisTarget target = new TestSource(); | 340 AnalysisTarget target = new TestSource(); |
| 341 ResultDescriptor result = new ResultDescriptor('result', null); | 341 ResultDescriptor result = new ResultDescriptor('result', null); |
| 342 TestAnalysisTask task; | 342 TestAnalysisTask task; |
| 343 TaskDescriptor descriptor = new TaskDescriptor( | 343 TaskDescriptor descriptor = new TaskDescriptor( |
| 344 'task', (context, target) => task, (target) => {}, [result]); | 344 'task', (context, target) => task, (target) => {}, [result]); |
| 345 task = new TestAnalysisTask(context, target, | 345 task = new TestAnalysisTask(context, target, |
| 346 descriptor: descriptor, value: 42); | 346 descriptor: descriptor, value: 42); |
| 347 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 347 WorkItem item = |
| 348 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 348 | 349 |
| 349 bool streamNotified = false; | 350 bool streamNotified = false; |
| 350 analysisDriver.onResultComputed(result).listen((event) { | 351 analysisDriver.onResultComputed(result).listen((event) { |
| 351 streamNotified = true; | 352 streamNotified = true; |
| 352 expect(event.context, same(context)); | 353 expect(event.context, same(context)); |
| 353 expect(event.target, same(target)); | 354 expect(event.target, same(target)); |
| 354 expect(event.descriptor, same(result)); | 355 expect(event.descriptor, same(result)); |
| 355 expect(event.value, 42); | 356 expect(event.value, 42); |
| 356 }); | 357 }); |
| 357 analysisDriver.performWorkItem(item); | 358 analysisDriver.performWorkItem(item); |
| 358 expect(streamNotified, isTrue); | 359 expect(streamNotified, isTrue); |
| 359 } | 360 } |
| 360 | 361 |
| 361 test_performWorkItem_exceptionInTask() { | 362 test_performWorkItem_exceptionInTask() { |
| 362 AnalysisTarget target = new TestSource(); | 363 AnalysisTarget target = new TestSource(); |
| 363 ResultDescriptor result = new ResultDescriptor('result', null); | 364 ResultDescriptor result = new ResultDescriptor('result', null); |
| 364 CaughtException exception = | 365 CaughtException exception = |
| 365 new CaughtException(new AnalysisException(), null); | 366 new CaughtException(new AnalysisException(), null); |
| 366 TestAnalysisTask task; | 367 TestAnalysisTask task; |
| 367 TaskDescriptor descriptor = new TaskDescriptor( | 368 TaskDescriptor descriptor = new TaskDescriptor( |
| 368 'task', (context, target) => task, (target) => {}, [result]); | 369 'task', (context, target) => task, (target) => {}, [result]); |
| 369 task = new TestAnalysisTask(context, target, | 370 task = new TestAnalysisTask(context, target, |
| 370 descriptor: descriptor, exception: exception); | 371 descriptor: descriptor, exception: exception); |
| 371 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 372 WorkItem item = |
| 373 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 372 | 374 |
| 373 analysisDriver.performWorkItem(item); | 375 analysisDriver.performWorkItem(item); |
| 374 CacheEntry targetEntry = context.getCacheEntry(item.target); | 376 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 375 expect(targetEntry.exception, exception); | 377 expect(targetEntry.exception, exception); |
| 376 expect(targetEntry.getState(result), CacheState.ERROR); | 378 expect(targetEntry.getState(result), CacheState.ERROR); |
| 377 } | 379 } |
| 378 | 380 |
| 379 test_performWorkItem_noException() { | 381 test_performWorkItem_noException() { |
| 380 AnalysisTarget target = new TestSource(); | 382 AnalysisTarget target = new TestSource(); |
| 381 ResultDescriptor result = new ResultDescriptor('result', null); | 383 ResultDescriptor result = new ResultDescriptor('result', null); |
| 382 TestAnalysisTask task; | 384 TestAnalysisTask task; |
| 383 TaskDescriptor descriptor = new TaskDescriptor( | 385 TaskDescriptor descriptor = new TaskDescriptor( |
| 384 'task', (context, target) => task, (target) => {}, [result]); | 386 'task', (context, target) => task, (target) => {}, [result]); |
| 385 task = new TestAnalysisTask(context, target, descriptor: descriptor); | 387 task = new TestAnalysisTask(context, target, descriptor: descriptor); |
| 386 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 388 WorkItem item = |
| 389 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 387 | 390 |
| 388 analysisDriver.performWorkItem(item); | 391 analysisDriver.performWorkItem(item); |
| 389 CacheEntry targetEntry = context.getCacheEntry(item.target); | 392 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 390 expect(targetEntry.exception, isNull); | 393 expect(targetEntry.exception, isNull); |
| 391 expect(targetEntry.getState(result), CacheState.VALID); | 394 expect(targetEntry.getState(result), CacheState.VALID); |
| 392 } | 395 } |
| 393 | 396 |
| 394 test_performWorkItem_preExistingException() { | 397 test_performWorkItem_preExistingException() { |
| 395 AnalysisTarget target = new TestSource(); | 398 AnalysisTarget target = new TestSource(); |
| 396 ResultDescriptor result = new ResultDescriptor('result', null); | 399 ResultDescriptor result = new ResultDescriptor('result', null); |
| 397 TaskDescriptor descriptor = new TaskDescriptor( | 400 TaskDescriptor descriptor = new TaskDescriptor( |
| 398 'task', | 401 'task', |
| 399 (context, target) => new TestAnalysisTask(context, target), | 402 (context, target) => new TestAnalysisTask(context, target), |
| 400 (target) => {}, | 403 (target) => {}, |
| 401 [result]); | 404 [result]); |
| 402 CaughtException exception = | 405 CaughtException exception = |
| 403 new CaughtException(new AnalysisException(), null); | 406 new CaughtException(new AnalysisException(), null); |
| 404 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 407 WorkItem item = |
| 408 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 405 item.exception = exception; | 409 item.exception = exception; |
| 406 | 410 |
| 407 analysisDriver.performWorkItem(item); | 411 analysisDriver.performWorkItem(item); |
| 408 CacheEntry targetEntry = context.getCacheEntry(item.target); | 412 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 409 expect(targetEntry.exception, exception); | 413 expect(targetEntry.exception, exception); |
| 410 expect(targetEntry.getState(result), CacheState.ERROR); | 414 expect(targetEntry.getState(result), CacheState.ERROR); |
| 411 } | 415 } |
| 412 | 416 |
| 413 test_reset() { | 417 test_reset() { |
| 414 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 418 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 415 TaskDescriptor descriptor = new TaskDescriptor( | 419 TaskDescriptor descriptor = new TaskDescriptor( |
| 416 'task', | 420 'task', |
| 417 (context, target) => new TestAnalysisTask(context, target), | 421 (context, target) => new TestAnalysisTask(context, target), |
| 418 (target) => {'one': inputResult.of(target)}, | 422 (target) => {'one': inputResult.of(target)}, |
| 419 [new ResultDescriptor('output', null)]); | 423 [new ResultDescriptor('output', null)]); |
| 420 analysisDriver.currentWorkOrder = new WorkOrder( | 424 analysisDriver.currentWorkOrder = new WorkOrder( |
| 421 taskManager, new WorkItem(null, null, descriptor, null, 0, null)); | 425 taskManager, new WorkItem(null, null, null, descriptor, null, 0, null)); |
| 422 | 426 |
| 423 analysisDriver.reset(); | 427 analysisDriver.reset(); |
| 424 expect(analysisDriver.currentWorkOrder, isNull); | 428 expect(analysisDriver.currentWorkOrder, isNull); |
| 425 } | 429 } |
| 426 | 430 |
| 427 void _configureDescriptors12() { | 431 void _configureDescriptors12() { |
| 428 descriptor1 = new TaskDescriptor( | 432 descriptor1 = new TaskDescriptor( |
| 429 'task1', | 433 'task1', |
| 430 (context, target) => | 434 (context, target) => |
| 431 new TestAnalysisTask(context, target, descriptor: descriptor1), | 435 new TestAnalysisTask(context, target, descriptor: descriptor1), |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 | 613 |
| 610 @reflectiveTest | 614 @reflectiveTest |
| 611 class WorkItemTest extends AbstractDriverTest { | 615 class WorkItemTest extends AbstractDriverTest { |
| 612 test_buildTask_complete() { | 616 test_buildTask_complete() { |
| 613 AnalysisTarget target = new TestSource(); | 617 AnalysisTarget target = new TestSource(); |
| 614 TaskDescriptor descriptor = new TaskDescriptor( | 618 TaskDescriptor descriptor = new TaskDescriptor( |
| 615 'task', | 619 'task', |
| 616 (context, target) => new TestAnalysisTask(context, target), | 620 (context, target) => new TestAnalysisTask(context, target), |
| 617 (target) => {}, | 621 (target) => {}, |
| 618 [new ResultDescriptor('output', null)]); | 622 [new ResultDescriptor('output', null)]); |
| 619 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 623 WorkItem item = |
| 624 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 620 AnalysisTask task = item.buildTask(); | 625 AnalysisTask task = item.buildTask(); |
| 621 expect(task, isNotNull); | 626 expect(task, isNotNull); |
| 622 } | 627 } |
| 623 | 628 |
| 624 test_buildTask_incomplete() { | 629 test_buildTask_incomplete() { |
| 625 AnalysisTarget target = new TestSource(); | 630 AnalysisTarget target = new TestSource(); |
| 626 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 631 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 627 List<ResultDescriptor> outputResults = <ResultDescriptor>[ | 632 List<ResultDescriptor> outputResults = <ResultDescriptor>[ |
| 628 new ResultDescriptor('output', null) | 633 new ResultDescriptor('output', null) |
| 629 ]; | 634 ]; |
| 630 TaskDescriptor descriptor = new TaskDescriptor( | 635 TaskDescriptor descriptor = new TaskDescriptor( |
| 631 'task', | 636 'task', |
| 632 (context, target) => | 637 (context, target) => |
| 633 new TestAnalysisTask(context, target, results: outputResults), | 638 new TestAnalysisTask(context, target, results: outputResults), |
| 634 (target) => {'one': inputResult.of(target)}, | 639 (target) => {'one': inputResult.of(target)}, |
| 635 outputResults); | 640 outputResults); |
| 636 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 641 WorkItem item = |
| 642 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 637 expect(() => item.buildTask(), throwsStateError); | 643 expect(() => item.buildTask(), throwsStateError); |
| 638 } | 644 } |
| 639 | 645 |
| 640 test_create() { | 646 test_create() { |
| 641 AnalysisTarget target = new TestSource(); | 647 AnalysisTarget target = new TestSource(); |
| 642 TaskDescriptor descriptor = new TaskDescriptor( | 648 TaskDescriptor descriptor = new TaskDescriptor( |
| 643 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); | 649 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); |
| 644 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 650 WorkItem item = |
| 651 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 645 expect(item, isNotNull); | 652 expect(item, isNotNull); |
| 646 expect(item.context, context); | 653 expect(item.context, context); |
| 647 expect(item.descriptor, descriptor); | 654 expect(item.descriptor, descriptor); |
| 648 expect(item.target, target); | 655 expect(item.target, target); |
| 649 } | 656 } |
| 650 | 657 |
| 651 test_gatherInputs_complete() { | 658 test_gatherInputs_complete() { |
| 652 AnalysisTarget target = new TestSource(); | 659 AnalysisTarget target = new TestSource(); |
| 653 TaskDescriptor descriptor = new TaskDescriptor( | 660 TaskDescriptor descriptor = new TaskDescriptor( |
| 654 'task', | 661 'task', |
| 655 (context, target) => new TestAnalysisTask(context, target), | 662 (context, target) => new TestAnalysisTask(context, target), |
| 656 (target) => {}, | 663 (target) => {}, |
| 657 [new ResultDescriptor('output', null)]); | 664 [new ResultDescriptor('output', null)]); |
| 658 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 665 WorkItem item = |
| 666 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 659 WorkItem result = item.gatherInputs(taskManager, []); | 667 WorkItem result = item.gatherInputs(taskManager, []); |
| 660 expect(result, isNull); | 668 expect(result, isNull); |
| 661 expect(item.exception, isNull); | 669 expect(item.exception, isNull); |
| 662 } | 670 } |
| 663 | 671 |
| 664 test_gatherInputs_incomplete() { | 672 test_gatherInputs_incomplete() { |
| 665 AnalysisTarget target = new TestSource(); | 673 AnalysisTarget target = new TestSource(); |
| 666 ResultDescriptor resultA = new ResultDescriptor('resultA', null); | 674 ResultDescriptor resultA = new ResultDescriptor('resultA', null); |
| 667 ResultDescriptor resultB = new ResultDescriptor('resultB', null); | 675 ResultDescriptor resultB = new ResultDescriptor('resultB', null); |
| 668 // prepare tasks | 676 // prepare tasks |
| 669 TaskDescriptor task1 = new TaskDescriptor( | 677 TaskDescriptor task1 = new TaskDescriptor( |
| 670 'task', | 678 'task', |
| 671 (context, target) => | 679 (context, target) => |
| 672 new TestAnalysisTask(context, target, results: [resultA]), | 680 new TestAnalysisTask(context, target, results: [resultA]), |
| 673 (target) => {}, | 681 (target) => {}, |
| 674 [resultA]); | 682 [resultA]); |
| 675 TaskDescriptor task2 = new TaskDescriptor( | 683 TaskDescriptor task2 = new TaskDescriptor( |
| 676 'task', | 684 'task', |
| 677 (context, target) => new TestAnalysisTask(context, target), | 685 (context, target) => new TestAnalysisTask(context, target), |
| 678 (target) => {'one': resultA.of(target)}, | 686 (target) => {'one': resultA.of(target)}, |
| 679 [resultB]); | 687 [resultB]); |
| 680 taskManager.addTaskDescriptor(task1); | 688 taskManager.addTaskDescriptor(task1); |
| 681 taskManager.addTaskDescriptor(task2); | 689 taskManager.addTaskDescriptor(task2); |
| 682 // gather inputs | 690 // gather inputs |
| 683 WorkItem item = new WorkItem(context, target, task2, null, 0, null); | 691 WorkItem item = new WorkItem(context, null, target, task2, null, 0, null); |
| 684 WorkItem inputItem = item.gatherInputs(taskManager, []); | 692 WorkItem inputItem = item.gatherInputs(taskManager, []); |
| 685 expect(inputItem, isNotNull); | 693 expect(inputItem, isNotNull); |
| 686 } | 694 } |
| 687 | 695 |
| 688 test_gatherInputs_invalid() { | 696 test_gatherInputs_invalid() { |
| 689 AnalysisTarget target = new TestSource(); | 697 AnalysisTarget target = new TestSource(); |
| 690 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 698 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 691 TaskDescriptor descriptor = new TaskDescriptor( | 699 TaskDescriptor descriptor = new TaskDescriptor( |
| 692 'task', | 700 'task', |
| 693 (context, target) => new TestAnalysisTask(context, target), | 701 (context, target) => new TestAnalysisTask(context, target), |
| 694 (target) => {'one': inputResult.of(target)}, | 702 (target) => {'one': inputResult.of(target)}, |
| 695 [new ResultDescriptor('output', null)]); | 703 [new ResultDescriptor('output', null)]); |
| 696 WorkItem item = new WorkItem(context, target, descriptor, null, 0, null); | 704 WorkItem item = |
| 705 new WorkItem(context, null, target, descriptor, null, 0, null); |
| 697 WorkItem result = item.gatherInputs(taskManager, []); | 706 WorkItem result = item.gatherInputs(taskManager, []); |
| 698 expect(result, isNull); | 707 expect(result, isNull); |
| 699 expect(item.exception, isNotNull); | 708 expect(item.exception, isNotNull); |
| 700 } | 709 } |
| 710 |
| 711 test_gatherInputs_useResultProvider_hasResult() { |
| 712 AnalysisTarget target = new TestSource(); |
| 713 ResultDescriptor resultA = new ResultDescriptor('resultA', null); |
| 714 ResultDescriptor resultB = new ResultDescriptor('resultB', null); |
| 715 // prepare tasks |
| 716 TaskDescriptor task1 = new TaskDescriptor( |
| 717 'task', |
| 718 (context, target) => |
| 719 new TestAnalysisTask(context, target, results: [resultA]), |
| 720 (target) => {}, |
| 721 [resultA]); |
| 722 TaskDescriptor task2 = new TaskDescriptor( |
| 723 'task', |
| 724 (context, target) => new TestAnalysisTask(context, target), |
| 725 (target) => {'one': resultA.of(target)}, |
| 726 [resultB]); |
| 727 taskManager.addTaskDescriptor(task1); |
| 728 taskManager.addTaskDescriptor(task2); |
| 729 // configure ResultProvider |
| 730 ResultProvider resultProvider = new _ResultProviderMock(); |
| 731 when(resultProvider.provideResult(context, anyObject, resultA)) |
| 732 .thenReturn(true); |
| 733 // gather inputs |
| 734 WorkItem item = |
| 735 new WorkItem(context, resultProvider, target, task2, null, 0, null); |
| 736 WorkItem inputItem = item.gatherInputs(taskManager, []); |
| 737 expect(inputItem, isNull); |
| 738 } |
| 739 |
| 740 test_gatherInputs_useResultProvider_noResult() { |
| 741 AnalysisTarget target = new TestSource(); |
| 742 ResultDescriptor resultA = new ResultDescriptor('resultA', null); |
| 743 ResultDescriptor resultB = new ResultDescriptor('resultB', null); |
| 744 // prepare tasks |
| 745 TaskDescriptor task1 = new TaskDescriptor( |
| 746 'task', |
| 747 (context, target) => |
| 748 new TestAnalysisTask(context, target, results: [resultA]), |
| 749 (target) => {}, |
| 750 [resultA]); |
| 751 TaskDescriptor task2 = new TaskDescriptor( |
| 752 'task', |
| 753 (context, target) => new TestAnalysisTask(context, target), |
| 754 (target) => {'one': resultA.of(target)}, |
| 755 [resultB]); |
| 756 taskManager.addTaskDescriptor(task1); |
| 757 taskManager.addTaskDescriptor(task2); |
| 758 // configure ResultProvider |
| 759 ResultProvider resultProvider = new _ResultProviderMock(); |
| 760 when(resultProvider.provideResult(anyObject, anyObject, anyObject)) |
| 761 .thenReturn(false); |
| 762 // gather inputs |
| 763 WorkItem item = |
| 764 new WorkItem(context, resultProvider, target, task2, null, 0, null); |
| 765 WorkItem inputItem = item.gatherInputs(taskManager, []); |
| 766 expect(inputItem, isNotNull); |
| 767 expect(inputItem.target, target); |
| 768 expect(inputItem.descriptor, task1); |
| 769 } |
| 701 } | 770 } |
| 702 | 771 |
| 703 @reflectiveTest | 772 @reflectiveTest |
| 704 class WorkOrderTest extends EngineTestCase { | 773 class WorkOrderTest extends EngineTestCase { |
| 705 test_create() { | 774 test_create() { |
| 706 TaskManager manager = new TaskManager(); | 775 TaskManager manager = new TaskManager(); |
| 707 TaskDescriptor descriptor = new TaskDescriptor( | 776 TaskDescriptor descriptor = new TaskDescriptor( |
| 708 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 777 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 709 WorkOrder order = new WorkOrder( | 778 WorkOrder order = new WorkOrder( |
| 710 manager, new WorkItem(null, null, descriptor, null, 0, null)); | 779 manager, new WorkItem(null, null, null, descriptor, null, 0, null)); |
| 711 expect(order, isNotNull); | 780 expect(order, isNotNull); |
| 712 expect(order.currentItems, isNull); | 781 expect(order.currentItems, isNull); |
| 713 expect(order.current, isNull); | 782 expect(order.current, isNull); |
| 714 } | 783 } |
| 715 | 784 |
| 716 test_moveNext() { | 785 test_moveNext() { |
| 717 TaskManager manager = new TaskManager(); | 786 TaskManager manager = new TaskManager(); |
| 718 TaskDescriptor descriptor = new TaskDescriptor( | 787 TaskDescriptor descriptor = new TaskDescriptor( |
| 719 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 788 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 720 WorkItem workItem = new WorkItem(null, null, descriptor, null, 0, null); | 789 WorkItem workItem = |
| 790 new WorkItem(null, null, null, descriptor, null, 0, null); |
| 721 WorkOrder order = new WorkOrder(manager, workItem); | 791 WorkOrder order = new WorkOrder(manager, workItem); |
| 722 // "item" has no child items | 792 // "item" has no child items |
| 723 expect(order.moveNext(), isTrue); | 793 expect(order.moveNext(), isTrue); |
| 724 expect(order.current, workItem); | 794 expect(order.current, workItem); |
| 725 // done | 795 // done |
| 726 expect(order.moveNext(), isFalse); | 796 expect(order.moveNext(), isFalse); |
| 727 expect(order.current, isNull); | 797 expect(order.current, isNull); |
| 728 } | 798 } |
| 729 } | 799 } |
| 730 | 800 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 750 CacheEntry getCacheEntry(AnalysisTarget target) { | 820 CacheEntry getCacheEntry(AnalysisTarget target) { |
| 751 CacheEntry entry = analysisCache.get(target); | 821 CacheEntry entry = analysisCache.get(target); |
| 752 if (entry == null) { | 822 if (entry == null) { |
| 753 entry = new CacheEntry(target); | 823 entry = new CacheEntry(target); |
| 754 analysisCache.put(entry); | 824 analysisCache.put(entry); |
| 755 } | 825 } |
| 756 return entry; | 826 return entry; |
| 757 } | 827 } |
| 758 } | 828 } |
| 759 | 829 |
| 830 class _ResultProviderMock extends TypedMock implements ResultProvider {} |
| 831 |
| 760 /** | 832 /** |
| 761 * Concrete class for testing [CycleAwareDependencyWalker] behavior. | 833 * Concrete class for testing [CycleAwareDependencyWalker] behavior. |
| 762 */ | 834 */ |
| 763 class _TestCycleAwareDependencyWalker extends CycleAwareDependencyWalker<int> { | 835 class _TestCycleAwareDependencyWalker extends CycleAwareDependencyWalker<int> { |
| 764 final Map<int, List<int>> graph; | 836 final Map<int, List<int>> graph; |
| 765 | 837 |
| 766 Set<int> evaluatedNodes = new Set<int>(); | 838 Set<int> evaluatedNodes = new Set<int>(); |
| 767 | 839 |
| 768 _TestCycleAwareDependencyWalker(this.graph, int startingNode) | 840 _TestCycleAwareDependencyWalker(this.graph, int startingNode) |
| 769 : super(startingNode); | 841 : super(startingNode); |
| 770 | 842 |
| 771 @override | 843 @override |
| 772 int getNextInput(int node, List<int> skipInputs) { | 844 int getNextInput(int node, List<int> skipInputs) { |
| 773 for (int dependency in graph[node]) { | 845 for (int dependency in graph[node]) { |
| 774 if (!skipInputs.contains(dependency) && | 846 if (!skipInputs.contains(dependency) && |
| 775 !evaluatedNodes.contains(dependency)) { | 847 !evaluatedNodes.contains(dependency)) { |
| 776 return dependency; | 848 return dependency; |
| 777 } | 849 } |
| 778 } | 850 } |
| 779 return null; | 851 return null; |
| 780 } | 852 } |
| 781 } | 853 } |
| 782 | 854 |
| 783 class _WorkManagerMock extends TypedMock implements WorkManager {} | 855 class _WorkManagerMock extends TypedMock implements WorkManager {} |
| OLD | NEW |