| 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.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 Loading... |
| 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 } |
| OLD | NEW |