| 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 test.src.task.driver_test; | 5 library 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 hide | 9 hide |
| 10 AnalysisCache, | 10 AnalysisCache, |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 } | 343 } |
| 344 | 344 |
| 345 test_performAnalysisTask_onResultComputed() { | 345 test_performAnalysisTask_onResultComputed() { |
| 346 AnalysisTarget target = new TestSource(); | 346 AnalysisTarget target = new TestSource(); |
| 347 ResultDescriptor result = new ResultDescriptor('result', null); | 347 ResultDescriptor result = new ResultDescriptor('result', null); |
| 348 TestAnalysisTask task; | 348 TestAnalysisTask task; |
| 349 TaskDescriptor descriptor = new TaskDescriptor( | 349 TaskDescriptor descriptor = new TaskDescriptor( |
| 350 'task', (context, target) => task, (target) => {}, [result]); | 350 'task', (context, target) => task, (target) => {}, [result]); |
| 351 task = new TestAnalysisTask(context, target, | 351 task = new TestAnalysisTask(context, target, |
| 352 descriptor: descriptor, value: 42); | 352 descriptor: descriptor, value: 42); |
| 353 WorkItem item = new WorkItem(context, target, descriptor, null); | 353 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 354 | 354 |
| 355 bool streamNotified = false; | 355 bool streamNotified = false; |
| 356 analysisDriver.onResultComputed(result).listen((event) { | 356 analysisDriver.onResultComputed(result).listen((event) { |
| 357 streamNotified = true; | 357 streamNotified = true; |
| 358 expect(event.context, same(context)); | 358 expect(event.context, same(context)); |
| 359 expect(event.target, same(target)); | 359 expect(event.target, same(target)); |
| 360 expect(event.descriptor, same(result)); | 360 expect(event.descriptor, same(result)); |
| 361 expect(event.value, 42); | 361 expect(event.value, 42); |
| 362 }); | 362 }); |
| 363 analysisDriver.performWorkItem(item); | 363 analysisDriver.performWorkItem(item); |
| 364 expect(streamNotified, isTrue); | 364 expect(streamNotified, isTrue); |
| 365 } | 365 } |
| 366 | 366 |
| 367 test_performWorkItem_exceptionInTask() { | 367 test_performWorkItem_exceptionInTask() { |
| 368 AnalysisTarget target = new TestSource(); | 368 AnalysisTarget target = new TestSource(); |
| 369 ResultDescriptor result = new ResultDescriptor('result', null); | 369 ResultDescriptor result = new ResultDescriptor('result', null); |
| 370 CaughtException exception = | 370 CaughtException exception = |
| 371 new CaughtException(new AnalysisException(), null); | 371 new CaughtException(new AnalysisException(), null); |
| 372 TestAnalysisTask task; | 372 TestAnalysisTask task; |
| 373 TaskDescriptor descriptor = new TaskDescriptor( | 373 TaskDescriptor descriptor = new TaskDescriptor( |
| 374 'task', (context, target) => task, (target) => {}, [result]); | 374 'task', (context, target) => task, (target) => {}, [result]); |
| 375 task = new TestAnalysisTask(context, target, | 375 task = new TestAnalysisTask(context, target, |
| 376 descriptor: descriptor, exception: exception); | 376 descriptor: descriptor, exception: exception); |
| 377 WorkItem item = new WorkItem(context, target, descriptor, null); | 377 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 378 | 378 |
| 379 analysisDriver.performWorkItem(item); | 379 analysisDriver.performWorkItem(item); |
| 380 CacheEntry targetEntry = context.getCacheEntry(item.target); | 380 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 381 expect(targetEntry.exception, exception); | 381 expect(targetEntry.exception, exception); |
| 382 expect(targetEntry.getState(result), CacheState.ERROR); | 382 expect(targetEntry.getState(result), CacheState.ERROR); |
| 383 } | 383 } |
| 384 | 384 |
| 385 test_performWorkItem_noException() { | 385 test_performWorkItem_noException() { |
| 386 AnalysisTarget target = new TestSource(); | 386 AnalysisTarget target = new TestSource(); |
| 387 ResultDescriptor result = new ResultDescriptor('result', null); | 387 ResultDescriptor result = new ResultDescriptor('result', null); |
| 388 TestAnalysisTask task; | 388 TestAnalysisTask task; |
| 389 TaskDescriptor descriptor = new TaskDescriptor( | 389 TaskDescriptor descriptor = new TaskDescriptor( |
| 390 'task', (context, target) => task, (target) => {}, [result]); | 390 'task', (context, target) => task, (target) => {}, [result]); |
| 391 task = new TestAnalysisTask(context, target, descriptor: descriptor); | 391 task = new TestAnalysisTask(context, target, descriptor: descriptor); |
| 392 WorkItem item = new WorkItem(context, target, descriptor, null); | 392 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 393 | 393 |
| 394 analysisDriver.performWorkItem(item); | 394 analysisDriver.performWorkItem(item); |
| 395 CacheEntry targetEntry = context.getCacheEntry(item.target); | 395 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 396 expect(targetEntry.exception, isNull); | 396 expect(targetEntry.exception, isNull); |
| 397 expect(targetEntry.getState(result), CacheState.VALID); | 397 expect(targetEntry.getState(result), CacheState.VALID); |
| 398 } | 398 } |
| 399 | 399 |
| 400 test_performWorkItem_preExistingException() { | 400 test_performWorkItem_preExistingException() { |
| 401 AnalysisTarget target = new TestSource(); | 401 AnalysisTarget target = new TestSource(); |
| 402 ResultDescriptor result = new ResultDescriptor('result', null); | 402 ResultDescriptor result = new ResultDescriptor('result', null); |
| 403 TaskDescriptor descriptor = new TaskDescriptor( | 403 TaskDescriptor descriptor = new TaskDescriptor( |
| 404 'task', | 404 'task', |
| 405 (context, target) => new TestAnalysisTask(context, target), | 405 (context, target) => new TestAnalysisTask(context, target), |
| 406 (target) => {}, | 406 (target) => {}, |
| 407 [result]); | 407 [result]); |
| 408 CaughtException exception = | 408 CaughtException exception = |
| 409 new CaughtException(new AnalysisException(), null); | 409 new CaughtException(new AnalysisException(), null); |
| 410 WorkItem item = new WorkItem(context, target, descriptor, null); | 410 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 411 item.exception = exception; | 411 item.exception = exception; |
| 412 | 412 |
| 413 analysisDriver.performWorkItem(item); | 413 analysisDriver.performWorkItem(item); |
| 414 CacheEntry targetEntry = context.getCacheEntry(item.target); | 414 CacheEntry targetEntry = context.getCacheEntry(item.target); |
| 415 expect(targetEntry.exception, exception); | 415 expect(targetEntry.exception, exception); |
| 416 expect(targetEntry.getState(result), CacheState.ERROR); | 416 expect(targetEntry.getState(result), CacheState.ERROR); |
| 417 } | 417 } |
| 418 | 418 |
| 419 test_reset() { | 419 test_reset() { |
| 420 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 420 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 421 TaskDescriptor descriptor = new TaskDescriptor( | 421 TaskDescriptor descriptor = new TaskDescriptor( |
| 422 'task', | 422 'task', |
| 423 (context, target) => new TestAnalysisTask(context, target), | 423 (context, target) => new TestAnalysisTask(context, target), |
| 424 (target) => {'one': inputResult.of(target)}, | 424 (target) => {'one': inputResult.of(target)}, |
| 425 [new ResultDescriptor('output', null)]); | 425 [new ResultDescriptor('output', null)]); |
| 426 analysisDriver.currentWorkOrder = | 426 analysisDriver.currentWorkOrder = new WorkOrder( |
| 427 new WorkOrder(taskManager, new WorkItem(null, null, descriptor, null)); | 427 taskManager, new WorkItem(null, null, descriptor, null, null)); |
| 428 | 428 |
| 429 analysisDriver.reset(); | 429 analysisDriver.reset(); |
| 430 expect(analysisDriver.currentWorkOrder, isNull); | 430 expect(analysisDriver.currentWorkOrder, isNull); |
| 431 } | 431 } |
| 432 | 432 |
| 433 void _configureDescriptors12() { | 433 void _configureDescriptors12() { |
| 434 descriptor1 = new TaskDescriptor( | 434 descriptor1 = new TaskDescriptor( |
| 435 'task1', | 435 'task1', |
| 436 (context, target) => | 436 (context, target) => |
| 437 new TestAnalysisTask(context, target, descriptor: descriptor1), | 437 new TestAnalysisTask(context, target, descriptor: descriptor1), |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 615 |
| 616 @reflectiveTest | 616 @reflectiveTest |
| 617 class WorkItemTest extends AbstractDriverTest { | 617 class WorkItemTest extends AbstractDriverTest { |
| 618 test_buildTask_complete() { | 618 test_buildTask_complete() { |
| 619 AnalysisTarget target = new TestSource(); | 619 AnalysisTarget target = new TestSource(); |
| 620 TaskDescriptor descriptor = new TaskDescriptor( | 620 TaskDescriptor descriptor = new TaskDescriptor( |
| 621 'task', | 621 'task', |
| 622 (context, target) => new TestAnalysisTask(context, target), | 622 (context, target) => new TestAnalysisTask(context, target), |
| 623 (target) => {}, | 623 (target) => {}, |
| 624 [new ResultDescriptor('output', null)]); | 624 [new ResultDescriptor('output', null)]); |
| 625 WorkItem item = new WorkItem(context, target, descriptor, null); | 625 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 626 AnalysisTask task = item.buildTask(); | 626 AnalysisTask task = item.buildTask(); |
| 627 expect(task, isNotNull); | 627 expect(task, isNotNull); |
| 628 } | 628 } |
| 629 | 629 |
| 630 test_buildTask_incomplete() { | 630 test_buildTask_incomplete() { |
| 631 AnalysisTarget target = new TestSource(); | 631 AnalysisTarget target = new TestSource(); |
| 632 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 632 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 633 List<ResultDescriptor> outputResults = <ResultDescriptor>[ | 633 List<ResultDescriptor> outputResults = <ResultDescriptor>[ |
| 634 new ResultDescriptor('output', null) | 634 new ResultDescriptor('output', null) |
| 635 ]; | 635 ]; |
| 636 TaskDescriptor descriptor = new TaskDescriptor( | 636 TaskDescriptor descriptor = new TaskDescriptor( |
| 637 'task', | 637 'task', |
| 638 (context, target) => | 638 (context, target) => |
| 639 new TestAnalysisTask(context, target, results: outputResults), | 639 new TestAnalysisTask(context, target, results: outputResults), |
| 640 (target) => {'one': inputResult.of(target)}, | 640 (target) => {'one': inputResult.of(target)}, |
| 641 outputResults); | 641 outputResults); |
| 642 WorkItem item = new WorkItem(context, target, descriptor, null); | 642 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 643 expect(() => item.buildTask(), throwsStateError); | 643 expect(() => item.buildTask(), throwsStateError); |
| 644 } | 644 } |
| 645 | 645 |
| 646 test_create() { | 646 test_create() { |
| 647 AnalysisTarget target = new TestSource(); | 647 AnalysisTarget target = new TestSource(); |
| 648 TaskDescriptor descriptor = new TaskDescriptor( | 648 TaskDescriptor descriptor = new TaskDescriptor( |
| 649 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); | 649 'task', null, (target) => {}, [new ResultDescriptor('result', null)]); |
| 650 WorkItem item = new WorkItem(context, target, descriptor, null); | 650 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 651 expect(item, isNotNull); | 651 expect(item, isNotNull); |
| 652 expect(item.context, context); | 652 expect(item.context, context); |
| 653 expect(item.descriptor, descriptor); | 653 expect(item.descriptor, descriptor); |
| 654 expect(item.target, target); | 654 expect(item.target, target); |
| 655 } | 655 } |
| 656 | 656 |
| 657 test_gatherInputs_complete() { | 657 test_gatherInputs_complete() { |
| 658 AnalysisTarget target = new TestSource(); | 658 AnalysisTarget target = new TestSource(); |
| 659 TaskDescriptor descriptor = new TaskDescriptor( | 659 TaskDescriptor descriptor = new TaskDescriptor( |
| 660 'task', | 660 'task', |
| 661 (context, target) => new TestAnalysisTask(context, target), | 661 (context, target) => new TestAnalysisTask(context, target), |
| 662 (target) => {}, | 662 (target) => {}, |
| 663 [new ResultDescriptor('output', null)]); | 663 [new ResultDescriptor('output', null)]); |
| 664 WorkItem item = new WorkItem(context, target, descriptor, null); | 664 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 665 WorkItem result = item.gatherInputs(taskManager, []); | 665 WorkItem result = item.gatherInputs(taskManager, []); |
| 666 expect(result, isNull); | 666 expect(result, isNull); |
| 667 expect(item.exception, isNull); | 667 expect(item.exception, isNull); |
| 668 } | 668 } |
| 669 | 669 |
| 670 test_gatherInputs_incomplete() { | 670 test_gatherInputs_incomplete() { |
| 671 AnalysisTarget target = new TestSource(); | 671 AnalysisTarget target = new TestSource(); |
| 672 ResultDescriptor resultA = new ResultDescriptor('resultA', null); | 672 ResultDescriptor resultA = new ResultDescriptor('resultA', null); |
| 673 ResultDescriptor resultB = new ResultDescriptor('resultB', null); | 673 ResultDescriptor resultB = new ResultDescriptor('resultB', null); |
| 674 // prepare tasks | 674 // prepare tasks |
| 675 TaskDescriptor task1 = new TaskDescriptor( | 675 TaskDescriptor task1 = new TaskDescriptor( |
| 676 'task', | 676 'task', |
| 677 (context, target) => | 677 (context, target) => |
| 678 new TestAnalysisTask(context, target, results: [resultA]), | 678 new TestAnalysisTask(context, target, results: [resultA]), |
| 679 (target) => {}, | 679 (target) => {}, |
| 680 [resultA]); | 680 [resultA]); |
| 681 TaskDescriptor task2 = new TaskDescriptor( | 681 TaskDescriptor task2 = new TaskDescriptor( |
| 682 'task', | 682 'task', |
| 683 (context, target) => new TestAnalysisTask(context, target), | 683 (context, target) => new TestAnalysisTask(context, target), |
| 684 (target) => {'one': resultA.of(target)}, | 684 (target) => {'one': resultA.of(target)}, |
| 685 [resultB]); | 685 [resultB]); |
| 686 taskManager.addTaskDescriptor(task1); | 686 taskManager.addTaskDescriptor(task1); |
| 687 taskManager.addTaskDescriptor(task2); | 687 taskManager.addTaskDescriptor(task2); |
| 688 // gather inputs | 688 // gather inputs |
| 689 WorkItem item = new WorkItem(context, target, task2, null); | 689 WorkItem item = new WorkItem(context, target, task2, null, null); |
| 690 WorkItem inputItem = item.gatherInputs(taskManager, []); | 690 WorkItem inputItem = item.gatherInputs(taskManager, []); |
| 691 expect(inputItem, isNotNull); | 691 expect(inputItem, isNotNull); |
| 692 } | 692 } |
| 693 | 693 |
| 694 test_gatherInputs_invalid() { | 694 test_gatherInputs_invalid() { |
| 695 AnalysisTarget target = new TestSource(); | 695 AnalysisTarget target = new TestSource(); |
| 696 ResultDescriptor inputResult = new ResultDescriptor('input', null); | 696 ResultDescriptor inputResult = new ResultDescriptor('input', null); |
| 697 TaskDescriptor descriptor = new TaskDescriptor( | 697 TaskDescriptor descriptor = new TaskDescriptor( |
| 698 'task', | 698 'task', |
| 699 (context, target) => new TestAnalysisTask(context, target), | 699 (context, target) => new TestAnalysisTask(context, target), |
| 700 (target) => {'one': inputResult.of(target)}, | 700 (target) => {'one': inputResult.of(target)}, |
| 701 [new ResultDescriptor('output', null)]); | 701 [new ResultDescriptor('output', null)]); |
| 702 WorkItem item = new WorkItem(context, target, descriptor, null); | 702 WorkItem item = new WorkItem(context, target, descriptor, null, null); |
| 703 WorkItem result = item.gatherInputs(taskManager, []); | 703 WorkItem result = item.gatherInputs(taskManager, []); |
| 704 expect(result, isNull); | 704 expect(result, isNull); |
| 705 expect(item.exception, isNotNull); | 705 expect(item.exception, isNotNull); |
| 706 } | 706 } |
| 707 } | 707 } |
| 708 | 708 |
| 709 @reflectiveTest | 709 @reflectiveTest |
| 710 class WorkOrderTest extends EngineTestCase { | 710 class WorkOrderTest extends EngineTestCase { |
| 711 test_create() { | 711 test_create() { |
| 712 TaskManager manager = new TaskManager(); | 712 TaskManager manager = new TaskManager(); |
| 713 TaskDescriptor descriptor = new TaskDescriptor( | 713 TaskDescriptor descriptor = new TaskDescriptor( |
| 714 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 714 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 715 WorkOrder order = | 715 WorkOrder order = new WorkOrder( |
| 716 new WorkOrder(manager, new WorkItem(null, null, descriptor, null)); | 716 manager, new WorkItem(null, null, descriptor, null, null)); |
| 717 expect(order, isNotNull); | 717 expect(order, isNotNull); |
| 718 expect(order.currentItems, isNull); | 718 expect(order.currentItems, isNull); |
| 719 expect(order.current, isNull); | 719 expect(order.current, isNull); |
| 720 } | 720 } |
| 721 | 721 |
| 722 test_moveNext() { | 722 test_moveNext() { |
| 723 TaskManager manager = new TaskManager(); | 723 TaskManager manager = new TaskManager(); |
| 724 TaskDescriptor descriptor = new TaskDescriptor( | 724 TaskDescriptor descriptor = new TaskDescriptor( |
| 725 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); | 725 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); |
| 726 WorkItem workItem = new WorkItem(null, null, descriptor, null); | 726 WorkItem workItem = new WorkItem(null, null, descriptor, null, null); |
| 727 WorkOrder order = new WorkOrder(manager, workItem); | 727 WorkOrder order = new WorkOrder(manager, workItem); |
| 728 // "item" has no child items | 728 // "item" has no child items |
| 729 expect(order.moveNext(), isTrue); | 729 expect(order.moveNext(), isTrue); |
| 730 expect(order.current, workItem); | 730 expect(order.current, workItem); |
| 731 // done | 731 // done |
| 732 expect(order.moveNext(), isFalse); | 732 expect(order.moveNext(), isFalse); |
| 733 expect(order.current, isNull); | 733 expect(order.current, isNull); |
| 734 } | 734 } |
| 735 } | 735 } |
| 736 | 736 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 784 return dependency; | 784 return dependency; |
| 785 } | 785 } |
| 786 } | 786 } |
| 787 return null; | 787 return null; |
| 788 } | 788 } |
| 789 } | 789 } |
| 790 | 790 |
| 791 class _WorkManagerMock extends TypedMock implements WorkManager { | 791 class _WorkManagerMock extends TypedMock implements WorkManager { |
| 792 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 792 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 793 } | 793 } |
| OLD | NEW |