Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Side by Side Diff: pkg/analysis_server/test/analysis/get_navigation_test.dart

Issue 1260503002: Fix for 'analysis.getNavigation' implementation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Rollback accidential changes Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analysis_server/lib/src/domain_analysis.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.analysis.get_navigation; 5 library test.analysis.get_navigation;
6 6
7 import 'package:analysis_server/src/domain_analysis.dart'; 7 import 'package:analysis_server/src/domain_analysis.dart';
8 import 'package:analysis_server/src/protocol.dart'; 8 import 'package:analysis_server/src/protocol.dart';
9 import 'package:analyzer/file_system/file_system.dart'; 9 import 'package:analyzer/file_system/file_system.dart';
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; 10 import 'package:test_reflective_loader/test_reflective_loader.dart';
(...skipping 10 matching lines...) Expand all
21 class GetNavigationTest extends AbstractNavigationTest { 21 class GetNavigationTest extends AbstractNavigationTest {
22 static const String requestId = 'test-getNavigtion'; 22 static const String requestId = 'test-getNavigtion';
23 23
24 @override 24 @override
25 void setUp() { 25 void setUp() {
26 super.setUp(); 26 super.setUp();
27 server.handlers = [new AnalysisDomainHandler(server),]; 27 server.handlers = [new AnalysisDomainHandler(server),];
28 createProject(); 28 createProject();
29 } 29 }
30 30
31 test_afterAnalysisComplete() async {
32 addTestFile('''
33 main() {
34 var test = 0;
35 print(test);
36 }
37 ''');
38 await waitForTasksFinished();
39 await _getNavigation(testFile, testCode.indexOf('test);'), 0);
40 assertHasRegion('test);');
41 assertHasTarget('test = 0');
42 }
43
44 test_beforeAnalysisComplete() async { 31 test_beforeAnalysisComplete() async {
45 addTestFile(''' 32 addTestFile('''
46 main() { 33 main() {
47 var test = 0; 34 var test = 0;
48 print(test); 35 print(test);
49 } 36 }
50 '''); 37 ''');
51 await _getNavigation(testFile, testCode.indexOf('test);'), 0); 38 await _getNavigation(testFile, testCode.indexOf('test);'), 0);
52 assertHasRegion('test);'); 39 assertHasRegion('test);');
53 assertHasTarget('test = 0'); 40 assertHasTarget('test = 0');
54 } 41 }
55 42
56 test_fileDoesNotExist() { 43 test_fileDoesNotExist() {
57 String file = '$projectPath/doesNotExist.dart'; 44 String file = '$projectPath/doesNotExist.dart';
58 return _checkInvalid(file, -1, -1); 45 return _checkInvalid(file, -1, -1);
59 } 46 }
60 47
61 test_fileWithoutContext() { 48 test_fileWithoutContext() {
62 String file = '/outside.dart'; 49 String file = '/outside.dart';
63 addFile(file, ''' 50 addFile(file, '''
64 main() { 51 main() {
65 print(42); 52 print(42);
66 } 53 }
67 '''); 54 ''');
68 return _checkInvalid(file, -1, -1); 55 return _checkInvalid(file, -1, -1);
69 } 56 }
70 57
58 test_multipleRegions() async {
59 addTestFile('''
60 main() {
61 var aaa = 1;
62 var bbb = 2;
63 var ccc = 3;
64 var ddd = 4;
65 print(aaa + bbb + ccc + ddd);
66 }
67 ''');
68 await waitForTasksFinished();
69 // request navigation
70 String navCode = ' + bbb + ';
71 await _getNavigation(testFile, testCode.indexOf(navCode), navCode.length);
72 // verify
73 {
74 assertHasRegion('aaa +');
75 assertHasTarget('aaa = 1');
76 }
77 {
78 assertHasRegion('bbb +');
79 assertHasTarget('bbb = 2');
80 }
81 {
82 assertHasRegion('ccc +');
83 assertHasTarget('ccc = 3');
84 }
85 assertNoRegionAt('ddd)');
86 }
87
71 test_removeContextAfterRequest() async { 88 test_removeContextAfterRequest() async {
72 addTestFile(''' 89 addTestFile('''
73 main() { 90 main() {
74 var test = 0; 91 var test = 0;
75 print(test); 92 print(test);
76 } 93 }
77 '''); 94 ''');
78 // handle the request synchronously 95 // handle the request synchronously
79 Request request = 96 Request request =
80 _createGetNavigationRequest(testFile, testCode.indexOf('test);'), 0); 97 _createGetNavigationRequest(testFile, testCode.indexOf('test);'), 0);
81 server.handleRequest(request); 98 server.handleRequest(request);
82 // remove context, causes sending an "invalid file" error 99 // remove context, causes sending an "invalid file" error
83 { 100 {
84 Folder projectFolder = resourceProvider.getResource(projectPath); 101 Folder projectFolder = resourceProvider.getResource(projectPath);
85 server.contextManager.callbacks.removeContext(projectFolder, <String>[]); 102 server.contextManager.callbacks.removeContext(projectFolder, <String>[]);
86 } 103 }
87 // wait for an error response 104 // wait for an error response
88 Response response = await serverChannel.waitForResponse(request); 105 Response response = await serverChannel.waitForResponse(request);
89 expect(response.error, isNotNull); 106 expect(response.error, isNotNull);
90 expect(response.error.code, RequestErrorCode.GET_NAVIGATION_INVALID_FILE); 107 expect(response.error.code, RequestErrorCode.GET_NAVIGATION_INVALID_FILE);
91 } 108 }
92 109
110 test_zeroLength_end() async {
111 addTestFile('''
112 main() {
113 var test = 0;
114 print(test);
115 }
116 ''');
117 await waitForTasksFinished();
118 await _getNavigation(testFile, testCode.indexOf(');'), 0);
119 assertHasRegion('test);');
120 assertHasTarget('test = 0');
121 }
122
123 test_zeroLength_start() async {
124 addTestFile('''
125 main() {
126 var test = 0;
127 print(test);
128 }
129 ''');
130 await waitForTasksFinished();
131 await _getNavigation(testFile, testCode.indexOf('test);'), 0);
132 assertHasRegion('test);');
133 assertHasTarget('test = 0');
134 }
135
93 _checkInvalid(String file, int offset, int length) async { 136 _checkInvalid(String file, int offset, int length) async {
94 Request request = _createGetNavigationRequest(file, offset, length); 137 Request request = _createGetNavigationRequest(file, offset, length);
95 Response response = await serverChannel.sendRequest(request); 138 Response response = await serverChannel.sendRequest(request);
96 expect(response.error, isNotNull); 139 expect(response.error, isNotNull);
97 expect(response.error.code, RequestErrorCode.GET_NAVIGATION_INVALID_FILE); 140 expect(response.error.code, RequestErrorCode.GET_NAVIGATION_INVALID_FILE);
98 } 141 }
99 142
100 Request _createGetNavigationRequest(String file, int offset, int length) { 143 Request _createGetNavigationRequest(String file, int offset, int length) {
101 return new AnalysisGetNavigationParams(file, offset, length) 144 return new AnalysisGetNavigationParams(file, offset, length)
102 .toRequest(requestId); 145 .toRequest(requestId);
103 } 146 }
104 147
105 _getNavigation(String file, int offset, int length) async { 148 _getNavigation(String file, int offset, int length) async {
106 Request request = _createGetNavigationRequest(file, offset, length); 149 Request request = _createGetNavigationRequest(file, offset, length);
107 Response response = await serverChannel.sendRequest(request); 150 Response response = await serverChannel.sendRequest(request);
108 AnalysisGetNavigationResult result = 151 AnalysisGetNavigationResult result =
109 new AnalysisGetNavigationResult.fromResponse(response); 152 new AnalysisGetNavigationResult.fromResponse(response);
110 targetFiles = result.files; 153 targetFiles = result.files;
111 targets = result.targets; 154 targets = result.targets;
112 regions = result.regions; 155 regions = result.regions;
113 } 156 }
114 } 157 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/domain_analysis.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698