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

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

Issue 1478513002: Use async/await in all analysis domain tests. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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
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.notification.occurrences; 5 library test.analysis.notification.occurrences;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
11 import 'package:test_reflective_loader/test_reflective_loader.dart'; 11 import 'package:test_reflective_loader/test_reflective_loader.dart';
12 import 'package:unittest/unittest.dart'; 12 import 'package:unittest/unittest.dart';
13 13
14 import '../analysis_abstract.dart'; 14 import '../analysis_abstract.dart';
15 import '../utils.dart'; 15 import '../utils.dart';
16 16
17 main() { 17 main() {
18 initializeTestEnvironment(); 18 initializeTestEnvironment();
19 defineReflectiveTests(AnalysisNotificationOccurrencesTest); 19 defineReflectiveTests(AnalysisNotificationOccurrencesTest);
20 } 20 }
21 21
22 @reflectiveTest 22 @reflectiveTest
23 class AnalysisNotificationOccurrencesTest extends AbstractAnalysisTest { 23 class AnalysisNotificationOccurrencesTest extends AbstractAnalysisTest {
24 List<Occurrences> occurrencesList; 24 List<Occurrences> occurrencesList;
25 Occurrences testOccurences; 25 Occurrences testOccurrences;
26 26
27 /** 27 /**
28 * Asserts that there is an offset of [search] in [testOccurences]. 28 * Asserts that there is an offset of [search] in [testOccurrences].
29 */ 29 */
30 void assertHasOffset(String search) { 30 void assertHasOffset(String search) {
31 int offset = findOffset(search); 31 int offset = findOffset(search);
32 expect(testOccurences.offsets, contains(offset)); 32 expect(testOccurrences.offsets, contains(offset));
33 } 33 }
34 34
35 /** 35 /**
36 * Validates that there is a region at the offset of [search] in [testFile]. 36 * Validates that there is a region at the offset of [search] in [testFile].
37 * If [length] is not specified explicitly, then length of an identifier 37 * If [length] is not specified explicitly, then length of an identifier
38 * from [search] is used. 38 * from [search] is used.
39 */ 39 */
40 void assertHasRegion(String search, [int length = -1]) { 40 void assertHasRegion(String search, [int length = -1]) {
41 int offset = findOffset(search); 41 int offset = findOffset(search);
42 if (length == -1) { 42 if (length == -1) {
43 length = findIdentifierLength(search); 43 length = findIdentifierLength(search);
44 } 44 }
45 findRegion(offset, length, true); 45 findRegion(offset, length, true);
46 } 46 }
47 47
48 /** 48 /**
49 * Finds an [Occurrences] with the given [offset] and [length]. 49 * Finds an [Occurrences] with the given [offset] and [length].
50 * 50 *
51 * If [exists] is `true`, then fails if such [Occurrences] does not exist. 51 * If [exists] is `true`, then fails if such [Occurrences] does not exist.
52 * Otherwise remembers this it into [testOccurences]. 52 * Otherwise remembers this it into [testOccurrences].
53 * 53 *
54 * If [exists] is `false`, then fails if such [Occurrences] exists. 54 * If [exists] is `false`, then fails if such [Occurrences] exists.
55 */ 55 */
56 void findRegion(int offset, int length, [bool exists]) { 56 void findRegion(int offset, int length, [bool exists]) {
57 for (Occurrences occurrences in occurrencesList) { 57 for (Occurrences occurrences in occurrencesList) {
58 if (occurrences.length != length) { 58 if (occurrences.length != length) {
59 continue; 59 continue;
60 } 60 }
61 for (int occurrenceOffset in occurrences.offsets) { 61 for (int occurrenceOffset in occurrences.offsets) {
62 if (occurrenceOffset == offset) { 62 if (occurrenceOffset == offset) {
63 if (exists == false) { 63 if (exists == false) {
64 fail('Not expected to find (offset=$offset; length=$length) in\n' 64 fail('Not expected to find (offset=$offset; length=$length) in\n'
65 '${occurrencesList.join('\n')}'); 65 '${occurrencesList.join('\n')}');
66 } 66 }
67 testOccurences = occurrences; 67 testOccurrences = occurrences;
68 return; 68 return;
69 } 69 }
70 } 70 }
71 } 71 }
72 if (exists == true) { 72 if (exists == true) {
73 fail('Expected to find (offset=$offset; length=$length) in\n' 73 fail('Expected to find (offset=$offset; length=$length) in\n'
74 '${occurrencesList.join('\n')}'); 74 '${occurrencesList.join('\n')}');
75 } 75 }
76 } 76 }
77 77
(...skipping 10 matching lines...) Expand all
88 } 88 }
89 } 89 }
90 } 90 }
91 91
92 @override 92 @override
93 void setUp() { 93 void setUp() {
94 super.setUp(); 94 super.setUp();
95 createProject(); 95 createProject();
96 } 96 }
97 97
98 test_afterAnalysis() { 98 test_afterAnalysis() async {
99 addTestFile(''' 99 addTestFile('''
100 main() { 100 main() {
101 var vvv = 42; 101 var vvv = 42;
102 print(vvv); 102 print(vvv);
103 } 103 }
104 '''); 104 ''');
105 return waitForTasksFinished().then((_) { 105 await waitForTasksFinished();
106 return prepareOccurrences().then((_) { 106 await prepareOccurrences();
107 assertHasRegion('vvv ='); 107 assertHasRegion('vvv =');
108 expect(testOccurences.element.kind, ElementKind.LOCAL_VARIABLE); 108 expect(testOccurrences.element.kind, ElementKind.LOCAL_VARIABLE);
109 expect(testOccurences.element.name, 'vvv'); 109 expect(testOccurrences.element.name, 'vvv');
110 assertHasOffset('vvv = 42'); 110 assertHasOffset('vvv = 42');
111 assertHasOffset('vvv);'); 111 assertHasOffset('vvv);');
112 });
113 });
114 } 112 }
115 113
116 test_field() { 114 test_field() async {
117 addTestFile(''' 115 addTestFile('''
118 class A { 116 class A {
119 int fff; 117 int fff;
120 A(this.fff); // constructor 118 A(this.fff); // constructor
121 main() { 119 main() {
122 fff = 42; 120 fff = 42;
123 print(fff); // print 121 print(fff); // print
124 } 122 }
125 } 123 }
126 '''); 124 ''');
127 return prepareOccurrences().then((_) { 125 await prepareOccurrences();
128 assertHasRegion('fff;'); 126 assertHasRegion('fff;');
129 expect(testOccurences.element.kind, ElementKind.FIELD); 127 expect(testOccurrences.element.kind, ElementKind.FIELD);
130 assertHasOffset('fff); // constructor'); 128 assertHasOffset('fff); // constructor');
131 assertHasOffset('fff = 42;'); 129 assertHasOffset('fff = 42;');
132 assertHasOffset('fff); // print'); 130 assertHasOffset('fff); // print');
133 });
134 } 131 }
135 132
136 test_field_unresolved() { 133 test_field_unresolved() async {
137 addTestFile(''' 134 addTestFile('''
138 class A { 135 class A {
139 A(this.noSuchField); 136 A(this.noSuchField);
140 } 137 }
141 '''); 138 ''');
142 // no checks for occurrences, just ensure that there is no NPE 139 // no checks for occurrences, just ensure that there is no NPE
143 return prepareOccurrences(); 140 await prepareOccurrences();
144 } 141 }
145 142
146 test_localVariable() { 143 test_localVariable() async {
147 addTestFile(''' 144 addTestFile('''
148 main() { 145 main() {
149 var vvv = 42; 146 var vvv = 42;
150 vvv += 5; 147 vvv += 5;
151 print(vvv); 148 print(vvv);
152 } 149 }
153 '''); 150 ''');
154 return prepareOccurrences().then((_) { 151 await prepareOccurrences();
155 assertHasRegion('vvv ='); 152 assertHasRegion('vvv =');
156 expect(testOccurences.element.kind, ElementKind.LOCAL_VARIABLE); 153 expect(testOccurrences.element.kind, ElementKind.LOCAL_VARIABLE);
157 expect(testOccurences.element.name, 'vvv'); 154 expect(testOccurrences.element.name, 'vvv');
158 assertHasOffset('vvv = 42'); 155 assertHasOffset('vvv = 42');
159 assertHasOffset('vvv += 5'); 156 assertHasOffset('vvv += 5');
160 assertHasOffset('vvv);'); 157 assertHasOffset('vvv);');
161 });
162 } 158 }
163 159
164 test_memberField() { 160 test_memberField() async {
165 addTestFile(''' 161 addTestFile('''
166 class A<T> { 162 class A<T> {
167 T fff; 163 T fff;
168 } 164 }
169 main() { 165 main() {
170 var a = new A<int>(); 166 var a = new A<int>();
171 var b = new A<String>(); 167 var b = new A<String>();
172 a.fff = 1; 168 a.fff = 1;
173 b.fff = 2; 169 b.fff = 2;
174 } 170 }
175 '''); 171 ''');
176 return prepareOccurrences().then((_) { 172 await prepareOccurrences();
177 assertHasRegion('fff;'); 173 assertHasRegion('fff;');
178 expect(testOccurences.element.kind, ElementKind.FIELD); 174 expect(testOccurrences.element.kind, ElementKind.FIELD);
179 assertHasOffset('fff = 1;'); 175 assertHasOffset('fff = 1;');
180 assertHasOffset('fff = 2;'); 176 assertHasOffset('fff = 2;');
181 });
182 } 177 }
183 178
184 test_memberMethod() { 179 test_memberMethod() async {
185 addTestFile(''' 180 addTestFile('''
186 class A<T> { 181 class A<T> {
187 T mmm() {} 182 T mmm() {}
188 } 183 }
189 main() { 184 main() {
190 var a = new A<int>(); 185 var a = new A<int>();
191 var b = new A<String>(); 186 var b = new A<String>();
192 a.mmm(); // a 187 a.mmm(); // a
193 b.mmm(); // b 188 b.mmm(); // b
194 } 189 }
195 '''); 190 ''');
196 return prepareOccurrences().then((_) { 191 await prepareOccurrences();
197 assertHasRegion('mmm() {}'); 192 assertHasRegion('mmm() {}');
198 expect(testOccurences.element.kind, ElementKind.METHOD); 193 expect(testOccurrences.element.kind, ElementKind.METHOD);
199 assertHasOffset('mmm(); // a'); 194 assertHasOffset('mmm(); // a');
200 assertHasOffset('mmm(); // b'); 195 assertHasOffset('mmm(); // b');
201 });
202 } 196 }
203 197
204 test_topLevelVariable() { 198 test_topLevelVariable() async {
205 addTestFile(''' 199 addTestFile('''
206 var VVV = 1; 200 var VVV = 1;
207 main() { 201 main() {
208 VVV = 2; 202 VVV = 2;
209 print(VVV); 203 print(VVV);
210 } 204 }
211 '''); 205 ''');
212 return prepareOccurrences().then((_) { 206 await prepareOccurrences();
213 assertHasRegion('VVV = 1;'); 207 assertHasRegion('VVV = 1;');
214 expect(testOccurences.element.kind, ElementKind.TOP_LEVEL_VARIABLE); 208 expect(testOccurrences.element.kind, ElementKind.TOP_LEVEL_VARIABLE);
215 assertHasOffset('VVV = 2;'); 209 assertHasOffset('VVV = 2;');
216 assertHasOffset('VVV);'); 210 assertHasOffset('VVV);');
217 });
218 } 211 }
219 212
220 test_type_class() { 213 test_type_class() async {
221 addTestFile(''' 214 addTestFile('''
222 main() { 215 main() {
223 int a = 1; 216 int a = 1;
224 int b = 2; 217 int b = 2;
225 int c = 3; 218 int c = 3;
226 } 219 }
227 int VVV = 4; 220 int VVV = 4;
228 '''); 221 ''');
229 return prepareOccurrences().then((_) { 222 await prepareOccurrences();
230 assertHasRegion('int a'); 223 assertHasRegion('int a');
231 expect(testOccurences.element.kind, ElementKind.CLASS); 224 expect(testOccurrences.element.kind, ElementKind.CLASS);
232 expect(testOccurences.element.name, 'int'); 225 expect(testOccurrences.element.name, 'int');
233 assertHasOffset('int a'); 226 assertHasOffset('int a');
234 assertHasOffset('int b'); 227 assertHasOffset('int b');
235 assertHasOffset('int c'); 228 assertHasOffset('int c');
236 assertHasOffset('int VVV'); 229 assertHasOffset('int VVV');
237 });
238 } 230 }
239 231
240 test_type_dynamic() { 232 test_type_dynamic() async {
241 addTestFile(''' 233 addTestFile('''
242 main() { 234 main() {
243 dynamic a = 1; 235 dynamic a = 1;
244 dynamic b = 2; 236 dynamic b = 2;
245 } 237 }
246 dynamic V = 3; 238 dynamic V = 3;
247 '''); 239 ''');
248 return prepareOccurrences().then((_) { 240 await prepareOccurrences();
249 int offset = findOffset('dynamic a'); 241 int offset = findOffset('dynamic a');
250 findRegion(offset, 'dynamic'.length, false); 242 findRegion(offset, 'dynamic'.length, false);
251 });
252 } 243 }
253 244
254 test_type_void() { 245 test_type_void() async {
255 addTestFile(''' 246 addTestFile('''
256 void main() { 247 void main() {
257 } 248 }
258 '''); 249 ''');
259 return prepareOccurrences().then((_) { 250 await prepareOccurrences();
260 int offset = findOffset('void main()'); 251 int offset = findOffset('void main()');
261 findRegion(offset, 'void'.length, false); 252 findRegion(offset, 'void'.length, false);
262 });
263 } 253 }
264 } 254 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698