Index: pkg/analysis_server/test/analysis/notification_navigation_test.dart |
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart |
index 16d1bcd27c944aa4f78acc11240418169f1dfda4..13d54cd9e540203de8394ae9b72cc0474b5f472f 100644 |
--- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart |
+++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart |
@@ -19,154 +19,7 @@ main() { |
} |
@reflectiveTest |
-class AnalysisNotificationNavigationTest extends AbstractAnalysisTest { |
- List<NavigationRegion> regions; |
- List<NavigationTarget> targets; |
- List<String> targetFiles; |
- |
- NavigationRegion testRegion; |
- List<int> testTargetIndexes; |
- NavigationTarget testTarget; |
- |
- /** |
- * Validates that there is a target in [testTargetIndexes] with [file], |
- * at [offset] and with the given [length]. |
- */ |
- void assertHasFileTarget(String file, int offset, int length) { |
- List<NavigationTarget> testTargets = |
- testTargetIndexes.map((int index) => targets[index]).toList(); |
- for (NavigationTarget target in testTargets) { |
- if (targetFiles[target.fileIndex] == file && |
- target.offset == offset && |
- target.length == length) { |
- testTarget = target; |
- return; |
- } |
- } |
- fail( |
- 'Expected to find target (file=$file; offset=$offset; length=$length) in\n' |
- '${testRegion} in\n' '${testTargets.join('\n')}'); |
- } |
- |
- void assertHasOperatorRegion(String regionSearch, int regionLength, |
- String targetSearch, int targetLength) { |
- assertHasRegion(regionSearch, regionLength); |
- assertHasTarget(targetSearch, targetLength); |
- } |
- |
- /** |
- * Validates that there is a region at the offset of [search] in [testFile]. |
- * If [length] is not specified explicitly, then length of an identifier |
- * from [search] is used. |
- */ |
- void assertHasRegion(String search, [int length = -1]) { |
- int offset = findOffset(search); |
- if (length == -1) { |
- length = findIdentifierLength(search); |
- } |
- findRegion(offset, length, true); |
- } |
- |
- /** |
- * Validates that there is a region at the offset of [search] in [testFile] |
- * with the given [length] or the length of [search]. |
- */ |
- void assertHasRegionString(String search, [int length = -1]) { |
- int offset = findOffset(search); |
- if (length == -1) { |
- length = search.length; |
- } |
- findRegion(offset, length, true); |
- } |
- |
- /** |
- * Validates that there is an identifier region at [regionSearch] with target |
- * at [targetSearch]. |
- */ |
- void assertHasRegionTarget(String regionSearch, String targetSearch) { |
- assertHasRegion(regionSearch); |
- assertHasTarget(targetSearch); |
- } |
- |
- /** |
- * Validates that there is a target in [testTargets] with [testFile], at the |
- * offset of [search] in [testFile], and with the given [length] or the length |
- * of an leading identifier in [search]. |
- */ |
- void assertHasTarget(String search, [int length = -1]) { |
- int offset = findOffset(search); |
- if (length == -1) { |
- length = findIdentifierLength(search); |
- } |
- assertHasFileTarget(testFile, offset, length); |
- } |
- |
- /** |
- * Validates that there is no a region at [search] and with the given |
- * [length]. |
- */ |
- void assertNoRegion(String search, int length) { |
- int offset = findOffset(search); |
- findRegion(offset, length, false); |
- } |
- |
- /** |
- * Validates that there is no a region at [search] with any length. |
- */ |
- void assertNoRegionAt(String search) { |
- int offset = findOffset(search); |
- findRegion(offset, -1, false); |
- } |
- |
- /** |
- * Validates that there is no a region for [search] string. |
- */ |
- void assertNoRegionString(String search) { |
- int offset = findOffset(search); |
- int length = search.length; |
- findRegion(offset, length, false); |
- } |
- |
- void assertRegionsSorted() { |
- int lastEnd = -1; |
- for (NavigationRegion region in regions) { |
- int offset = region.offset; |
- if (offset < lastEnd) { |
- fail('$lastEnd was expected to be > $offset in\n' + regions.join('\n')); |
- } |
- lastEnd = offset + region.length; |
- } |
- } |
- |
- /** |
- * Finds the navigation region with the given [offset] and [length]. |
- * If [length] is `-1`, then it is ignored. |
- * |
- * If [exists] is `true`, then fails if such region does not exist. |
- * Otherwise remembers this it into [testRegion]. |
- * Also fills [testTargets] with its targets. |
- * |
- * If [exists] is `false`, then fails if such region exists. |
- */ |
- void findRegion(int offset, int length, bool exists) { |
- for (NavigationRegion region in regions) { |
- if (region.offset == offset && |
- (length == -1 || region.length == length)) { |
- if (exists == false) { |
- fail('Not expected to find (offset=$offset; length=$length) in\n' |
- '${regions.join('\n')}'); |
- } |
- testRegion = region; |
- testTargetIndexes = region.targets; |
- return; |
- } |
- } |
- if (exists == true) { |
- fail('Expected to find (offset=$offset; length=$length) in\n' |
- '${regions.join('\n')}'); |
- } |
- } |
- |
+class AnalysisNotificationNavigationTest extends AbstractNavigationTest { |
Future prepareNavigation() { |
addAnalysisSubscription(AnalysisService.NAVIGATION, testFile); |
return waitForTasksFinished().then((_) { |
@@ -785,3 +638,152 @@ void main() { |
}); |
} |
} |
+ |
+class AbstractNavigationTest extends AbstractAnalysisTest { |
+ List<NavigationRegion> regions; |
+ List<NavigationTarget> targets; |
+ List<String> targetFiles; |
+ |
+ NavigationRegion testRegion; |
+ List<int> testTargetIndexes; |
+ NavigationTarget testTarget; |
+ |
+ /** |
+ * Validates that there is a target in [testTargetIndexes] with [file], |
+ * at [offset] and with the given [length]. |
+ */ |
+ void assertHasFileTarget(String file, int offset, int length) { |
+ List<NavigationTarget> testTargets = |
+ testTargetIndexes.map((int index) => targets[index]).toList(); |
+ for (NavigationTarget target in testTargets) { |
+ if (targetFiles[target.fileIndex] == file && |
+ target.offset == offset && |
+ target.length == length) { |
+ testTarget = target; |
+ return; |
+ } |
+ } |
+ fail( |
+ 'Expected to find target (file=$file; offset=$offset; length=$length) in\n' |
+ '${testRegion} in\n' '${testTargets.join('\n')}'); |
+ } |
+ |
+ void assertHasOperatorRegion(String regionSearch, int regionLength, |
+ String targetSearch, int targetLength) { |
+ assertHasRegion(regionSearch, regionLength); |
+ assertHasTarget(targetSearch, targetLength); |
+ } |
+ |
+ /** |
+ * Validates that there is a region at the offset of [search] in [testFile]. |
+ * If [length] is not specified explicitly, then length of an identifier |
+ * from [search] is used. |
+ */ |
+ void assertHasRegion(String search, [int length = -1]) { |
+ int offset = findOffset(search); |
+ if (length == -1) { |
+ length = findIdentifierLength(search); |
+ } |
+ findRegion(offset, length, true); |
+ } |
+ |
+ /** |
+ * Validates that there is a region at the offset of [search] in [testFile] |
+ * with the given [length] or the length of [search]. |
+ */ |
+ void assertHasRegionString(String search, [int length = -1]) { |
+ int offset = findOffset(search); |
+ if (length == -1) { |
+ length = search.length; |
+ } |
+ findRegion(offset, length, true); |
+ } |
+ |
+ /** |
+ * Validates that there is an identifier region at [regionSearch] with target |
+ * at [targetSearch]. |
+ */ |
+ void assertHasRegionTarget(String regionSearch, String targetSearch) { |
+ assertHasRegion(regionSearch); |
+ assertHasTarget(targetSearch); |
+ } |
+ |
+ /** |
+ * Validates that there is a target in [testTargets] with [testFile], at the |
+ * offset of [search] in [testFile], and with the given [length] or the length |
+ * of an leading identifier in [search]. |
+ */ |
+ void assertHasTarget(String search, [int length = -1]) { |
+ int offset = findOffset(search); |
+ if (length == -1) { |
+ length = findIdentifierLength(search); |
+ } |
+ assertHasFileTarget(testFile, offset, length); |
+ } |
+ |
+ /** |
+ * Validates that there is no a region at [search] and with the given |
+ * [length]. |
+ */ |
+ void assertNoRegion(String search, int length) { |
+ int offset = findOffset(search); |
+ findRegion(offset, length, false); |
+ } |
+ |
+ /** |
+ * Validates that there is no a region at [search] with any length. |
+ */ |
+ void assertNoRegionAt(String search) { |
+ int offset = findOffset(search); |
+ findRegion(offset, -1, false); |
+ } |
+ |
+ /** |
+ * Validates that there is no a region for [search] string. |
+ */ |
+ void assertNoRegionString(String search) { |
+ int offset = findOffset(search); |
+ int length = search.length; |
+ findRegion(offset, length, false); |
+ } |
+ |
+ void assertRegionsSorted() { |
+ int lastEnd = -1; |
+ for (NavigationRegion region in regions) { |
+ int offset = region.offset; |
+ if (offset < lastEnd) { |
+ fail('$lastEnd was expected to be > $offset in\n' + regions.join('\n')); |
+ } |
+ lastEnd = offset + region.length; |
+ } |
+ } |
+ |
+ /** |
+ * Finds the navigation region with the given [offset] and [length]. |
+ * If [length] is `-1`, then it is ignored. |
+ * |
+ * If [exists] is `true`, then fails if such region does not exist. |
+ * Otherwise remembers this it into [testRegion]. |
+ * Also fills [testTargets] with its targets. |
+ * |
+ * If [exists] is `false`, then fails if such region exists. |
+ */ |
+ void findRegion(int offset, int length, bool exists) { |
+ for (NavigationRegion region in regions) { |
+ if (region.offset == offset && |
+ (length == -1 || region.length == length)) { |
+ if (exists == false) { |
+ fail('Not expected to find (offset=$offset; length=$length) in\n' |
+ '${regions.join('\n')}'); |
+ } |
+ testRegion = region; |
+ testTargetIndexes = region.targets; |
+ return; |
+ } |
+ } |
+ if (exists == true) { |
+ fail('Expected to find (offset=$offset; length=$length) in\n' |
+ '${regions.join('\n')}'); |
+ } |
+ } |
+} |