OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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/src/provisional/completion/dart/completion_dart.
dart'; | 5 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; |
6 import 'package:analysis_server/src/services/completion/dart/library_member_cont
ributor.dart'; | 6 import 'package:analysis_server/src/services/completion/dart/library_member_cont
ributor.dart'; |
7 import 'package:test/test.dart'; | 7 import 'package:test/test.dart'; |
8 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 8 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
9 | 9 |
10 import 'completion_contributor_util.dart'; | 10 import 'completion_contributor_util.dart'; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 81 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
82 addTestSource('import "dart:async" deferred as bar; foo() {bar.^}'); | 82 addTestSource('import "dart:async" deferred as bar; foo() {bar.^}'); |
83 await computeSuggestions(); | 83 await computeSuggestions(); |
84 assertSuggestClass('Future'); | 84 assertSuggestClass('Future'); |
85 assertSuggestFunction('loadLibrary', 'Future<dynamic>'); | 85 assertSuggestFunction('loadLibrary', 'Future<dynamic>'); |
86 } | 86 } |
87 | 87 |
88 test_libraryPrefix_deferred_inPart() async { | 88 test_libraryPrefix_deferred_inPart() async { |
89 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 89 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
90 var libFile = '${testFile.substring(0, testFile.length - 5)}A.dart'; | 90 var libFile = '${testFile.substring(0, testFile.length - 5)}A.dart'; |
91 addSource( | 91 addSource(libFile, ''' |
92 libFile, | |
93 ''' | |
94 library testA; | 92 library testA; |
95 import "dart:async" deferred as bar; | 93 import "dart:async" deferred as bar; |
96 part "$testFile";'''); | 94 part "$testFile";'''); |
97 addTestSource('part of testA; foo() {bar.^}'); | 95 addTestSource('part of testA; foo() {bar.^}'); |
98 // Assume that libraries containing has been computed for part files | 96 // Assume that libraries containing has been computed for part files |
99 await computeLibrariesContaining(); | 97 await computeLibrariesContaining(); |
100 await computeSuggestions(); | 98 await computeSuggestions(); |
101 assertSuggestClass('Future'); | 99 assertSuggestClass('Future'); |
102 assertSuggestFunction('loadLibrary', 'Future<dynamic>'); | 100 assertSuggestFunction('loadLibrary', 'Future<dynamic>'); |
103 assertNotSuggested('foo'); | 101 assertNotSuggested('foo'); |
104 } | 102 } |
105 | 103 |
106 test_libraryPrefix_with_exports() async { | 104 test_libraryPrefix_with_exports() async { |
107 addSource('/libA.dart', 'library libA; class A { }'); | 105 addSource('/libA.dart', 'library libA; class A { }'); |
108 addSource( | 106 addSource('/libB.dart', ''' |
109 '/libB.dart', | |
110 ''' | |
111 library libB; | 107 library libB; |
112 export "/libA.dart"; | 108 export "/libA.dart"; |
113 class B { } | 109 class B { } |
114 @deprecated class B1 { }'''); | 110 @deprecated class B1 { }'''); |
115 addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }'); | 111 addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }'); |
116 await computeSuggestions(); | 112 await computeSuggestions(); |
117 assertSuggestClass('B'); | 113 assertSuggestClass('B'); |
118 assertSuggestClass('B1', relevance: DART_RELEVANCE_LOW, isDeprecated: true); | 114 assertSuggestClass('B1', relevance: DART_RELEVANCE_LOW, isDeprecated: true); |
119 assertSuggestClass('A'); | 115 assertSuggestClass('A'); |
120 assertNotSuggested('C'); | 116 assertNotSuggested('C'); |
121 } | 117 } |
122 | 118 |
123 test_PrefixedIdentifier_library() async { | 119 test_PrefixedIdentifier_library() async { |
124 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 120 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
125 addSource( | 121 addSource('/testB.dart', ''' |
126 '/testB.dart', | |
127 ''' | |
128 lib B; | 122 lib B; |
129 var T1; | 123 var T1; |
130 class X { } | 124 class X { } |
131 class Y { }'''); | 125 class Y { }'''); |
132 addTestSource(''' | 126 addTestSource(''' |
133 import "/testB.dart" as b; | 127 import "/testB.dart" as b; |
134 var T2; | 128 var T2; |
135 class A { } | 129 class A { } |
136 main() {b.^}'''); | 130 main() {b.^}'''); |
137 await computeSuggestions(); | 131 await computeSuggestions(); |
138 expect(replacementOffset, completionOffset); | 132 expect(replacementOffset, completionOffset); |
139 expect(replacementLength, 0); | 133 expect(replacementLength, 0); |
140 assertSuggestClass('X'); | 134 assertSuggestClass('X'); |
141 assertSuggestClass('Y'); | 135 assertSuggestClass('Y'); |
142 assertSuggestTopLevelVar('T1', null); | 136 assertSuggestTopLevelVar('T1', null); |
143 assertNotSuggested('T2'); | 137 assertNotSuggested('T2'); |
144 assertNotSuggested('Object'); | 138 assertNotSuggested('Object'); |
145 assertNotSuggested('b'); | 139 assertNotSuggested('b'); |
146 assertNotSuggested('A'); | 140 assertNotSuggested('A'); |
147 assertNotSuggested('=='); | 141 assertNotSuggested('=='); |
148 } | 142 } |
149 | 143 |
150 test_PrefixedIdentifier_library_inPart() async { | 144 test_PrefixedIdentifier_library_inPart() async { |
151 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 145 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
152 var libFile = '${testFile.substring(0, testFile.length - 5)}A.dart'; | 146 var libFile = '${testFile.substring(0, testFile.length - 5)}A.dart'; |
153 addSource( | 147 addSource('/testB.dart', ''' |
154 '/testB.dart', | |
155 ''' | |
156 lib B; | 148 lib B; |
157 var T1; | 149 var T1; |
158 class X { } | 150 class X { } |
159 class Y { }'''); | 151 class Y { }'''); |
160 addSource( | 152 addSource(libFile, ''' |
161 libFile, | |
162 ''' | |
163 library testA; | 153 library testA; |
164 import "/testB.dart" as b; | 154 import "/testB.dart" as b; |
165 part "$testFile"; | 155 part "$testFile"; |
166 var T2; | 156 var T2; |
167 class A { }'''); | 157 class A { }'''); |
168 addTestSource(''' | 158 addTestSource(''' |
169 part of testA; | 159 part of testA; |
170 main() {b.^}'''); | 160 main() {b.^}'''); |
171 // Assume that libraries containing has been computed for part files | 161 // Assume that libraries containing has been computed for part files |
172 await computeLibrariesContaining(); | 162 await computeLibrariesContaining(); |
173 await computeSuggestions(); | 163 await computeSuggestions(); |
174 expect(replacementOffset, completionOffset); | 164 expect(replacementOffset, completionOffset); |
175 expect(replacementLength, 0); | 165 expect(replacementLength, 0); |
176 assertSuggestClass('X'); | 166 assertSuggestClass('X'); |
177 assertSuggestClass('Y'); | 167 assertSuggestClass('Y'); |
178 assertSuggestTopLevelVar('T1', null); | 168 assertSuggestTopLevelVar('T1', null); |
179 assertNotSuggested('T2'); | 169 assertNotSuggested('T2'); |
180 assertNotSuggested('Object'); | 170 assertNotSuggested('Object'); |
181 assertNotSuggested('b'); | 171 assertNotSuggested('b'); |
182 assertNotSuggested('A'); | 172 assertNotSuggested('A'); |
183 assertNotSuggested('=='); | 173 assertNotSuggested('=='); |
184 } | 174 } |
185 | 175 |
186 test_PrefixedIdentifier_library_typesOnly() async { | 176 test_PrefixedIdentifier_library_typesOnly() async { |
187 // SimpleIdentifier PrefixedIdentifier TypeName | 177 // SimpleIdentifier PrefixedIdentifier TypeName |
188 addSource( | 178 addSource('/testB.dart', ''' |
189 '/testB.dart', | |
190 ''' | |
191 lib B; | 179 lib B; |
192 var T1; | 180 var T1; |
193 class X { } | 181 class X { } |
194 class Y { }'''); | 182 class Y { }'''); |
195 addTestSource(''' | 183 addTestSource(''' |
196 import "/testB.dart" as b; | 184 import "/testB.dart" as b; |
197 var T2; | 185 var T2; |
198 class A { } | 186 class A { } |
199 foo(b.^ f) {}'''); | 187 foo(b.^ f) {}'''); |
200 await computeSuggestions(); | 188 await computeSuggestions(); |
201 expect(replacementOffset, completionOffset); | 189 expect(replacementOffset, completionOffset); |
202 expect(replacementLength, 0); | 190 expect(replacementLength, 0); |
203 assertSuggestClass('X'); | 191 assertSuggestClass('X'); |
204 assertSuggestClass('Y'); | 192 assertSuggestClass('Y'); |
205 assertNotSuggested('T1'); | 193 assertNotSuggested('T1'); |
206 assertNotSuggested('T2'); | 194 assertNotSuggested('T2'); |
207 assertNotSuggested('Object'); | 195 assertNotSuggested('Object'); |
208 assertNotSuggested('b'); | 196 assertNotSuggested('b'); |
209 assertNotSuggested('A'); | 197 assertNotSuggested('A'); |
210 assertNotSuggested('=='); | 198 assertNotSuggested('=='); |
211 } | 199 } |
212 | 200 |
213 test_PrefixedIdentifier_library_typesOnly2() async { | 201 test_PrefixedIdentifier_library_typesOnly2() async { |
214 // SimpleIdentifier PrefixedIdentifier TypeName | 202 // SimpleIdentifier PrefixedIdentifier TypeName |
215 addSource( | 203 addSource('/testB.dart', ''' |
216 '/testB.dart', | |
217 ''' | |
218 lib B; | 204 lib B; |
219 var T1; | 205 var T1; |
220 class X { } | 206 class X { } |
221 class Y { }'''); | 207 class Y { }'''); |
222 addTestSource(''' | 208 addTestSource(''' |
223 import "/testB.dart" as b; | 209 import "/testB.dart" as b; |
224 var T2; | 210 var T2; |
225 class A { } | 211 class A { } |
226 foo(b.^) {}'''); | 212 foo(b.^) {}'''); |
227 await computeSuggestions(); | 213 await computeSuggestions(); |
228 expect(replacementOffset, completionOffset); | 214 expect(replacementOffset, completionOffset); |
229 expect(replacementLength, 0); | 215 expect(replacementLength, 0); |
230 assertSuggestClass('X'); | 216 assertSuggestClass('X'); |
231 assertSuggestClass('Y'); | 217 assertSuggestClass('Y'); |
232 assertNotSuggested('T1'); | 218 assertNotSuggested('T1'); |
233 assertNotSuggested('T2'); | 219 assertNotSuggested('T2'); |
234 assertNotSuggested('Object'); | 220 assertNotSuggested('Object'); |
235 assertNotSuggested('b'); | 221 assertNotSuggested('b'); |
236 assertNotSuggested('A'); | 222 assertNotSuggested('A'); |
237 assertNotSuggested('=='); | 223 assertNotSuggested('=='); |
238 } | 224 } |
239 | 225 |
240 test_PrefixedIdentifier_parameter() async { | 226 test_PrefixedIdentifier_parameter() async { |
241 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 227 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
242 addSource( | 228 addSource('/testB.dart', ''' |
243 '/testB.dart', | |
244 ''' | |
245 lib B; | 229 lib B; |
246 class _W {M y; var _z;} | 230 class _W {M y; var _z;} |
247 class X extends _W {} | 231 class X extends _W {} |
248 class M{}'''); | 232 class M{}'''); |
249 addTestSource(''' | 233 addTestSource(''' |
250 import "/testB.dart"; | 234 import "/testB.dart"; |
251 foo(X x) {x.^}'''); | 235 foo(X x) {x.^}'''); |
252 await computeSuggestions(); | 236 await computeSuggestions(); |
253 assertNoSuggestions(); | 237 assertNoSuggestions(); |
254 } | 238 } |
255 | 239 |
256 test_PrefixedIdentifier_prefix() async { | 240 test_PrefixedIdentifier_prefix() async { |
257 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 241 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
258 addSource( | 242 addSource('/testA.dart', ''' |
259 '/testA.dart', | |
260 ''' | |
261 class A {static int bar = 10;} | 243 class A {static int bar = 10;} |
262 _B() {}'''); | 244 _B() {}'''); |
263 addTestSource(''' | 245 addTestSource(''' |
264 import "/testA.dart"; | 246 import "/testA.dart"; |
265 class X {foo(){A^.bar}}'''); | 247 class X {foo(){A^.bar}}'''); |
266 await computeSuggestions(); | 248 await computeSuggestions(); |
267 assertNoSuggestions(); | 249 assertNoSuggestions(); |
268 } | 250 } |
269 } | 251 } |
OLD | NEW |