| 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.dart_work_manager_test; | 5 library test.src.task.dart_work_manager_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/ast.dart'; | 8 import 'package:analyzer/src/generated/ast.dart'; |
| 9 import 'package:analyzer/src/generated/engine.dart' | 9 import 'package:analyzer/src/generated/engine.dart' |
| 10 show | 10 show |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 expect(manager.librarySourceQueue, unorderedEquals(sources)); | 57 expect(manager.librarySourceQueue, unorderedEquals(sources)); |
| 58 } | 58 } |
| 59 | 59 |
| 60 void expect_unknownSourceQueue(List<Source> sources) { | 60 void expect_unknownSourceQueue(List<Source> sources) { |
| 61 expect(manager.unknownSourceQueue, unorderedEquals(sources)); | 61 expect(manager.unknownSourceQueue, unorderedEquals(sources)); |
| 62 } | 62 } |
| 63 | 63 |
| 64 void setUp() { | 64 void setUp() { |
| 65 cache = context.analysisCache; | 65 cache = context.analysisCache; |
| 66 manager = new DartWorkManager(context); | 66 manager = new DartWorkManager(context); |
| 67 entry1 = context.getCacheEntry(source1); | 67 entry1 = _getOrCreateEntry(source1); |
| 68 entry2 = context.getCacheEntry(source2); | 68 entry2 = _getOrCreateEntry(source2); |
| 69 entry3 = context.getCacheEntry(source3); | 69 entry3 = _getOrCreateEntry(source3); |
| 70 entry4 = context.getCacheEntry(source4); | 70 entry4 = _getOrCreateEntry(source4); |
| 71 } | 71 } |
| 72 | 72 |
| 73 void test_applyChange_add() { | 73 void test_applyChange_add() { |
| 74 // add source1 | 74 // add source1 |
| 75 manager.applyChange([source1], [], []); | 75 manager.applyChange([source1], [], []); |
| 76 expect_unknownSourceQueue([source1]); | 76 expect_unknownSourceQueue([source1]); |
| 77 expect_librarySourceQueue([]); | 77 expect_librarySourceQueue([]); |
| 78 // add source2 | 78 // add source2 |
| 79 manager.applyChange([source2], [], []); | 79 manager.applyChange([source2], [], []); |
| 80 expect_librarySourceQueue([]); | 80 expect_librarySourceQueue([]); |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); | 502 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); |
| 503 // ...but URIs are still value | 503 // ...but URIs are still value |
| 504 expect(entry1.getState(PARSED_UNIT), CacheState.VALID); | 504 expect(entry1.getState(PARSED_UNIT), CacheState.VALID); |
| 505 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.VALID); | 505 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.VALID); |
| 506 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.VALID); | 506 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.VALID); |
| 507 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.VALID); | 507 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.VALID); |
| 508 expect(entry1.getState(INCLUDED_PARTS), CacheState.VALID); | 508 expect(entry1.getState(INCLUDED_PARTS), CacheState.VALID); |
| 509 } | 509 } |
| 510 | 510 |
| 511 void test_onResultInvalidated_scheduleInvalidatedLibraries() { | 511 void test_onResultInvalidated_scheduleInvalidatedLibraries() { |
| 512 // make source3 implicit |
| 513 entry3.explicitlyAdded = false; |
| 512 // set SOURCE_KIND | 514 // set SOURCE_KIND |
| 513 entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []); | 515 entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []); |
| 514 entry2.setValue(SOURCE_KIND, SourceKind.PART, []); | 516 entry2.setValue(SOURCE_KIND, SourceKind.PART, []); |
| 515 entry3.setValue(SOURCE_KIND, SourceKind.LIBRARY, []); | 517 entry3.setValue(SOURCE_KIND, SourceKind.LIBRARY, []); |
| 516 // set LIBRARY_ERRORS_READY for source1 and source3 | 518 // set LIBRARY_ERRORS_READY for source1 and source3 |
| 517 entry1.setValue(LIBRARY_ERRORS_READY, true, []); | 519 entry1.setValue(LIBRARY_ERRORS_READY, true, []); |
| 518 entry3.setValue(LIBRARY_ERRORS_READY, true, []); | 520 entry3.setValue(LIBRARY_ERRORS_READY, true, []); |
| 519 // invalidate LIBRARY_ERRORS_READY for source1, schedule it | 521 // invalidate LIBRARY_ERRORS_READY for source1, schedule it |
| 520 entry1.setState(LIBRARY_ERRORS_READY, CacheState.INVALID); | 522 entry1.setState(LIBRARY_ERRORS_READY, CacheState.INVALID); |
| 521 expect_librarySourceQueue([source1]); | 523 expect_librarySourceQueue([source1]); |
| 522 // invalidate LIBRARY_ERRORS_READY for source3, schedule it | 524 // invalidate LIBRARY_ERRORS_READY for source3, implicit, not scheduled |
| 523 entry3.setState(LIBRARY_ERRORS_READY, CacheState.INVALID); | 525 entry3.setState(LIBRARY_ERRORS_READY, CacheState.INVALID); |
| 524 expect_librarySourceQueue([source1, source3]); | 526 expect_librarySourceQueue([source1]); |
| 525 } | 527 } |
| 526 | 528 |
| 527 void test_onSourceFactoryChanged() { | 529 void test_onSourceFactoryChanged() { |
| 528 when(context.exists(anyObject)).thenReturn(true); | 530 when(context.exists(anyObject)).thenReturn(true); |
| 529 // set cache values | 531 // set cache values |
| 530 entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []); | 532 entry1.setValue(PARSED_UNIT, AstFactory.compilationUnit(), []); |
| 531 entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []); | 533 entry1.setValue(IMPORTED_LIBRARIES, <Source>[], []); |
| 532 entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []); | 534 entry1.setValue(EXPLICITLY_IMPORTED_LIBRARIES, <Source>[], []); |
| 533 entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []); | 535 entry1.setValue(EXPORTED_LIBRARIES, <Source>[], []); |
| 534 entry1.setValue(INCLUDED_PARTS, <Source>[], []); | 536 entry1.setValue(INCLUDED_PARTS, <Source>[], []); |
| 537 entry1.setValue(LIBRARY_SPECIFIC_UNITS, <LibrarySpecificUnit>[], []); |
| 538 entry1.setValue(UNITS, <Source>[], []); |
| 535 // configure LibrarySpecificUnit | 539 // configure LibrarySpecificUnit |
| 536 LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3); | 540 LibrarySpecificUnit unitTarget = new LibrarySpecificUnit(source2, source3); |
| 537 CacheEntry unitEntry = new CacheEntry(unitTarget); | 541 CacheEntry unitEntry = new CacheEntry(unitTarget); |
| 538 cache.put(unitEntry); | 542 cache.put(unitEntry); |
| 539 unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []); | 543 unitEntry.setValue(BUILD_LIBRARY_ERRORS, <AnalysisError>[], []); |
| 540 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID); | 544 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.VALID); |
| 541 // notify | 545 // notify |
| 542 manager.onSourceFactoryChanged(); | 546 manager.onSourceFactoryChanged(); |
| 543 // resolution is invalidated | 547 // resolution is invalidated |
| 544 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); | 548 expect(unitEntry.getState(BUILD_LIBRARY_ERRORS), CacheState.INVALID); |
| 545 // ...and URIs resolution too | 549 // ...and URIs resolution too |
| 546 expect(entry1.getState(PARSED_UNIT), CacheState.INVALID); | 550 expect(entry1.getState(PARSED_UNIT), CacheState.INVALID); |
| 547 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.INVALID); | 551 expect(entry1.getState(IMPORTED_LIBRARIES), CacheState.INVALID); |
| 548 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.INVALID); | 552 expect(entry1.getState(EXPLICITLY_IMPORTED_LIBRARIES), CacheState.INVALID); |
| 549 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.INVALID); | 553 expect(entry1.getState(EXPORTED_LIBRARIES), CacheState.INVALID); |
| 550 expect(entry1.getState(INCLUDED_PARTS), CacheState.INVALID); | 554 expect(entry1.getState(INCLUDED_PARTS), CacheState.INVALID); |
| 555 expect(entry1.getState(LIBRARY_SPECIFIC_UNITS), CacheState.INVALID); |
| 556 expect(entry1.getState(UNITS), CacheState.INVALID); |
| 551 } | 557 } |
| 552 | 558 |
| 553 void test_resultsComputed_errors_forLibrarySpecificUnit() { | 559 void test_resultsComputed_errors_forLibrarySpecificUnit() { |
| 554 LineInfo lineInfo = new LineInfo([0]); | 560 LineInfo lineInfo = new LineInfo([0]); |
| 555 AnalysisError error1 = | 561 AnalysisError error1 = |
| 556 new AnalysisError(source1, 1, 0, ScannerErrorCode.MISSING_DIGIT); | 562 new AnalysisError(source1, 1, 0, ScannerErrorCode.MISSING_DIGIT); |
| 557 AnalysisError error2 = | 563 AnalysisError error2 = |
| 558 new AnalysisError(source1, 2, 0, ScannerErrorCode.MISSING_DIGIT); | 564 new AnalysisError(source1, 2, 0, ScannerErrorCode.MISSING_DIGIT); |
| 559 when(context.getLibrariesContaining(source1)).thenReturn([source2]); | 565 when(context.getLibrariesContaining(source1)).thenReturn([source2]); |
| 560 when(context.getErrors(source1)) | 566 when(context.getErrors(source1)) |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 | 744 |
| 739 void test_resultsComputed_updatePartsLibraries_partParsed() { | 745 void test_resultsComputed_updatePartsLibraries_partParsed() { |
| 740 Source part = new TestSource('part.dart'); | 746 Source part = new TestSource('part.dart'); |
| 741 expect(manager.libraryPartsMap, isEmpty); | 747 expect(manager.libraryPartsMap, isEmpty); |
| 742 // part.dart parsed, no changes is the map of libraries | 748 // part.dart parsed, no changes is the map of libraries |
| 743 manager.resultsComputed( | 749 manager.resultsComputed( |
| 744 part, {SOURCE_KIND: SourceKind.PART, INCLUDED_PARTS: <Source>[]}); | 750 part, {SOURCE_KIND: SourceKind.PART, INCLUDED_PARTS: <Source>[]}); |
| 745 expect(manager.libraryPartsMap, isEmpty); | 751 expect(manager.libraryPartsMap, isEmpty); |
| 746 } | 752 } |
| 747 | 753 |
| 748 CacheEntry _getOrCreateEntry(Source source) { | 754 CacheEntry _getOrCreateEntry(Source source, [bool explicit = true]) { |
| 749 CacheEntry entry = cache.get(source); | 755 CacheEntry entry = cache.get(source); |
| 750 if (entry == null) { | 756 if (entry == null) { |
| 751 entry = new CacheEntry(source); | 757 entry = new CacheEntry(source); |
| 758 entry.explicitlyAdded = explicit; |
| 752 cache.put(entry); | 759 cache.put(entry); |
| 753 } | 760 } |
| 754 return entry; | 761 return entry; |
| 755 } | 762 } |
| 756 } | 763 } |
| 757 | 764 |
| 758 class _DartSdkMock extends TypedMock implements DartSdk { | 765 class _DartSdkMock extends TypedMock implements DartSdk { |
| 759 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 766 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 760 } | 767 } |
| 761 | 768 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 | 810 |
| 804 class _SourceMock extends TypedMock implements Source { | 811 class _SourceMock extends TypedMock implements Source { |
| 805 final String shortName; | 812 final String shortName; |
| 806 _SourceMock(this.shortName); | 813 _SourceMock(this.shortName); |
| 807 @override | 814 @override |
| 808 String get fullName => '/' + shortName; | 815 String get fullName => '/' + shortName; |
| 809 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 816 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 810 @override | 817 @override |
| 811 String toString() => fullName; | 818 String toString() => fullName; |
| 812 } | 819 } |
| OLD | NEW |