| Index: pkg/analyzer_plugin/test/src/utilities/navigation_test.dart
|
| diff --git a/pkg/analyzer_plugin/test/src/utilities/navigation_test.dart b/pkg/analyzer_plugin/test/src/utilities/navigation_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1753ec97ef44a66d5dd531328d94e65530be2506
|
| --- /dev/null
|
| +++ b/pkg/analyzer_plugin/test/src/utilities/navigation_test.dart
|
| @@ -0,0 +1,127 @@
|
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
| +import 'package:analyzer_plugin/src/utilities/navigation.dart';
|
| +import 'package:test/test.dart';
|
| +import 'package:test_reflective_loader/test_reflective_loader.dart';
|
| +
|
| +void main() {
|
| + defineReflectiveTests(NavigationCollectorImplTest);
|
| +}
|
| +
|
| +@reflectiveTest
|
| +class NavigationCollectorImplTest {
|
| + NavigationCollectorImpl collector = new NavigationCollectorImpl();
|
| +
|
| + test_createRegions_multiple() {
|
| + // Two files, each with two targets.
|
| + String fileA = 'a.dart';
|
| + int targetOffsetA1 = 1;
|
| + int targetLengthA1 = 2;
|
| + int targetStartLineA1 = 3;
|
| + int targetStartColumnA1 = 4;
|
| + ElementKind targetKindA1 = ElementKind.CLASS;
|
| + Location targetLocationA1 = new Location(fileA, targetOffsetA1,
|
| + targetLengthA1, targetStartLineA1, targetStartColumnA1);
|
| + int targetOffsetA2 = 5;
|
| + int targetLengthA2 = 6;
|
| + int targetStartLineA2 = 7;
|
| + int targetStartColumnA2 = 8;
|
| + ElementKind targetKindA2 = ElementKind.FUNCTION;
|
| + Location targetLocationA2 = new Location(fileA, targetOffsetA2,
|
| + targetLengthA2, targetStartLineA2, targetStartColumnA2);
|
| +
|
| + String fileB = 'b.dart';
|
| + int targetOffsetB1 = 9;
|
| + int targetLengthB1 = 10;
|
| + int targetStartLineB1 = 11;
|
| + int targetStartColumnB1 = 12;
|
| + ElementKind targetKindB1 = ElementKind.ENUM;
|
| + Location targetLocationB1 = new Location(fileB, targetOffsetB1,
|
| + targetLengthB1, targetStartLineB1, targetStartColumnB1);
|
| + int targetOffsetB2 = 13;
|
| + int targetLengthB2 = 14;
|
| + int targetStartLineB2 = 15;
|
| + int targetStartColumnB2 = 16;
|
| + ElementKind targetKindB2 = ElementKind.METHOD;
|
| + Location targetLocationB2 = new Location(fileB, targetOffsetB2,
|
| + targetLengthB2, targetStartLineB2, targetStartColumnB2);
|
| +
|
| + // Six regions targeting a1, b1, a2, b1, a1, b2
|
| + List<int> regionOffsets = [17, 18, 19, 20, 21, 22];
|
| + List<int> regionLengths = [23, 24, 25, 26, 27, 28];
|
| + List<ElementKind> targetKinds = [
|
| + targetKindA1,
|
| + targetKindB1,
|
| + targetKindA2,
|
| + targetKindB1,
|
| + targetKindA1,
|
| + targetKindB2
|
| + ];
|
| + List<Location> targetLocations = [
|
| + targetLocationA1,
|
| + targetLocationB1,
|
| + targetLocationA2,
|
| + targetLocationB1,
|
| + targetLocationA1,
|
| + targetLocationB2
|
| + ];
|
| + for (int i = 0; i < 6; i++) {
|
| + collector.addRegion(regionOffsets[i], regionLengths[i], targetKinds[i],
|
| + targetLocations[i]);
|
| + }
|
| +
|
| + collector.createRegions();
|
| + expect(collector.files, [fileA, fileB]);
|
| + expect(collector.regions, [
|
| + new NavigationRegion(regionOffsets[0], regionLengths[0], [0]),
|
| + new NavigationRegion(regionOffsets[1], regionLengths[1], [1]),
|
| + new NavigationRegion(regionOffsets[2], regionLengths[2], [2]),
|
| + new NavigationRegion(regionOffsets[3], regionLengths[3], [1]),
|
| + new NavigationRegion(regionOffsets[4], regionLengths[4], [0]),
|
| + new NavigationRegion(regionOffsets[5], regionLengths[5], [3]),
|
| + ]);
|
| + expect(collector.targets, [
|
| + new NavigationTarget(targetKindA1, 0, targetOffsetA1, targetLengthA1,
|
| + targetStartLineA1, targetStartColumnA1),
|
| + new NavigationTarget(targetKindB1, 1, targetOffsetB1, targetLengthB1,
|
| + targetStartLineB1, targetStartColumnB1),
|
| + new NavigationTarget(targetKindA2, 0, targetOffsetA2, targetLengthA2,
|
| + targetStartLineA2, targetStartColumnA2),
|
| + new NavigationTarget(targetKindB2, 1, targetOffsetB2, targetLengthB2,
|
| + targetStartLineB2, targetStartColumnB2),
|
| + ]);
|
| + }
|
| +
|
| + test_createRegions_none() {
|
| + collector.createRegions();
|
| + expect(collector.files, isEmpty);
|
| + expect(collector.regions, isEmpty);
|
| + expect(collector.targets, isEmpty);
|
| + }
|
| +
|
| + test_createRegions_single() {
|
| + int regionOffset = 13;
|
| + int regionLength = 7;
|
| + ElementKind targetKind = ElementKind.CLASS;
|
| + String targetFile = 'c.dart';
|
| + int targetOffset = 17;
|
| + int targetLength = 1;
|
| + int targetStartLine = 5;
|
| + int targetStartColumn = 1;
|
| + Location targetLocation = new Location(targetFile, targetOffset,
|
| + targetLength, targetStartLine, targetStartColumn);
|
| + collector.addRegion(regionOffset, regionLength, targetKind, targetLocation);
|
| + collector.createRegions();
|
| + expect(collector.files, [targetFile]);
|
| + expect(collector.regions, [
|
| + new NavigationRegion(regionOffset, regionLength, [0])
|
| + ]);
|
| + expect(collector.targets, [
|
| + new NavigationTarget(targetKind, 0, targetOffset, targetLength,
|
| + targetStartLine, targetStartColumn)
|
| + ]);
|
| + }
|
| +}
|
|
|