OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analysis_server/plugin/protocol/protocol.dart' as server; | 5 import 'package:analysis_server/plugin/protocol/protocol.dart' as server; |
6 import 'package:analysis_server/src/plugin/result_converter.dart'; | 6 import 'package:analysis_server/src/plugin/result_converter.dart'; |
7 import 'package:analysis_server/src/protocol/protocol_internal.dart' as server; | 7 import 'package:analysis_server/src/protocol/protocol_internal.dart' as server; |
8 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; | 8 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
11 | 11 |
| 12 import 'protocol_test_utilities.dart'; |
| 13 |
12 main() { | 14 main() { |
13 defineReflectiveSuite(() { | 15 defineReflectiveSuite(() { |
14 defineReflectiveTests(ResultConverterTest); | 16 defineReflectiveTests(ResultConverterTest); |
15 }); | 17 }); |
16 } | 18 } |
17 | 19 |
18 @reflectiveTest | 20 @reflectiveTest |
19 class ResultConverterTest { | 21 class ResultConverterTest extends ProtocolTestUtilities { |
20 static const List<String> strings = const <String>[ | 22 static const List<String> strings = const <String>[ |
21 'a', | 23 'a', |
22 'b', | 24 'b', |
23 'c', | 25 'c', |
24 'd', | 26 'd', |
25 'e', | 27 'e', |
26 'f', | 28 'f', |
27 'g', | 29 'g', |
28 'h', | 30 'h', |
29 'i', | 31 'i', |
30 'j', | 32 'j', |
31 'k', | 33 'k', |
32 'l', | 34 'l', |
33 'm', | 35 'm', |
34 'n' | 36 'n' |
35 ]; | 37 ]; |
36 | 38 |
37 ResultConverter converter = new ResultConverter(); | 39 ResultConverter converter = new ResultConverter(); |
38 | 40 |
39 void test_convertAnalysisError() { | 41 void test_convertAnalysisError() { |
40 plugin.AnalysisError initial = _pluginAnalysisError(); | 42 plugin.AnalysisError initial = pluginAnalysisError(0, 0); |
41 server.AnalysisError expected = _serverAnalysisError(); | 43 server.AnalysisError expected = serverAnalysisError(0, 0); |
42 expect(converter.convertAnalysisError(initial), expected); | 44 expect(converter.convertAnalysisError(initial), expected); |
43 } | 45 } |
44 | 46 |
45 void test_convertAnalysisErrorFixes() { | 47 void test_convertAnalysisErrorFixes() { |
46 plugin.AnalysisErrorFixes initial = new plugin.AnalysisErrorFixes( | 48 plugin.AnalysisErrorFixes initial = new plugin.AnalysisErrorFixes( |
47 _pluginAnalysisError(), | 49 pluginAnalysisError(0, 0), |
48 fixes: <plugin.PrioritizedSourceChange>[ | 50 fixes: <plugin.PrioritizedSourceChange>[ |
49 new plugin.PrioritizedSourceChange(100, _pluginSourceChange()) | 51 new plugin.PrioritizedSourceChange(100, pluginSourceChange(4, 4)) |
50 ]); | 52 ]); |
51 server.AnalysisErrorFixes expected = new server.AnalysisErrorFixes( | 53 server.AnalysisErrorFixes expected = new server.AnalysisErrorFixes( |
52 _serverAnalysisError(), | 54 serverAnalysisError(0, 0), |
53 fixes: <server.SourceChange>[_serverSourceChange()]); | 55 fixes: <server.SourceChange>[serverSourceChange(4, 4)]); |
54 expect(converter.convertAnalysisErrorFixes(initial), expected); | 56 expect(converter.convertAnalysisErrorFixes(initial), expected); |
55 } | 57 } |
56 | 58 |
57 void test_convertAnalysisNavigationParams() { | 59 void test_convertAnalysisNavigationParams() { |
58 plugin.AnalysisNavigationParams initial = | 60 plugin.AnalysisNavigationParams initial = |
59 new plugin.AnalysisNavigationParams('a.dart', <plugin.NavigationRegion>[ | 61 new plugin.AnalysisNavigationParams('a.dart', <plugin.NavigationRegion>[ |
60 new plugin.NavigationRegion(1, 2, <int>[3, 4]) | 62 new plugin.NavigationRegion(1, 2, <int>[3, 4]) |
61 ], <plugin.NavigationTarget>[ | 63 ], <plugin.NavigationTarget>[ |
62 new plugin.NavigationTarget(plugin.ElementKind.FIELD, 5, 6, 7, 8, 9) | 64 new plugin.NavigationTarget(plugin.ElementKind.FIELD, 5, 6, 7, 8, 9) |
63 ], <String>[ | 65 ], <String>[ |
(...skipping 11 matching lines...) Expand all Loading... |
75 ]); | 77 ]); |
76 expect(converter.convertAnalysisNavigationParams(initial), expected); | 78 expect(converter.convertAnalysisNavigationParams(initial), expected); |
77 } | 79 } |
78 | 80 |
79 void test_convertCompletionSuggestion() { | 81 void test_convertCompletionSuggestion() { |
80 plugin.CompletionSuggestion initial = new plugin.CompletionSuggestion( | 82 plugin.CompletionSuggestion initial = new plugin.CompletionSuggestion( |
81 plugin.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false, | 83 plugin.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false, |
82 docSummary: 'b', | 84 docSummary: 'b', |
83 docComplete: 'c', | 85 docComplete: 'c', |
84 declaringType: 'd', | 86 declaringType: 'd', |
85 element: _pluginElement(4, 4), | 87 element: pluginElement(4, 4), |
86 returnType: 'i', | 88 returnType: 'i', |
87 parameterNames: <String>['j', 'k'], | 89 parameterNames: <String>['j', 'k'], |
88 parameterTypes: <String>[], | 90 parameterTypes: <String>[], |
89 requiredParameterCount: 9, | 91 requiredParameterCount: 9, |
90 hasNamedParameters: true, | 92 hasNamedParameters: true, |
91 parameterName: 'l', | 93 parameterName: 'l', |
92 parameterType: 'm', | 94 parameterType: 'm', |
93 importUri: 'n'); | 95 importUri: 'n'); |
94 server.CompletionSuggestion expected = new server.CompletionSuggestion( | 96 server.CompletionSuggestion expected = new server.CompletionSuggestion( |
95 server.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false, | 97 server.CompletionSuggestionKind.IMPORT, 1, 'a', 2, 3, true, false, |
96 docSummary: 'b', | 98 docSummary: 'b', |
97 docComplete: 'c', | 99 docComplete: 'c', |
98 declaringType: 'd', | 100 declaringType: 'd', |
99 element: _serverElement(4, 4), | 101 element: serverElement(4, 4), |
100 returnType: 'i', | 102 returnType: 'i', |
101 parameterNames: <String>['j', 'k'], | 103 parameterNames: <String>['j', 'k'], |
102 parameterTypes: <String>[], | 104 parameterTypes: <String>[], |
103 requiredParameterCount: 9, | 105 requiredParameterCount: 9, |
104 hasNamedParameters: true, | 106 hasNamedParameters: true, |
105 parameterName: 'l', | 107 parameterName: 'l', |
106 parameterType: 'm', | 108 parameterType: 'm', |
107 importUri: 'n'); | 109 importUri: 'n'); |
108 expect(converter.convertCompletionSuggestion(initial), expected); | 110 expect(converter.convertCompletionSuggestion(initial), expected); |
109 } | 111 } |
110 | 112 |
111 void test_convertEditGetRefactoringResult_inlineMethod() { | 113 void test_convertEditGetRefactoringResult_inlineMethod() { |
112 plugin.EditGetRefactoringResult initial = | 114 plugin.EditGetRefactoringResult initial = |
113 new plugin.EditGetRefactoringResult( | 115 new plugin.EditGetRefactoringResult( |
114 <plugin.RefactoringProblem>[_pluginRefactoringProblem('a', 1)], | 116 <plugin.RefactoringProblem>[pluginRefactoringProblem(0, 0)], |
115 <plugin.RefactoringProblem>[_pluginRefactoringProblem('b', 5)], | 117 <plugin.RefactoringProblem>[pluginRefactoringProblem(2, 4)], |
116 <plugin.RefactoringProblem>[_pluginRefactoringProblem('c', 9)], | 118 <plugin.RefactoringProblem>[pluginRefactoringProblem(4, 8)], |
117 feedback: | 119 feedback: |
118 new plugin.InlineMethodFeedback('a', true, className: 'b'), | 120 new plugin.InlineMethodFeedback('a', true, className: 'b'), |
119 change: _pluginSourceChange(), | 121 change: pluginSourceChange(6, 12), |
120 potentialEdits: <String>['f']); | 122 potentialEdits: <String>['f']); |
121 server.EditGetRefactoringResult expected = | 123 server.EditGetRefactoringResult expected = |
122 new server.EditGetRefactoringResult( | 124 new server.EditGetRefactoringResult( |
123 <server.RefactoringProblem>[_serverRefactoringProblem('a', 1)], | 125 <server.RefactoringProblem>[serverRefactoringProblem(0, 0)], |
124 <server.RefactoringProblem>[_serverRefactoringProblem('b', 5)], | 126 <server.RefactoringProblem>[serverRefactoringProblem(2, 4)], |
125 <server.RefactoringProblem>[_serverRefactoringProblem('c', 9)], | 127 <server.RefactoringProblem>[serverRefactoringProblem(4, 8)], |
126 feedback: | 128 feedback: |
127 new server.InlineMethodFeedback('a', true, className: 'b'), | 129 new server.InlineMethodFeedback('a', true, className: 'b'), |
128 change: _serverSourceChange(), | 130 change: serverSourceChange(6, 12), |
129 potentialEdits: <String>['f']); | 131 potentialEdits: <String>['f']); |
130 expect( | 132 expect( |
131 converter.convertEditGetRefactoringResult( | 133 converter.convertEditGetRefactoringResult( |
132 plugin.RefactoringKind.INLINE_METHOD, initial), | 134 plugin.RefactoringKind.INLINE_METHOD, initial), |
133 expected); | 135 expected); |
134 } | 136 } |
135 | 137 |
136 void test_convertEditGetRefactoringResult_moveFile() { | 138 void test_convertEditGetRefactoringResult_moveFile() { |
137 plugin.EditGetRefactoringResult initial = | 139 plugin.EditGetRefactoringResult initial = |
138 new plugin.EditGetRefactoringResult( | 140 new plugin.EditGetRefactoringResult( |
139 <plugin.RefactoringProblem>[_pluginRefactoringProblem('a', 1)], | 141 <plugin.RefactoringProblem>[pluginRefactoringProblem(0, 0)], |
140 <plugin.RefactoringProblem>[_pluginRefactoringProblem('b', 5)], | 142 <plugin.RefactoringProblem>[pluginRefactoringProblem(2, 4)], |
141 <plugin.RefactoringProblem>[_pluginRefactoringProblem('c', 9)], | 143 <plugin.RefactoringProblem>[pluginRefactoringProblem(4, 8)], |
142 feedback: new plugin.MoveFileFeedback(), | 144 feedback: new plugin.MoveFileFeedback(), |
143 change: _pluginSourceChange(), | 145 change: pluginSourceChange(6, 12), |
144 potentialEdits: <String>['f']); | 146 potentialEdits: <String>['f']); |
145 server.EditGetRefactoringResult expected = | 147 server.EditGetRefactoringResult expected = |
146 new server.EditGetRefactoringResult( | 148 new server.EditGetRefactoringResult( |
147 <server.RefactoringProblem>[_serverRefactoringProblem('a', 1)], | 149 <server.RefactoringProblem>[serverRefactoringProblem(0, 0)], |
148 <server.RefactoringProblem>[_serverRefactoringProblem('b', 5)], | 150 <server.RefactoringProblem>[serverRefactoringProblem(2, 4)], |
149 <server.RefactoringProblem>[_serverRefactoringProblem('c', 9)], | 151 <server.RefactoringProblem>[serverRefactoringProblem(4, 8)], |
150 change: _serverSourceChange(), | 152 change: serverSourceChange(6, 12), |
151 potentialEdits: <String>['f']); | 153 potentialEdits: <String>['f']); |
152 expect( | 154 expect( |
153 converter.convertEditGetRefactoringResult( | 155 converter.convertEditGetRefactoringResult( |
154 plugin.RefactoringKind.MOVE_FILE, initial), | 156 plugin.RefactoringKind.MOVE_FILE, initial), |
155 expected); | 157 expected); |
156 } | 158 } |
157 | 159 |
158 void test_convertFoldingRegion() { | 160 void test_convertFoldingRegion() { |
159 plugin.FoldingRegion initial = | 161 plugin.FoldingRegion initial = pluginFoldingRegion(1, 2); |
160 new plugin.FoldingRegion(plugin.FoldingKind.COMMENT, 1, 2); | 162 server.FoldingRegion expected = serverFoldingRegion(1, 2); |
161 server.FoldingRegion expected = | |
162 new server.FoldingRegion(server.FoldingKind.COMMENT, 1, 2); | |
163 expect(converter.convertFoldingRegion(initial), expected); | 163 expect(converter.convertFoldingRegion(initial), expected); |
164 } | 164 } |
165 | 165 |
166 void test_convertHighlightRegion() { | 166 void test_convertHighlightRegion() { |
167 plugin.HighlightRegion initial = | 167 plugin.HighlightRegion initial = pluginHighlightRegion(1, 2); |
168 new plugin.HighlightRegion(plugin.HighlightRegionType.FIELD, 1, 2); | 168 server.HighlightRegion expected = serverHighlightRegion(1, 2); |
169 server.HighlightRegion expected = | |
170 new server.HighlightRegion(server.HighlightRegionType.FIELD, 1, 2); | |
171 expect(converter.convertHighlightRegion(initial), expected); | 169 expect(converter.convertHighlightRegion(initial), expected); |
172 } | 170 } |
173 | 171 |
174 void test_convertOccurrences() { | 172 void test_convertOccurrences() { |
175 plugin.Occurrences initial = | 173 plugin.Occurrences initial = pluginOccurrences(1, 1); |
176 new plugin.Occurrences(_pluginElement(1, 1), <int>[6, 7], 8); | 174 server.Occurrences expected = serverOccurrences(1, 1); |
177 server.Occurrences expected = | |
178 new server.Occurrences(_serverElement(1, 1), <int>[6, 7], 8); | |
179 expect(converter.convertOccurrences(initial), expected); | 175 expect(converter.convertOccurrences(initial), expected); |
180 } | 176 } |
181 | 177 |
182 void test_convertOutline() { | 178 void test_convertOutline() { |
183 plugin.Outline initial = new plugin.Outline(_pluginElement(1, 1), 6, 7, | 179 plugin.Outline initial = new plugin.Outline(pluginElement(1, 1), 6, 7, |
184 children: <plugin.Outline>[ | 180 children: <plugin.Outline>[ |
185 new plugin.Outline(_pluginElement(6, 8), 14, 15) | 181 new plugin.Outline(pluginElement(6, 8), 14, 15) |
186 ]); | 182 ]); |
187 server.Outline expected = new server.Outline(_serverElement(1, 1), 6, 7, | 183 server.Outline expected = new server.Outline(serverElement(1, 1), 6, 7, |
188 children: <server.Outline>[ | 184 children: <server.Outline>[ |
189 new server.Outline(_serverElement(6, 8), 14, 15) | 185 new server.Outline(serverElement(6, 8), 14, 15) |
190 ]); | 186 ]); |
191 expect(converter.convertOutline(initial), expected); | 187 expect(converter.convertOutline(initial), expected); |
192 } | 188 } |
193 | 189 |
194 void test_convertPrioritizedSourceChange() { | 190 void test_convertPrioritizedSourceChange() { |
195 plugin.PrioritizedSourceChange initial = | 191 plugin.PrioritizedSourceChange initial = |
196 new plugin.PrioritizedSourceChange(100, _pluginSourceChange()); | 192 new plugin.PrioritizedSourceChange(100, pluginSourceChange(0, 0)); |
197 server.SourceChange expected = _serverSourceChange(); | 193 server.SourceChange expected = serverSourceChange(0, 0); |
198 expect(converter.convertPrioritizedSourceChange(initial), expected); | 194 expect(converter.convertPrioritizedSourceChange(initial), expected); |
199 } | 195 } |
200 | 196 |
201 void test_convertRefactoringFeedback_convertGetterToMethod() { | 197 void test_convertRefactoringFeedback_convertGetterToMethod() { |
202 plugin.ConvertGetterToMethodFeedback initial = | 198 plugin.ConvertGetterToMethodFeedback initial = |
203 new plugin.ConvertGetterToMethodFeedback(); | 199 new plugin.ConvertGetterToMethodFeedback(); |
204 expect( | 200 expect( |
205 converter.convertRefactoringFeedback( | 201 converter.convertRefactoringFeedback( |
206 plugin.RefactoringKind.CONVERT_GETTER_TO_METHOD, initial), | 202 plugin.RefactoringKind.CONVERT_GETTER_TO_METHOD, initial), |
207 isNull); | 203 isNull); |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 plugin.RefactoringKind.RENAME: server.RefactoringKind.RENAME, | 320 plugin.RefactoringKind.RENAME: server.RefactoringKind.RENAME, |
325 plugin.RefactoringKind.SORT_MEMBERS: server.RefactoringKind.SORT_MEMBERS, | 321 plugin.RefactoringKind.SORT_MEMBERS: server.RefactoringKind.SORT_MEMBERS, |
326 }; | 322 }; |
327 kindMap.forEach( | 323 kindMap.forEach( |
328 (plugin.RefactoringKind pluginKind, server.RefactoringKind serverKind) { | 324 (plugin.RefactoringKind pluginKind, server.RefactoringKind serverKind) { |
329 expect(converter.convertRefactoringKind(pluginKind), serverKind); | 325 expect(converter.convertRefactoringKind(pluginKind), serverKind); |
330 }); | 326 }); |
331 } | 327 } |
332 | 328 |
333 void test_convertSourceChange() { | 329 void test_convertSourceChange() { |
334 plugin.SourceChange initial = _pluginSourceChange(); | 330 plugin.SourceChange initial = pluginSourceChange(0, 0); |
335 server.SourceChange expected = _serverSourceChange(); | 331 server.SourceChange expected = serverSourceChange(0, 0); |
336 expect(converter.convertSourceChange(initial), expected); | 332 expect(converter.convertSourceChange(initial), expected); |
337 } | 333 } |
338 | |
339 String _fileName(int index) => '${strings[index]}.dart'; | |
340 | |
341 plugin.AnalysisError _pluginAnalysisError() => new plugin.AnalysisError( | |
342 plugin.AnalysisErrorSeverity.ERROR, | |
343 plugin.AnalysisErrorType.COMPILE_TIME_ERROR, | |
344 new plugin.Location('a.dart', 1, 2, 3, 4), | |
345 'm', | |
346 'c', | |
347 correction: 'n', | |
348 hasFix: true); | |
349 | |
350 /** | |
351 * On return, increment [stringIndex] by 5 and [intIndex] by 5. | |
352 */ | |
353 plugin.Element _pluginElement(int stringIndex, int intIndex) => | |
354 new plugin.Element( | |
355 plugin.ElementKind.CLASS, strings[stringIndex++], intIndex++, | |
356 location: new plugin.Location(_fileName(stringIndex++), intIndex++, | |
357 intIndex++, intIndex++, intIndex++), | |
358 parameters: strings[stringIndex++], | |
359 returnType: strings[stringIndex++], | |
360 typeParameters: strings[stringIndex++]); | |
361 | |
362 plugin.Location _pluginLocation(String baseName, int index) => | |
363 new plugin.Location( | |
364 '$baseName.dart', index, index + 1, index + 2, index + 3); | |
365 | |
366 plugin.RefactoringProblem _pluginRefactoringProblem( | |
367 String baseName, int index) => | |
368 new plugin.RefactoringProblem( | |
369 plugin.RefactoringProblemSeverity.FATAL, baseName, | |
370 location: _pluginLocation(baseName, index)); | |
371 | |
372 plugin.SourceChange _pluginSourceChange() => new plugin.SourceChange('m', | |
373 edits: <plugin.SourceFileEdit>[ | |
374 new plugin.SourceFileEdit('a.dart', 1, | |
375 edits: <plugin.SourceEdit>[new plugin.SourceEdit(2, 3, 'r')]) | |
376 ], | |
377 linkedEditGroups: <plugin.LinkedEditGroup>[ | |
378 new plugin.LinkedEditGroup( | |
379 <plugin.Position>[new plugin.Position('b.dart', 4)], | |
380 5, | |
381 <plugin.LinkedEditSuggestion>[ | |
382 new plugin.LinkedEditSuggestion( | |
383 'v', plugin.LinkedEditSuggestionKind.METHOD) | |
384 ]) | |
385 ], | |
386 selection: new plugin.Position('c.dart', 6)); | |
387 | |
388 server.AnalysisError _serverAnalysisError() { | |
389 return new server.AnalysisError( | |
390 server.AnalysisErrorSeverity.ERROR, | |
391 server.AnalysisErrorType.COMPILE_TIME_ERROR, | |
392 new server.Location('a.dart', 1, 2, 3, 4), | |
393 'm', | |
394 'c', | |
395 correction: 'n', | |
396 hasFix: true); | |
397 } | |
398 | |
399 /** | |
400 * On return, increment [stringIndex] by 5 and [intIndex] by 5. | |
401 */ | |
402 server.Element _serverElement(int stringIndex, int intIndex) => | |
403 new server.Element( | |
404 server.ElementKind.CLASS, strings[stringIndex++], intIndex++, | |
405 location: new server.Location(_fileName(stringIndex++), intIndex++, | |
406 intIndex++, intIndex++, intIndex++), | |
407 parameters: strings[stringIndex++], | |
408 returnType: strings[stringIndex++], | |
409 typeParameters: strings[stringIndex++]); | |
410 | |
411 server.Location _serverLocation(String baseName, int index) => | |
412 new server.Location( | |
413 '$baseName.dart', index, index + 1, index + 2, index + 3); | |
414 | |
415 server.RefactoringProblem _serverRefactoringProblem( | |
416 String baseName, int index) => | |
417 new server.RefactoringProblem( | |
418 server.RefactoringProblemSeverity.FATAL, baseName, | |
419 location: _serverLocation(baseName, index)); | |
420 | |
421 server.SourceChange _serverSourceChange() => new server.SourceChange('m', | |
422 edits: <server.SourceFileEdit>[ | |
423 new server.SourceFileEdit('a.dart', 1, | |
424 edits: <server.SourceEdit>[new server.SourceEdit(2, 3, 'r')]) | |
425 ], | |
426 linkedEditGroups: <server.LinkedEditGroup>[ | |
427 new server.LinkedEditGroup( | |
428 <server.Position>[new server.Position('b.dart', 4)], | |
429 5, | |
430 <server.LinkedEditSuggestion>[ | |
431 new server.LinkedEditSuggestion( | |
432 'v', server.LinkedEditSuggestionKind.METHOD) | |
433 ]) | |
434 ], | |
435 selection: new server.Position('c.dart', 6)); | |
436 } | 334 } |
OLD | NEW |