| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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.integration.analysis.navigation; | 5 library test.integration.analysis.navigation; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/protocol.dart'; | 7 import 'package:analysis_server/src/protocol.dart'; |
| 8 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 8 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 9 import 'package:unittest/unittest.dart'; |
| 10 | 10 |
| 11 import '../../utils.dart'; |
| 11 import '../integration_tests.dart'; | 12 import '../integration_tests.dart'; |
| 12 | 13 |
| 13 main() { | 14 main() { |
| 15 initializeTestEnvironment(); |
| 14 defineReflectiveTests(AnalysisNavigationTest); | 16 defineReflectiveTests(AnalysisNavigationTest); |
| 15 } | 17 } |
| 16 | 18 |
| 17 @reflectiveTest | 19 @reflectiveTest |
| 18 class AnalysisNavigationTest extends AbstractAnalysisServerIntegrationTest { | 20 class AnalysisNavigationTest extends AbstractAnalysisServerIntegrationTest { |
| 19 test_navigation() { | 21 test_navigation() { |
| 20 String pathname1 = sourcePath('test1.dart'); | 22 String pathname1 = sourcePath('test1.dart'); |
| 21 String text1 = r''' | 23 String text1 = r''' |
| 22 library foo; | 24 library foo; |
| 23 | 25 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 47 localVariable.field = 1; | 49 localVariable.field = 1; |
| 48 } | 50 } |
| 49 '''; | 51 '''; |
| 50 writeFile(pathname1, text1); | 52 writeFile(pathname1, text1); |
| 51 String pathname2 = sourcePath('test2.dart'); | 53 String pathname2 = sourcePath('test2.dart'); |
| 52 String text2 = r''' | 54 String text2 = r''' |
| 53 part of foo; | 55 part of foo; |
| 54 '''; | 56 '''; |
| 55 writeFile(pathname2, text2); | 57 writeFile(pathname2, text2); |
| 56 standardAnalysisSetup(); | 58 standardAnalysisSetup(); |
| 57 sendAnalysisSetSubscriptions({AnalysisService.NAVIGATION: [pathname1]}); | 59 sendAnalysisSetSubscriptions({ |
| 60 AnalysisService.NAVIGATION: [pathname1] |
| 61 }); |
| 58 List<NavigationRegion> regions; | 62 List<NavigationRegion> regions; |
| 59 List<NavigationTarget> targets; | 63 List<NavigationTarget> targets; |
| 60 List<String> targetFiles; | 64 List<String> targetFiles; |
| 61 onAnalysisNavigation.listen((AnalysisNavigationParams params) { | 65 onAnalysisNavigation.listen((AnalysisNavigationParams params) { |
| 62 expect(params.file, equals(pathname1)); | 66 expect(params.file, equals(pathname1)); |
| 63 regions = params.regions; | 67 regions = params.regions; |
| 64 targets = params.targets; | 68 targets = params.targets; |
| 65 targetFiles = params.files; | 69 targetFiles = params.files; |
| 66 }); | 70 }); |
| 67 return analysisFinished.then((_) { | 71 return analysisFinished.then((_) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 94 int sourceIndex = text1.indexOf(source); | 98 int sourceIndex = text1.indexOf(source); |
| 95 NavigationTarget element = findTargetElement(sourceIndex); | 99 NavigationTarget element = findTargetElement(sourceIndex); |
| 96 expect(targetFiles[element.fileIndex], matches(expectedTargetRegexp)); | 100 expect(targetFiles[element.fileIndex], matches(expectedTargetRegexp)); |
| 97 expect(element.kind, equals(expectedKind)); | 101 expect(element.kind, equals(expectedKind)); |
| 98 } | 102 } |
| 99 // TODO(paulberry): will the element type 'CLASS_TYPE_ALIAS' ever appear | 103 // TODO(paulberry): will the element type 'CLASS_TYPE_ALIAS' ever appear |
| 100 // as a navigation target? | 104 // as a navigation target? |
| 101 checkLocal('Class<int>', 'Class<TypeParameter>', ElementKind.CLASS); | 105 checkLocal('Class<int>', 'Class<TypeParameter>', ElementKind.CLASS); |
| 102 checkRemote( | 106 checkRemote( |
| 103 "'test2.dart';", r'test2.dart$', ElementKind.COMPILATION_UNIT); | 107 "'test2.dart';", r'test2.dart$', ElementKind.COMPILATION_UNIT); |
| 104 checkLocal('Class<int>.constructor', | 108 checkLocal( |
| 109 'Class<int>.constructor', |
| 105 'constructor(); /* constructor declaration */', | 110 'constructor(); /* constructor declaration */', |
| 106 ElementKind.CONSTRUCTOR); | 111 ElementKind.CONSTRUCTOR); |
| 107 checkLocal('constructor(); // usage', | 112 checkLocal( |
| 113 'constructor(); // usage', |
| 108 'constructor(); /* constructor declaration */', | 114 'constructor(); /* constructor declaration */', |
| 109 ElementKind.CONSTRUCTOR); | 115 ElementKind.CONSTRUCTOR); |
| 110 checkLocal('field;', 'field;', ElementKind.FIELD); | 116 checkLocal('field;', 'field;', ElementKind.FIELD); |
| 111 checkLocal('function(() => localVariable.field)', | 117 checkLocal('function(() => localVariable.field)', |
| 112 'function(FunctionTypeAlias parameter)', ElementKind.FUNCTION); | 118 'function(FunctionTypeAlias parameter)', ElementKind.FUNCTION); |
| 113 checkLocal('FunctionTypeAlias parameter', 'FunctionTypeAlias();', | 119 checkLocal('FunctionTypeAlias parameter', 'FunctionTypeAlias();', |
| 114 ElementKind.FUNCTION_TYPE_ALIAS); | 120 ElementKind.FUNCTION_TYPE_ALIAS); |
| 115 checkLocal('field)', 'field;', ElementKind.GETTER); | 121 checkLocal('field)', 'field;', ElementKind.GETTER); |
| 116 checkRemote("'dart:async'", r'async\.dart$', ElementKind.LIBRARY); | 122 checkRemote("'dart:async'", r'async\.dart$', ElementKind.LIBRARY); |
| 117 checkLocal( | 123 checkLocal( |
| 118 'localVariable.field', 'localVariable =', ElementKind.LOCAL_VARIABLE); | 124 'localVariable.field', 'localVariable =', ElementKind.LOCAL_VARIABLE); |
| 119 checkLocal('method();', 'method() {', ElementKind.METHOD); | 125 checkLocal('method();', 'method() {', ElementKind.METHOD); |
| 120 checkLocal('parameter());', 'parameter) {', ElementKind.PARAMETER); | 126 checkLocal('parameter());', 'parameter) {', ElementKind.PARAMETER); |
| 121 checkLocal('field = 1', 'field;', ElementKind.SETTER); | 127 checkLocal('field = 1', 'field;', ElementKind.SETTER); |
| 122 checkLocal('topLevelVariable;', 'topLevelVariable;', | 128 checkLocal('topLevelVariable;', 'topLevelVariable;', |
| 123 ElementKind.TOP_LEVEL_VARIABLE); | 129 ElementKind.TOP_LEVEL_VARIABLE); |
| 124 checkLocal( | 130 checkLocal( |
| 125 'TypeParameter field;', 'TypeParameter>', ElementKind.TYPE_PARAMETER); | 131 'TypeParameter field;', 'TypeParameter>', ElementKind.TYPE_PARAMETER); |
| 126 }); | 132 }); |
| 127 } | 133 } |
| 128 } | 134 } |
| OLD | NEW |