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

Side by Side Diff: pkg/analyzer_experimental/test/generated/test_support.dart

Issue 16337007: Version 0.5.13.1 . (Closed) Base URL: http://dart.googlecode.com/svn/trunk/dart/
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer_experimental/test/generated/scanner_test.dart ('k') | tools/VERSION » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // This code was auto-generated, is not intended to be edited, and is subject to 1 // This code was auto-generated, is not intended to be edited, and is subject to
2 // significant change. Please see the README file for more information. 2 // significant change. Please see the README file for more information.
3 3
4 library engine.test_support; 4 library engine.test_support;
5 5
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'package:analyzer_experimental/src/generated/java_core.dart'; 7 import 'package:analyzer_experimental/src/generated/java_core.dart';
8 import 'package:analyzer_experimental/src/generated/java_engine.dart'; 8 import 'package:analyzer_experimental/src/generated/java_engine.dart';
9 import 'package:analyzer_experimental/src/generated/java_junit.dart'; 9 import 'package:analyzer_experimental/src/generated/java_junit.dart';
10 import 'package:analyzer_experimental/src/generated/source.dart'; 10 import 'package:analyzer_experimental/src/generated/source.dart';
11 import 'package:analyzer_experimental/src/generated/error.dart'; 11 import 'package:analyzer_experimental/src/generated/error.dart';
12 import 'package:analyzer_experimental/src/generated/scanner.dart'; 12 import 'package:analyzer_experimental/src/generated/scanner.dart';
13 import 'package:analyzer_experimental/src/generated/element.dart' show Interface Type, MethodElement, PropertyAccessorElement; 13 import 'package:analyzer_experimental/src/generated/element.dart' show Interface Type, MethodElement, PropertyAccessorElement;
14 import 'package:analyzer_experimental/src/generated/engine.dart' show AnalysisCo ntext, AnalysisContextImpl; 14 import 'package:analyzer_experimental/src/generated/engine.dart' show AnalysisCo ntext, AnalysisContextImpl, RecordingErrorListener;
15 import 'package:unittest/unittest.dart' as _ut; 15 import 'package:unittest/unittest.dart' as _ut;
16 16
17
17 /** 18 /**
18 * Instances of the class {@code GatheringErrorListener} implement an error list ener that collects 19 * Instances of the class {@code GatheringErrorListener} implement an error list ener that collects
19 * all of the errors passed to it for later examination. 20 * all of the errors passed to it for later examination.
20 */ 21 */
21 class GatheringErrorListener implements AnalysisErrorListener { 22 class GatheringErrorListener implements AnalysisErrorListener {
23
22 /** 24 /**
23 * The source being parsed. 25 * The source being parsed.
24 */ 26 */
25 String _rawSource; 27 String _rawSource;
28
26 /** 29 /**
27 * The source being parsed after inserting a marker at the beginning and end o f the range of the 30 * The source being parsed after inserting a marker at the beginning and end o f the range of the
28 * most recent error. 31 * most recent error.
29 */ 32 */
30 String _markedSource; 33 String _markedSource;
34
31 /** 35 /**
32 * A list containing the errors that were collected. 36 * A list containing the errors that were collected.
33 */ 37 */
34 List<AnalysisError> _errors = new List<AnalysisError>(); 38 List<AnalysisError> _errors = new List<AnalysisError>();
39
35 /** 40 /**
36 * A table mapping sources to the line information for the source. 41 * A table mapping sources to the line information for the source.
37 */ 42 */
38 Map<Source, LineInfo> _lineInfoMap = new Map<Source, LineInfo>(); 43 Map<Source, LineInfo> _lineInfoMap = new Map<Source, LineInfo>();
44
39 /** 45 /**
40 * An empty array of errors used when no errors are expected. 46 * An empty array of errors used when no errors are expected.
41 */ 47 */
42 static List<AnalysisError> _NO_ERRORS = new List<AnalysisError>(0); 48 static List<AnalysisError> _NO_ERRORS = new List<AnalysisError>(0);
49
43 /** 50 /**
44 * Initialize a newly created error listener to collect errors. 51 * Initialize a newly created error listener to collect errors.
45 */ 52 */
46 GatheringErrorListener() : super() { 53 GatheringErrorListener() : super() {
47 _jtd_constructor_349_impl(); 54 _jtd_constructor_357_impl();
48 } 55 }
49 _jtd_constructor_349_impl() { 56 _jtd_constructor_357_impl() {
50 } 57 }
58
51 /** 59 /**
52 * Initialize a newly created error listener to collect errors. 60 * Initialize a newly created error listener to collect errors.
53 */ 61 */
54 GatheringErrorListener.con1(String rawSource2) { 62 GatheringErrorListener.con1(String rawSource2) {
55 _jtd_constructor_350_impl(rawSource2); 63 _jtd_constructor_358_impl(rawSource2);
56 } 64 }
57 _jtd_constructor_350_impl(String rawSource2) { 65 _jtd_constructor_358_impl(String rawSource2) {
58 this._rawSource = rawSource2; 66 this._rawSource = rawSource2;
59 this._markedSource = rawSource2; 67 this._markedSource = rawSource2;
60 } 68 }
69
70 /**
71 * Add all of the errors recorded by the given listener to this listener.
72 * @param listener the listener that has recorded the errors to be added
73 */
74 void addAll(RecordingErrorListener listener) {
75 for (AnalysisError error in listener.errors) {
76 onError(error);
77 }
78 }
79
61 /** 80 /**
62 * Assert that the number of errors that have been gathered matches the number of errors that are 81 * Assert that the number of errors that have been gathered matches the number of errors that are
63 * given and that they have the expected error codes and locations. The order in which the errors 82 * given and that they have the expected error codes and locations. The order in which the errors
64 * were gathered is ignored. 83 * were gathered is ignored.
65 * @param errorCodes the errors that should have been gathered 84 * @param errorCodes the errors that should have been gathered
66 * @throws AssertionFailedError if a different number of errors have been gath ered than were 85 * @throws AssertionFailedError if a different number of errors have been gath ered than were
67 * expected or if they do not have the same codes and locations 86 * expected or if they do not have the same codes and locations
68 */ 87 */
69 void assertErrors(List<AnalysisError> expectedErrors) { 88 void assertErrors(List<AnalysisError> expectedErrors) {
70 if (_errors.length != expectedErrors.length) { 89 if (_errors.length != expectedErrors.length) {
71 fail(expectedErrors); 90 fail(expectedErrors);
72 } 91 }
73 List<AnalysisError> remainingErrors = new List<AnalysisError>(); 92 List<AnalysisError> remainingErrors = new List<AnalysisError>();
74 for (AnalysisError error in expectedErrors) { 93 for (AnalysisError error in expectedErrors) {
75 remainingErrors.add(error); 94 remainingErrors.add(error);
76 } 95 }
77 for (AnalysisError error in _errors) { 96 for (AnalysisError error in _errors) {
78 if (!foundAndRemoved(remainingErrors, error)) { 97 if (!foundAndRemoved(remainingErrors, error)) {
79 fail(expectedErrors); 98 fail(expectedErrors);
80 } 99 }
81 } 100 }
82 } 101 }
102
83 /** 103 /**
84 * Assert that the number of errors that have been gathered matches the number of errors that are 104 * Assert that the number of errors that have been gathered matches the number of errors that are
85 * given and that they have the expected error codes. The order in which the e rrors were gathered 105 * given and that they have the expected error codes. The order in which the e rrors were gathered
86 * is ignored. 106 * is ignored.
87 * @param expectedErrorCodes the error codes of the errors that should have be en gathered 107 * @param expectedErrorCodes the error codes of the errors that should have be en gathered
88 * @throws AssertionFailedError if a different number of errors have been gath ered than were 108 * @throws AssertionFailedError if a different number of errors have been gath ered than were
89 * expected 109 * expected
90 */ 110 */
91 void assertErrors2(List<ErrorCode> expectedErrorCodes) { 111 void assertErrors2(List<ErrorCode> expectedErrorCodes) {
92 JavaStringBuilder builder = new JavaStringBuilder(); 112 JavaStringBuilder builder = new JavaStringBuilder();
113 for (ErrorCode errorCode in expectedErrorCodes) {
114 JUnitTestCase.assertFalseMsg("Empty error code message", errorCode.message .isEmpty);
115 }
93 Map<ErrorCode, int> expectedCounts = new Map<ErrorCode, int>(); 116 Map<ErrorCode, int> expectedCounts = new Map<ErrorCode, int>();
94 for (ErrorCode code in expectedErrorCodes) { 117 for (ErrorCode code in expectedErrorCodes) {
95 int count = expectedCounts[code]; 118 int count = expectedCounts[code];
96 if (count == null) { 119 if (count == null) {
97 count = 1; 120 count = 1;
98 } else { 121 } else {
99 count = count + 1; 122 count = count + 1;
100 } 123 }
101 expectedCounts[code] = count; 124 expectedCounts[code] = count;
102 } 125 }
(...skipping 18 matching lines...) Expand all
121 actualCount = list.length; 144 actualCount = list.length;
122 } 145 }
123 if (actualCount != expectedCount) { 146 if (actualCount != expectedCount) {
124 if (builder.length == 0) { 147 if (builder.length == 0) {
125 builder.append("Expected "); 148 builder.append("Expected ");
126 } else { 149 } else {
127 builder.append("; "); 150 builder.append("; ");
128 } 151 }
129 builder.append(expectedCount); 152 builder.append(expectedCount);
130 builder.append(" errors of type "); 153 builder.append(" errors of type ");
131 builder.append(code); 154 builder.append("${code.runtimeType.toString()}.${code}");
132 builder.append(", found "); 155 builder.append(", found ");
133 builder.append(actualCount); 156 builder.append(actualCount);
134 } 157 }
135 } 158 }
136 for (MapEntry<ErrorCode, List<AnalysisError>> entry in getMapEntrySet(errors ByCode)) { 159 for (MapEntry<ErrorCode, List<AnalysisError>> entry in getMapEntrySet(errors ByCode)) {
137 ErrorCode code = entry.getKey(); 160 ErrorCode code = entry.getKey();
138 List<AnalysisError> actualErrors = entry.getValue(); 161 List<AnalysisError> actualErrors = entry.getValue();
139 int actualCount = actualErrors.length; 162 int actualCount = actualErrors.length;
140 if (builder.length == 0) { 163 if (builder.length == 0) {
141 builder.append("Expected "); 164 builder.append("Expected ");
142 } else { 165 } else {
143 builder.append("; "); 166 builder.append("; ");
144 } 167 }
145 builder.append("0 errors of type "); 168 builder.append("0 errors of type ");
146 builder.append(code); 169 builder.append("${code.runtimeType.toString()}.${code}");
147 builder.append(", found "); 170 builder.append(", found ");
148 builder.append(actualCount); 171 builder.append(actualCount);
149 builder.append(" ("); 172 builder.append(" (");
150 for (int i = 0; i < actualErrors.length; i++) { 173 for (int i = 0; i < actualErrors.length; i++) {
151 AnalysisError error = actualErrors[i]; 174 AnalysisError error = actualErrors[i];
152 if (i > 0) { 175 if (i > 0) {
153 builder.append(", "); 176 builder.append(", ");
154 } 177 }
155 builder.append(error.offset); 178 builder.append(error.offset);
156 } 179 }
157 builder.append(")"); 180 builder.append(")");
158 } 181 }
159 if (builder.length > 0) { 182 if (builder.length > 0) {
160 JUnitTestCase.fail(builder.toString()); 183 JUnitTestCase.fail(builder.toString());
161 } 184 }
162 } 185 }
186
163 /** 187 /**
164 * Assert that the number of errors that have been gathered matches the number of severities that 188 * Assert that the number of errors that have been gathered matches the number of severities that
165 * are given and that there are the same number of errors and warnings as spec ified by the 189 * are given and that there are the same number of errors and warnings as spec ified by the
166 * argument. The order in which the errors were gathered is ignored. 190 * argument. The order in which the errors were gathered is ignored.
167 * @param expectedSeverities the severities of the errors that should have bee n gathered 191 * @param expectedSeverities the severities of the errors that should have bee n gathered
168 * @throws AssertionFailedError if a different number of errors have been gath ered than were 192 * @throws AssertionFailedError if a different number of errors have been gath ered than were
169 * expected 193 * expected
170 */ 194 */
171 void assertErrors3(List<ErrorSeverity> expectedSeverities) { 195 void assertErrors3(List<ErrorSeverity> expectedSeverities) {
172 int expectedErrorCount = 0; 196 int expectedErrorCount = 0;
(...skipping 11 matching lines...) Expand all
184 if (identical(error.errorCode.errorSeverity, ErrorSeverity.ERROR)) { 208 if (identical(error.errorCode.errorSeverity, ErrorSeverity.ERROR)) {
185 actualErrorCount++; 209 actualErrorCount++;
186 } else { 210 } else {
187 actualWarningCount++; 211 actualWarningCount++;
188 } 212 }
189 } 213 }
190 if (expectedErrorCount != actualErrorCount || expectedWarningCount != actual WarningCount) { 214 if (expectedErrorCount != actualErrorCount || expectedWarningCount != actual WarningCount) {
191 JUnitTestCase.fail("Expected ${expectedErrorCount} errors and ${expectedWa rningCount} warnings, found ${actualErrorCount} errors and ${actualWarningCount} warnings"); 215 JUnitTestCase.fail("Expected ${expectedErrorCount} errors and ${expectedWa rningCount} warnings, found ${actualErrorCount} errors and ${actualWarningCount} warnings");
192 } 216 }
193 } 217 }
218
194 /** 219 /**
195 * Assert that no errors have been gathered. 220 * Assert that no errors have been gathered.
196 * @throws AssertionFailedError if any errors have been gathered 221 * @throws AssertionFailedError if any errors have been gathered
197 */ 222 */
198 void assertNoErrors() { 223 void assertNoErrors() {
199 assertErrors(_NO_ERRORS); 224 assertErrors(_NO_ERRORS);
200 } 225 }
226
201 /** 227 /**
202 * Return the errors that were collected. 228 * Return the errors that were collected.
203 * @return the errors that were collected 229 * @return the errors that were collected
204 */ 230 */
205 List<AnalysisError> get errors => _errors; 231 List<AnalysisError> get errors => _errors;
232
206 /** 233 /**
207 * Return the line information associated with the given source, or {@code nul l} if no line 234 * Return the line information associated with the given source, or {@code nul l} if no line
208 * information has been associated with the source. 235 * information has been associated with the source.
209 * @param source the source with which the line information is associated 236 * @param source the source with which the line information is associated
210 * @return the line information associated with the source 237 * @return the line information associated with the source
211 */ 238 */
212 LineInfo getLineInfo(Source source) => _lineInfoMap[source]; 239 LineInfo getLineInfo(Source source) => _lineInfoMap[source];
240
213 /** 241 /**
214 * Return {@code true} if an error with the given error code has been gathered . 242 * Return {@code true} if an error with the given error code has been gathered .
215 * @param errorCode the error code being searched for 243 * @param errorCode the error code being searched for
216 * @return {@code true} if an error with the given error code has been gathere d 244 * @return {@code true} if an error with the given error code has been gathere d
217 */ 245 */
218 bool hasError(ErrorCode errorCode2) { 246 bool hasError(ErrorCode errorCode2) {
219 for (AnalysisError error in _errors) { 247 for (AnalysisError error in _errors) {
220 if (identical(error.errorCode, errorCode2)) { 248 if (identical(error.errorCode, errorCode2)) {
221 return true; 249 return true;
222 } 250 }
223 } 251 }
224 return false; 252 return false;
225 } 253 }
254
226 /** 255 /**
227 * Return {@code true} if at least one error has been gathered. 256 * Return {@code true} if at least one error has been gathered.
228 * @return {@code true} if at least one error has been gathered 257 * @return {@code true} if at least one error has been gathered
229 */ 258 */
230 bool hasErrors() => _errors.length > 0; 259 bool hasErrors() => _errors.length > 0;
231 void onError(AnalysisError error) { 260 void onError(AnalysisError error) {
232 if (_rawSource != null) { 261 if (_rawSource != null) {
233 int left = error.offset; 262 int left = error.offset;
234 int right = left + error.length - 1; 263 int right = left + error.length - 1;
235 _markedSource = "${_rawSource.substring(0, left)}^${_rawSource.substring(l eft, right)}^${_rawSource.substring(right)}"; 264 _markedSource = "${_rawSource.substring(0, left)}^${_rawSource.substring(l eft, right)}^${_rawSource.substring(right)}";
236 } 265 }
237 _errors.add(error); 266 _errors.add(error);
238 } 267 }
268
239 /** 269 /**
240 * Set the line information associated with the given source to the given info rmation. 270 * Set the line information associated with the given source to the given info rmation.
241 * @param source the source with which the line information is associated 271 * @param source the source with which the line information is associated
242 * @param lineStarts the line start information to be associated with the sour ce 272 * @param lineStarts the line start information to be associated with the sour ce
243 */ 273 */
244 void setLineInfo(Source source, List<int> lineStarts) { 274 void setLineInfo(Source source, List<int> lineStarts) {
245 _lineInfoMap[source] = new LineInfo(lineStarts); 275 _lineInfoMap[source] = new LineInfo(lineStarts);
246 } 276 }
277
247 /** 278 /**
248 * Set the line information associated with the given source to the given info rmation. 279 * Set the line information associated with the given source to the given info rmation.
249 * @param source the source with which the line information is associated 280 * @param source the source with which the line information is associated
250 * @param lineInfo the line information to be associated with the source 281 * @param lineInfo the line information to be associated with the source
251 */ 282 */
252 void setLineInfo2(Source source, LineInfo lineInfo) { 283 void setLineInfo2(Source source, LineInfo lineInfo) {
253 _lineInfoMap[source] = lineInfo; 284 _lineInfoMap[source] = lineInfo;
254 } 285 }
286
255 /** 287 /**
256 * Return {@code true} if the two errors are equivalent. 288 * Return {@code true} if the two errors are equivalent.
257 * @param firstError the first error being compared 289 * @param firstError the first error being compared
258 * @param secondError the second error being compared 290 * @param secondError the second error being compared
259 * @return {@code true} if the two errors are equivalent 291 * @return {@code true} if the two errors are equivalent
260 */ 292 */
261 bool equals3(AnalysisError firstError, AnalysisError secondError) => identical (firstError.errorCode, secondError.errorCode) && firstError.offset == secondErro r.offset && firstError.length == secondError.length && equals4(firstError.source , secondError.source); 293 bool equals3(AnalysisError firstError, AnalysisError secondError) => identical (firstError.errorCode, secondError.errorCode) && firstError.offset == secondErro r.offset && firstError.length == secondError.length && equals4(firstError.source , secondError.source);
294
262 /** 295 /**
263 * Return {@code true} if the two sources are equivalent. 296 * Return {@code true} if the two sources are equivalent.
264 * @param firstSource the first source being compared 297 * @param firstSource the first source being compared
265 * @param secondSource the second source being compared 298 * @param secondSource the second source being compared
266 * @return {@code true} if the two sources are equivalent 299 * @return {@code true} if the two sources are equivalent
267 */ 300 */
268 bool equals4(Source firstSource, Source secondSource) { 301 bool equals4(Source firstSource, Source secondSource) {
269 if (firstSource == null) { 302 if (firstSource == null) {
270 return secondSource == null; 303 return secondSource == null;
271 } else if (secondSource == null) { 304 } else if (secondSource == null) {
272 return false; 305 return false;
273 } 306 }
274 return firstSource == secondSource; 307 return firstSource == secondSource;
275 } 308 }
309
276 /** 310 /**
277 * Assert that the number of errors that have been gathered matches the number of errors that are 311 * Assert that the number of errors that have been gathered matches the number of errors that are
278 * given and that they have the expected error codes. The order in which the e rrors were gathered 312 * given and that they have the expected error codes. The order in which the e rrors were gathered
279 * is ignored. 313 * is ignored.
280 * @param errorCodes the errors that should have been gathered 314 * @param errorCodes the errors that should have been gathered
281 * @throws AssertionFailedError with 315 * @throws AssertionFailedError with
282 */ 316 */
283 void fail(List<AnalysisError> expectedErrors) { 317 void fail(List<AnalysisError> expectedErrors) {
284 PrintStringWriter writer = new PrintStringWriter(); 318 PrintStringWriter writer = new PrintStringWriter();
285 writer.print("Expected "); 319 writer.print("Expected ");
(...skipping 22 matching lines...) Expand all
308 if (lineInfo == null) { 342 if (lineInfo == null) {
309 int offset3 = error.offset; 343 int offset3 = error.offset;
310 writer.printf(" %s %s (%d..%d): %s", [source3 == null ? "" : source3.sh ortName, error.errorCode, offset3, offset3 + error.length, error.message]); 344 writer.printf(" %s %s (%d..%d): %s", [source3 == null ? "" : source3.sh ortName, error.errorCode, offset3, offset3 + error.length, error.message]);
311 } else { 345 } else {
312 LineInfo_Location location = lineInfo.getLocation(error.offset); 346 LineInfo_Location location = lineInfo.getLocation(error.offset);
313 writer.printf(" %s %s (%d, %d/%d): %s", [source3 == null ? "" : source3 .shortName, error.errorCode, location.lineNumber, location.columnNumber, error.l ength, error.message]); 347 writer.printf(" %s %s (%d, %d/%d): %s", [source3 == null ? "" : source3 .shortName, error.errorCode, location.lineNumber, location.columnNumber, error.l ength, error.message]);
314 } 348 }
315 } 349 }
316 JUnitTestCase.fail(writer.toString()); 350 JUnitTestCase.fail(writer.toString());
317 } 351 }
352
318 /** 353 /**
319 * Search through the given list of errors for an error that is equal to the t arget error. If one 354 * Search through the given list of errors for an error that is equal to the t arget error. If one
320 * is found, remove it from the list and return {@code true}, otherwise return {@code false}without modifying the list. 355 * is found, remove it from the list and return {@code true}, otherwise return {@code false}without modifying the list.
321 * @param errors the errors through which we are searching 356 * @param errors the errors through which we are searching
322 * @param targetError the error being searched for 357 * @param targetError the error being searched for
323 * @return {@code true} if the error is found and removed from the list 358 * @return {@code true} if the error is found and removed from the list
324 */ 359 */
325 bool foundAndRemoved(List<AnalysisError> errors, AnalysisError targetError) { 360 bool foundAndRemoved(List<AnalysisError> errors, AnalysisError targetError) {
326 for (AnalysisError error in errors) { 361 for (AnalysisError error in errors) {
327 if (equals3(error, targetError)) { 362 if (equals3(error, targetError)) {
328 errors.remove(error); 363 errors.remove(error);
329 return true; 364 return true;
330 } 365 }
331 } 366 }
332 return true; 367 return true;
333 } 368 }
334 } 369 }
370
335 /** 371 /**
336 * The class {@code EngineTestCase} defines utility methods for making assertion s. 372 * The class {@code EngineTestCase} defines utility methods for making assertion s.
337 */ 373 */
338 class EngineTestCase extends JUnitTestCase { 374 class EngineTestCase extends JUnitTestCase {
339 static int _PRINT_RANGE = 6; 375 static int _PRINT_RANGE = 6;
376
340 /** 377 /**
341 * Assert that the tokens in the actual stream of tokens have the same types a nd lexemes as the 378 * Assert that the tokens in the actual stream of tokens have the same types a nd lexemes as the
342 * tokens in the expected stream of tokens. Note that this does not assert any thing about the 379 * tokens in the expected stream of tokens. Note that this does not assert any thing about the
343 * offsets of the tokens (although the lengths will be equal). 380 * offsets of the tokens (although the lengths will be equal).
344 * @param expectedStream the head of the stream of tokens that were expected 381 * @param expectedStream the head of the stream of tokens that were expected
345 * @param actualStream the head of the stream of tokens that were actually fou nd 382 * @param actualStream the head of the stream of tokens that were actually fou nd
346 * @throws AssertionFailedError if the two streams of tokens are not the same 383 * @throws AssertionFailedError if the two streams of tokens are not the same
347 */ 384 */
348 static void assertAllMatch(Token expectedStream, Token actualStream) { 385 static void assertAllMatch(Token expectedStream, Token actualStream) {
349 Token left = expectedStream; 386 Token left = expectedStream;
350 Token right = actualStream; 387 Token right = actualStream;
351 while (left.type != TokenType.EOF && right.type != TokenType.EOF) { 388 while (left.type != TokenType.EOF && right.type != TokenType.EOF) {
352 assertMatches(left, right); 389 assertMatches(left, right);
353 left = left.next; 390 left = left.next;
354 right = right.next; 391 right = right.next;
355 } 392 }
356 } 393 }
394
357 /** 395 /**
358 * Assert that the array of actual values contain exactly the same values as t hose in the array of 396 * Assert that the array of actual values contain exactly the same values as t hose in the array of
359 * expected value, with the exception that the order of the elements is not re quired to be the 397 * expected value, with the exception that the order of the elements is not re quired to be the
360 * same. 398 * same.
361 * @param expectedValues the values that are expected to be found 399 * @param expectedValues the values that are expected to be found
362 * @param actualValues the actual values that are being compared against the e xpected values 400 * @param actualValues the actual values that are being compared against the e xpected values
363 */ 401 */
364 static void assertEqualsIgnoreOrder(List<Object> expectedValues, List<Object> actualValues) { 402 static void assertEqualsIgnoreOrder(List<Object> expectedValues, List<Object> actualValues) {
365 JUnitTestCase.assertNotNull(actualValues); 403 JUnitTestCase.assertNotNull(actualValues);
366 int expectedLength = expectedValues.length; 404 int expectedLength = expectedValues.length;
367 JUnitTestCase.assertEquals(expectedLength, actualValues.length); 405 JUnitTestCase.assertEquals(expectedLength, actualValues.length);
368 List<bool> found = new List<bool>.filled(expectedLength, false); 406 List<bool> found = new List<bool>.filled(expectedLength, false);
369 for (int i = 0; i < expectedLength; i++) { 407 for (int i = 0; i < expectedLength; i++) {
370 found[i] = false; 408 found[i] = false;
371 } 409 }
372 for (Object actualValue in actualValues) { 410 for (Object actualValue in actualValues) {
373 bool wasExpected = false; 411 bool wasExpected = false;
374 for (int i = 0; i < expectedLength; i++) { 412 for (int i = 0; i < expectedLength; i++) {
375 if (!found[i] && expectedValues[i] == actualValue) { 413 if (!found[i] && expectedValues[i] == actualValue) {
376 found[i] = true; 414 found[i] = true;
377 wasExpected = true; 415 wasExpected = true;
378 break; 416 break;
379 } 417 }
380 } 418 }
381 if (!wasExpected) { 419 if (!wasExpected) {
382 JUnitTestCase.fail("The actual value ${actualValue} was not expected"); 420 JUnitTestCase.fail("The actual value ${actualValue} was not expected");
383 } 421 }
384 } 422 }
385 } 423 }
424
386 /** 425 /**
387 * Assert that a given String is equal to an expected value. 426 * Assert that a given String is equal to an expected value.
388 * @param expected the expected String value 427 * @param expected the expected String value
389 * @param actual the actual String value 428 * @param actual the actual String value
390 */ 429 */
391 static void assertEqualString(String expected, String actual) { 430 static void assertEqualString(String expected, String actual) {
392 if (actual == null || expected == null) { 431 if (actual == null || expected == null) {
393 if (identical(actual, expected)) { 432 if (identical(actual, expected)) {
394 return; 433 return;
395 } 434 }
396 if (actual == null) { 435 if (actual == null) {
397 JUnitTestCase.assertTrueMsg("Content not as expected: is 'null' expected : ${expected}", false); 436 JUnitTestCase.assertTrueMsg("Content not as expected: is 'null' expected : ${expected}", false);
398 } else { 437 } else {
399 JUnitTestCase.assertTrueMsg("Content not as expected: expected 'null' is : ${actual}", false); 438 JUnitTestCase.assertTrueMsg("Content not as expected: expected 'null' is : ${actual}", false);
400 } 439 }
401 } 440 }
402 int diffPos = getDiffPos(expected, actual); 441 int diffPos = getDiffPos(expected, actual);
403 if (diffPos != -1) { 442 if (diffPos != -1) {
404 int diffAhead = Math.max(0, diffPos - _PRINT_RANGE); 443 int diffAhead = Math.max(0, diffPos - _PRINT_RANGE);
405 int diffAfter = Math.min(actual.length, diffPos + _PRINT_RANGE); 444 int diffAfter = Math.min(actual.length, diffPos + _PRINT_RANGE);
406 String diffStr = "${actual.substring(diffAhead, diffPos)}^${actual.substri ng(diffPos, diffAfter)}"; 445 String diffStr = "${actual.substring(diffAhead, diffPos)}^${actual.substri ng(diffPos, diffAfter)}";
407 String message = "Content not as expected: is\n${actual}\nDiffers at pos $ {diffPos}: ${diffStr}\nexpected:\n${expected}"; 446 String message = "Content not as expected: is\n${actual}\nDiffers at pos $ {diffPos}: ${diffStr}\nexpected:\n${expected}";
408 JUnitTestCase.assertEqualsMsg(message, expected, actual); 447 JUnitTestCase.assertEqualsMsg(message, expected, actual);
409 } 448 }
410 } 449 }
450
411 /** 451 /**
412 * Assert that the given list is non-{@code null} and has exactly expected ele ments. 452 * Assert that the given list is non-{@code null} and has exactly expected ele ments.
413 * @param list the list being tested 453 * @param list the list being tested
414 * @param expectedElements the expected elements 454 * @param expectedElements the expected elements
415 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected elements 455 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected elements
416 */ 456 */
417 static void assertExactElements(List<Object> list, List<Object> expectedElemen ts) { 457 static void assertExactElements(List<Object> list, List<Object> expectedElemen ts) {
418 int expectedSize = expectedElements.length; 458 int expectedSize = expectedElements.length;
419 if (list == null) { 459 if (list == null) {
420 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null"); 460 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
421 } 461 }
422 if (list.length != expectedSize) { 462 if (list.length != expectedSize) {
423 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${lis t.length} elements"); 463 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${lis t.length} elements");
424 } 464 }
425 for (int i = 0; i < expectedElements.length; i++) { 465 for (int i = 0; i < expectedElements.length; i++) {
426 Object element = list[i]; 466 Object element = list[i];
427 Object expectedElement = expectedElements[i]; 467 Object expectedElement = expectedElements[i];
428 if (!element == expectedElement) { 468 if (!element == expectedElement) {
429 JUnitTestCase.fail("Expected ${expectedElement} at [${i}]; found ${eleme nt}"); 469 JUnitTestCase.fail("Expected ${expectedElement} at [${i}]; found ${eleme nt}");
430 } 470 }
431 } 471 }
432 } 472 }
473
433 /** 474 /**
434 * Assert that the given array is non-{@code null} and has exactly expected el ements. 475 * Assert that the given array is non-{@code null} and has exactly expected el ements.
435 * @param array the array being tested 476 * @param array the array being tested
436 * @param expectedElements the expected elements 477 * @param expectedElements the expected elements
437 * @throws AssertionFailedError if the array is {@code null} or does not have the expected 478 * @throws AssertionFailedError if the array is {@code null} or does not have the expected
438 * elements 479 * elements
439 */ 480 */
440 static void assertExactElements2(List<Object> array, List<Object> expectedElem ents) { 481 static void assertExactElements2(List<Object> array, List<Object> expectedElem ents) {
441 int expectedSize = expectedElements.length; 482 int expectedSize = expectedElements.length;
442 if (array == null) { 483 if (array == null) {
443 JUnitTestCase.fail("Expected array of size ${expectedSize}; found null"); 484 JUnitTestCase.fail("Expected array of size ${expectedSize}; found null");
444 } 485 }
445 if (array.length != expectedSize) { 486 if (array.length != expectedSize) {
446 JUnitTestCase.fail("Expected array of size ${expectedSize}; contained ${ar ray.length} elements"); 487 JUnitTestCase.fail("Expected array of size ${expectedSize}; contained ${ar ray.length} elements");
447 } 488 }
448 for (int i = 0; i < expectedElements.length; i++) { 489 for (int i = 0; i < expectedElements.length; i++) {
449 Object element = array[0]; 490 Object element = array[i];
450 Object expectedElement = expectedElements[i]; 491 Object expectedElement = expectedElements[i];
451 if (!element == expectedElement) { 492 if (!element == expectedElement) {
452 JUnitTestCase.fail("Expected ${expectedElement} at [${i}]; found ${eleme nt}"); 493 JUnitTestCase.fail("Expected ${expectedElement} at [${i}]; found ${eleme nt}");
453 } 494 }
454 } 495 }
455 } 496 }
497
456 /** 498 /**
457 * Assert that the given list is non-{@code null} and has exactly expected ele ments. 499 * Assert that the given list is non-{@code null} and has exactly expected ele ments.
458 * @param set the list being tested 500 * @param set the list being tested
459 * @param expectedElements the expected elements 501 * @param expectedElements the expected elements
460 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected elements 502 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected elements
461 */ 503 */
462 static void assertExactElements3(Set<Object> set, List<Object> expectedElement s) { 504 static void assertExactElements3(Set<Object> set, List<Object> expectedElement s) {
463 int expectedSize = expectedElements.length; 505 int expectedSize = expectedElements.length;
464 if (set == null) { 506 if (set == null) {
465 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null"); 507 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
466 } 508 }
467 if (set.length != expectedSize) { 509 if (set.length != expectedSize) {
468 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${set .length} elements"); 510 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${set .length} elements");
469 } 511 }
470 for (int i = 0; i < expectedElements.length; i++) { 512 for (int i = 0; i < expectedElements.length; i++) {
471 Object expectedElement = expectedElements[i]; 513 Object expectedElement = expectedElements[i];
472 if (!set.contains(expectedElement)) { 514 if (!set.contains(expectedElement)) {
473 JUnitTestCase.fail("Expected ${expectedElement} in set${set}"); 515 JUnitTestCase.fail("Expected ${expectedElement} in set${set}");
474 } 516 }
475 } 517 }
476 } 518 }
519
477 /** 520 /**
478 * Assert that the given object is an instance of the expected class. 521 * Assert that the given object is an instance of the expected class.
479 * @param expectedClass the class that the object is expected to be an instanc e of 522 * @param expectedClass the class that the object is expected to be an instanc e of
480 * @param object the object being tested 523 * @param object the object being tested
481 * @return the object that was being tested 524 * @return the object that was being tested
482 * @throws Exception if the object is not an instance of the expected class 525 * @throws Exception if the object is not an instance of the expected class
483 */ 526 */
484 static Object assertInstanceOf(Type expectedClass, Object object) { 527 static Object assertInstanceOf(Type expectedClass, Object object) {
485 if (!isInstanceOf(object, expectedClass)) { 528 if (!isInstanceOf(object, expectedClass)) {
486 JUnitTestCase.fail("Expected instance of ${expectedClass.toString()}, foun d ${(object == null ? "null" : object.runtimeType.toString())}"); 529 JUnitTestCase.fail("Expected instance of ${expectedClass.toString()}, foun d ${(object == null ? "null" : object.runtimeType.toString())}");
487 } 530 }
488 return object as Object; 531 return object as Object;
489 } 532 }
533
490 /** 534 /**
491 * Assert that the given array is non-{@code null} and has the expected number of elements. 535 * Assert that the given array is non-{@code null} and has the expected number of elements.
492 * @param expectedLength the expected number of elements 536 * @param expectedLength the expected number of elements
493 * @param array the array being tested 537 * @param array the array being tested
494 * @throws AssertionFailedError if the array is {@code null} or does not have the expected number 538 * @throws AssertionFailedError if the array is {@code null} or does not have the expected number
495 * of elements 539 * of elements
496 */ 540 */
497 static void assertLength(int expectedLength, List<Object> array) { 541 static void assertLength(int expectedLength, List<Object> array) {
498 if (array == null) { 542 if (array == null) {
499 JUnitTestCase.fail("Expected array of length ${expectedLength}; found null "); 543 JUnitTestCase.fail("Expected array of length ${expectedLength}; found null ");
500 } else if (array.length != expectedLength) { 544 } else if (array.length != expectedLength) {
501 JUnitTestCase.fail("Expected array of length ${expectedLength}; contained ${array.length} elements"); 545 JUnitTestCase.fail("Expected array of length ${expectedLength}; contained ${array.length} elements");
502 } 546 }
503 } 547 }
548
504 /** 549 /**
505 * Assert that the actual token has the same type and lexeme as the expected t oken. Note that this 550 * Assert that the actual token has the same type and lexeme as the expected t oken. Note that this
506 * does not assert anything about the offsets of the tokens (although the leng ths will be equal). 551 * does not assert anything about the offsets of the tokens (although the leng ths will be equal).
507 * @param expectedToken the token that was expected 552 * @param expectedToken the token that was expected
508 * @param actualToken the token that was found 553 * @param actualToken the token that was found
509 * @throws AssertionFailedError if the two tokens are not the same 554 * @throws AssertionFailedError if the two tokens are not the same
510 */ 555 */
511 static void assertMatches(Token expectedToken, Token actualToken) { 556 static void assertMatches(Token expectedToken, Token actualToken) {
512 JUnitTestCase.assertEquals(expectedToken.type, actualToken.type); 557 JUnitTestCase.assertEquals(expectedToken.type, actualToken.type);
513 if (expectedToken is KeywordToken) { 558 if (expectedToken is KeywordToken) {
514 assertInstanceOf(KeywordToken, actualToken); 559 assertInstanceOf(KeywordToken, actualToken);
515 JUnitTestCase.assertEquals(((expectedToken as KeywordToken)).keyword, ((ac tualToken as KeywordToken)).keyword); 560 JUnitTestCase.assertEquals(((expectedToken as KeywordToken)).keyword, ((ac tualToken as KeywordToken)).keyword);
516 } else if (expectedToken is StringToken) { 561 } else if (expectedToken is StringToken) {
517 assertInstanceOf(StringToken, actualToken); 562 assertInstanceOf(StringToken, actualToken);
518 JUnitTestCase.assertEquals(((expectedToken as StringToken)).lexeme, ((actu alToken as StringToken)).lexeme); 563 JUnitTestCase.assertEquals(((expectedToken as StringToken)).lexeme, ((actu alToken as StringToken)).lexeme);
519 } 564 }
520 } 565 }
566
521 /** 567 /**
522 * Assert that the given list is non-{@code null} and has the expected number of elements. 568 * Assert that the given list is non-{@code null} and has the expected number of elements.
523 * @param expectedSize the expected number of elements 569 * @param expectedSize the expected number of elements
524 * @param list the list being tested 570 * @param list the list being tested
525 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected number 571 * @throws AssertionFailedError if the list is {@code null} or does not have t he expected number
526 * of elements 572 * of elements
527 */ 573 */
528 static void assertSize(int expectedSize, List<Object> list) { 574 static void assertSize(int expectedSize, List<Object> list) {
529 if (list == null) { 575 if (list == null) {
530 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null"); 576 JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
531 } else if (list.length != expectedSize) { 577 } else if (list.length != expectedSize) {
532 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${lis t.length} elements"); 578 JUnitTestCase.fail("Expected list of size ${expectedSize}; contained ${lis t.length} elements");
533 } 579 }
534 } 580 }
581
535 /** 582 /**
536 * Assert that the given map is non-{@code null} and has the expected number o f elements. 583 * Assert that the given map is non-{@code null} and has the expected number o f elements.
537 * @param expectedSize the expected number of elements 584 * @param expectedSize the expected number of elements
538 * @param map the map being tested 585 * @param map the map being tested
539 * @throws AssertionFailedError if the map is {@code null} or does not have th e expected number of 586 * @throws AssertionFailedError if the map is {@code null} or does not have th e expected number of
540 * elements 587 * elements
541 */ 588 */
542 static void assertSize2(int expectedSize, Map<Object, Object> map) { 589 static void assertSize2(int expectedSize, Map<Object, Object> map) {
543 if (map == null) { 590 if (map == null) {
544 JUnitTestCase.fail("Expected map of size ${expectedSize}; found null"); 591 JUnitTestCase.fail("Expected map of size ${expectedSize}; found null");
545 } else if (map.length != expectedSize) { 592 } else if (map.length != expectedSize) {
546 JUnitTestCase.fail("Expected map of size ${expectedSize}; contained ${map. length} elements"); 593 JUnitTestCase.fail("Expected map of size ${expectedSize}; contained ${map. length} elements");
547 } 594 }
548 } 595 }
596
549 /** 597 /**
550 * Assert that the given set is non-{@code null} and has the expected number o f elements. 598 * Assert that the given set is non-{@code null} and has the expected number o f elements.
551 * @param expectedSize the expected number of elements 599 * @param expectedSize the expected number of elements
552 * @param set the set being tested 600 * @param set the set being tested
553 * @throws AssertionFailedError if the set is {@code null} or does not have th e expected number of 601 * @throws AssertionFailedError if the set is {@code null} or does not have th e expected number of
554 * elements 602 * elements
555 */ 603 */
556 static void assertSize3(int expectedSize, Set<Object> set) { 604 static void assertSize3(int expectedSize, Set<Object> set) {
557 if (set == null) { 605 if (set == null) {
558 JUnitTestCase.fail("Expected set of size ${expectedSize}; found null"); 606 JUnitTestCase.fail("Expected set of size ${expectedSize}; found null");
559 } else if (set.length != expectedSize) { 607 } else if (set.length != expectedSize) {
560 JUnitTestCase.fail("Expected set of size ${expectedSize}; contained ${set. length} elements"); 608 JUnitTestCase.fail("Expected set of size ${expectedSize}; contained ${set. length} elements");
561 } 609 }
562 } 610 }
611
563 /** 612 /**
564 * Convert the given array of lines into a single source string. 613 * Convert the given array of lines into a single source string.
565 * @param lines the lines to be merged into a single source string 614 * @param lines the lines to be merged into a single source string
566 * @return the source string composed of the given lines 615 * @return the source string composed of the given lines
567 */ 616 */
568 static String createSource(List<String> lines) { 617 static String createSource(List<String> lines) {
569 PrintStringWriter writer = new PrintStringWriter(); 618 PrintStringWriter writer = new PrintStringWriter();
570 for (String line in lines) { 619 for (String line in lines) {
571 writer.println(line); 620 writer.println(line);
572 } 621 }
573 return writer.toString(); 622 return writer.toString();
574 } 623 }
624
575 /** 625 /**
576 * Calculate the offset where the given strings differ. 626 * Calculate the offset where the given strings differ.
577 * @param str1 the first String to compare 627 * @param str1 the first String to compare
578 * @param str2 the second String to compare 628 * @param str2 the second String to compare
579 * @return the offset at which the strings differ (or <code>-1</code> if they do not) 629 * @return the offset at which the strings differ (or <code>-1</code> if they do not)
580 */ 630 */
581 static int getDiffPos(String str1, String str2) { 631 static int getDiffPos(String str1, String str2) {
582 int len1 = Math.min(str1.length, str2.length); 632 int len1 = Math.min(str1.length, str2.length);
583 int diffPos = -1; 633 int diffPos = -1;
584 for (int i = 0; i < len1; i++) { 634 for (int i = 0; i < len1; i++) {
585 if (str1.codeUnitAt(i) != str2.codeUnitAt(i)) { 635 if (str1.codeUnitAt(i) != str2.codeUnitAt(i)) {
586 diffPos = i; 636 diffPos = i;
587 break; 637 break;
588 } 638 }
589 } 639 }
590 if (diffPos == -1 && str1.length != str2.length) { 640 if (diffPos == -1 && str1.length != str2.length) {
591 diffPos = len1; 641 diffPos = len1;
592 } 642 }
593 return diffPos; 643 return diffPos;
594 } 644 }
595 AnalysisContextImpl createAnalysisContext() { 645 AnalysisContextImpl createAnalysisContext() {
596 AnalysisContextImpl context = new AnalysisContextImpl(); 646 AnalysisContextImpl context = new AnalysisContextImpl();
597 context.sourceFactory = new SourceFactory.con2([]); 647 context.sourceFactory = new SourceFactory.con2([]);
598 return context; 648 return context;
599 } 649 }
650
600 /** 651 /**
601 * Return the getter in the given type with the given name. Inherited getters are ignored. 652 * Return the getter in the given type with the given name. Inherited getters are ignored.
602 * @param type the type in which the getter is declared 653 * @param type the type in which the getter is declared
603 * @param getterName the name of the getter to be returned 654 * @param getterName the name of the getter to be returned
604 * @return the property accessor element representing the getter with the give n name 655 * @return the property accessor element representing the getter with the give n name
605 */ 656 */
606 PropertyAccessorElement getGetter(InterfaceType type, String getterName) { 657 PropertyAccessorElement getGetter(InterfaceType type, String getterName) {
607 for (PropertyAccessorElement accessor in type.element.accessors) { 658 for (PropertyAccessorElement accessor in type.element.accessors) {
608 if (accessor.isGetter() && accessor.name == getterName) { 659 if (accessor.isGetter() && accessor.name == getterName) {
609 return accessor; 660 return accessor;
610 } 661 }
611 } 662 }
612 JUnitTestCase.fail("Could not find getter named ${getterName} in ${type.name }"); 663 JUnitTestCase.fail("Could not find getter named ${getterName} in ${type.disp layName}");
613 return null; 664 return null;
614 } 665 }
666
615 /** 667 /**
616 * Return the method in the given type with the given name. Inherited methods are ignored. 668 * Return the method in the given type with the given name. Inherited methods are ignored.
617 * @param type the type in which the method is declared 669 * @param type the type in which the method is declared
618 * @param methodName the name of the method to be returned 670 * @param methodName the name of the method to be returned
619 * @return the method element representing the method with the given name 671 * @return the method element representing the method with the given name
620 */ 672 */
621 MethodElement getMethod(InterfaceType type, String methodName) { 673 MethodElement getMethod(InterfaceType type, String methodName) {
622 for (MethodElement method in type.element.methods) { 674 for (MethodElement method in type.element.methods) {
623 if (method.name == methodName) { 675 if (method.name == methodName) {
624 return method; 676 return method;
625 } 677 }
626 } 678 }
627 JUnitTestCase.fail("Could not find method named ${methodName} in ${type.name }"); 679 JUnitTestCase.fail("Could not find method named ${methodName} in ${type.disp layName}");
628 return null; 680 return null;
629 } 681 }
630 static dartSuite() { 682 static dartSuite() {
631 _ut.group('EngineTestCase', () { 683 _ut.group('EngineTestCase', () {
632 }); 684 });
633 } 685 }
634 } 686 }
635 main() { 687 main() {
636 } 688 }
637 689
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 return trampoline(target, arguments[0], arguments[1]); 745 return trampoline(target, arguments[0], arguments[1]);
694 case 3: 746 case 3:
695 return trampoline(target, arguments[0], arguments[1], arguments[2]); 747 return trampoline(target, arguments[0], arguments[1], arguments[2]);
696 case 4: 748 case 4:
697 return trampoline(target, arguments[0], arguments[1], arguments[2], argu ments[3]); 749 return trampoline(target, arguments[0], arguments[1], arguments[2], argu ments[3]);
698 default: 750 default:
699 throw new IllegalArgumentException("Not implemented for > 4 arguments"); 751 throw new IllegalArgumentException("Not implemented for > 4 arguments");
700 } 752 }
701 } 753 }
702 } 754 }
OLDNEW
« no previous file with comments | « pkg/analyzer_experimental/test/generated/scanner_test.dart ('k') | tools/VERSION » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698