OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // Unit test of the [NativeBehavior.processSpecString] method. | 5 // Unit test of the [NativeBehavior.processSpecString] method. |
6 | 6 |
7 import 'package:expect/expect.dart'; | 7 import 'package:expect/expect.dart'; |
8 import 'package:compiler/src/native/native.dart'; | 8 import 'package:compiler/src/native/native.dart'; |
9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; | 9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; |
10 import 'package:compiler/src/diagnostics/messages.dart'; | 10 import 'package:compiler/src/diagnostics/messages.dart'; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 null, | 57 null, |
58 specString, | 58 specString, |
59 setSideEffects: (effects) { actualSideEffects = effects; }, | 59 setSideEffects: (effects) { actualSideEffects = effects; }, |
60 setThrows: (b) { actualThrows = b; }, | 60 setThrows: (b) { actualThrows = b; }, |
61 setIsAllocation: (b) { actualNew = b; }, | 61 setIsAllocation: (b) { actualNew = b; }, |
62 setUseGvn: (b) { actualGvn = b; }, | 62 setUseGvn: (b) { actualGvn = b; }, |
63 resolveType: (t) => t, | 63 resolveType: (t) => t, |
64 typesReturned: actualReturns, typesInstantiated: actualCreates, | 64 typesReturned: actualReturns, typesInstantiated: actualCreates, |
65 objectType: OBJECT, nullType: NULL); | 65 objectType: OBJECT, nullType: NULL); |
66 } catch (e) { | 66 } catch (e) { |
67 Expect.isTrue(expectError); | 67 Expect.isTrue(expectError, 'Unexpected error "$specString"'); |
68 Expect.isNotNull(listener.errorMessage, 'Error expected.'); | 68 Expect.isNotNull(listener.errorMessage, 'Error message expected.'); |
69 return; | 69 return; |
70 } | 70 } |
| 71 Expect.isFalse(expectError, 'Missing error for "$specString".'); |
71 Expect.isNull(listener.errorMessage, 'Unexpected error.'); | 72 Expect.isNull(listener.errorMessage, 'Unexpected error.'); |
72 if (returns != null) { | 73 if (returns != null) { |
73 Expect.listEquals(returns, actualReturns, 'Unexpected returns.'); | 74 Expect.listEquals(returns, actualReturns, 'Unexpected returns.'); |
74 } | 75 } |
75 if (creates != null) { | 76 if (creates != null) { |
76 Expect.listEquals(creates, actualCreates, 'Unexpected creates.'); | 77 Expect.listEquals(creates, actualCreates, 'Unexpected creates.'); |
77 } | 78 } |
78 Expect.equals(expectedSideEffects, actualSideEffects); | 79 Expect.equals(expectedSideEffects, actualSideEffects); |
79 Expect.equals(expectedThrows, actualThrows); | 80 Expect.equals(expectedThrows, actualThrows); |
80 Expect.equals(expectedNew, actualNew); | 81 Expect.equals(expectedNew, actualNew); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 test('void', returns: [], creates: []); | 211 test('void', returns: [], creates: []); |
211 test('', returns: [OBJECT, NULL], creates: []); | 212 test('', returns: [OBJECT, NULL], creates: []); |
212 test('var', returns: [OBJECT, NULL], creates: []); | 213 test('var', returns: [OBJECT, NULL], creates: []); |
213 test('A', returns: ['A'], creates: ['A']); | 214 test('A', returns: ['A'], creates: ['A']); |
214 test('A|B', returns: ['A', 'B'], creates: ['A', 'B']); | 215 test('A|B', returns: ['A', 'B'], creates: ['A', 'B']); |
215 test('A|B|C', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); | 216 test('A|B|C', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); |
216 | 217 |
217 test('returns:void;', returns: [], creates: []); | 218 test('returns:void;', returns: [], creates: []); |
218 test('returns:;', returns: [OBJECT, NULL], creates: []); | 219 test('returns:;', returns: [OBJECT, NULL], creates: []); |
219 test('returns:var;', returns: [OBJECT, NULL], creates: []); | 220 test('returns:var;', returns: [OBJECT, NULL], creates: []); |
220 test('returns:A;', returns: ['A'], creates: []); | 221 test('returns:A;', returns: ['A'], creates: ['A']); |
221 test('returns:A|B;', returns: ['A', 'B'], creates: []); | 222 test('returns:A|B;', returns: ['A', 'B'], creates: ['A', 'B']); |
222 test('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []); | 223 test('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); |
223 | 224 |
224 test('creates:void;', expectError: true); | 225 test('creates:void;', expectError: true); |
225 test('creates:;', expectError: true); | 226 test('creates:;', creates: []); |
226 test('creates:var;', expectError: true); | 227 test('creates:var;', creates: []); |
227 test('creates:A;', returns: [], creates: ['A']); | 228 test('creates:A;', returns: [], creates: ['A']); |
228 test('creates:A|B;', returns: [], creates: ['A', 'B']); | 229 test('creates:A|B;', returns: [], creates: ['A', 'B']); |
229 test('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); | 230 test('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); |
230 | 231 |
| 232 test('returns:void;creates:', returns: [], creates: []); |
| 233 test('returns:;creates:', returns: [OBJECT, NULL], creates: []); |
| 234 test('returns:var;creates:', returns: [OBJECT, NULL], creates: []); |
| 235 test('returns:A;creates:', returns: ['A'], creates: []); |
| 236 test('returns:A|B;creates:;', returns: ['A', 'B'], creates: []); |
| 237 test('returns:A|B|C;creates:;', returns: ['A', 'B', 'C'], creates: []); |
| 238 |
231 test('returns:void;creates:A;', returns: [], creates: ['A']); | 239 test('returns:void;creates:A;', returns: [], creates: ['A']); |
232 test('returns:;creates:A|B;', returns: [OBJECT, NULL], creates: ['A', 'B']); | 240 test('returns:;creates:A|B;', returns: [OBJECT, NULL], creates: ['A', 'B']); |
233 test('returns:var;creates:A|B|C;', | 241 test('returns:var;creates:A|B|C;', |
234 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); | 242 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); |
235 test('returns:A; creates:A|B|C; ', returns: ['A'], creates: ['A', 'B', 'C']); | 243 test('returns:A; creates:A|B|C; ', returns: ['A'], creates: ['A', 'B', 'C']); |
236 test(' returns:A|B; creates:A|C;', | 244 test(' returns:A|B; creates:A|C;', |
237 returns: ['A', 'B'], creates: ['A', 'C']); | 245 returns: ['A', 'B'], creates: ['A', 'C']); |
238 test(' returns:A|B|C; creates:A; ', | 246 test(' returns:A|B|C; creates:A; ', |
239 returns: ['A', 'B', 'C'], creates: ['A']); | 247 returns: ['A', 'B', 'C'], creates: ['A']); |
240 | 248 |
241 testWithSideEffects('returns:void;', returns: [], creates: []); | 249 testWithSideEffects('returns:void;', returns: [], creates: []); |
242 testWithSideEffects('returns:void;', returns: [], creates: []); | 250 testWithSideEffects('returns:void;', returns: [], creates: []); |
243 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []); | 251 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []); |
244 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []); | 252 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []); |
245 testWithSideEffects('returns:A;', returns: ['A'], creates: []); | 253 testWithSideEffects('returns:A;', returns: ['A'], creates: ['A']); |
246 testWithSideEffects('returns:A|B;', returns: ['A', 'B'], creates: []); | 254 testWithSideEffects('returns:A|B;', |
247 testWithSideEffects('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []); | 255 returns: ['A', 'B'], creates: ['A', 'B']); |
| 256 testWithSideEffects('returns:A|B|C;', |
| 257 returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); |
248 testWithSideEffects('returns: A| B |C ;', | 258 testWithSideEffects('returns: A| B |C ;', |
249 returns: ['A', 'B', 'C'], creates: []); | 259 returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); |
250 | 260 |
251 testWithSideEffects('creates:void;', expectError: true); | 261 testWithSideEffects('creates:void;', expectError: true); |
252 testWithSideEffects('creates:;', expectError: true); | 262 testWithSideEffects('creates:;', creates: []); |
253 testWithSideEffects('creates:var;', expectError: true); | 263 testWithSideEffects('creates:var;', creates: []); |
254 testWithSideEffects('creates:A;', returns: [], creates: ['A']); | 264 testWithSideEffects('creates:A;', returns: [], creates: ['A']); |
255 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']); | 265 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']); |
256 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); | 266 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); |
257 | 267 |
| 268 testWithSideEffects('returns:void;creates:;', returns: [], creates: []); |
| 269 testWithSideEffects('returns:;creates:;', |
| 270 returns: [OBJECT, NULL], creates: []); |
| 271 testWithSideEffects('returns:var;creates:;', |
| 272 returns: [OBJECT, NULL], creates: []); |
| 273 testWithSideEffects('returns:A;creates:;', returns: ['A'], creates: []); |
| 274 testWithSideEffects('returns:A|B;creates:;', |
| 275 returns: ['A', 'B'], creates: []); |
| 276 testWithSideEffects('returns:A|B|C;creates:;', |
| 277 returns: ['A', 'B', 'C'], creates: []); |
| 278 |
258 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']); | 279 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']); |
259 testWithSideEffects('returns:;creates:A|B;', | 280 testWithSideEffects('returns:;creates:A|B;', |
260 returns: [OBJECT, NULL], creates: ['A', 'B']); | 281 returns: [OBJECT, NULL], creates: ['A', 'B']); |
261 testWithSideEffects('returns:var;creates:A|B|C;', | 282 testWithSideEffects('returns:var;creates:A|B|C;', |
262 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); | 283 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); |
263 testWithSideEffects('returns:A; creates:A|B|C; ', | 284 testWithSideEffects('returns:A; creates:A|B|C; ', |
264 returns: ['A'], creates: ['A', 'B', 'C']); | 285 returns: ['A'], creates: ['A', 'B', 'C']); |
265 testWithSideEffects(' returns:A|B; creates:A|C;', | 286 testWithSideEffects(' returns:A|B; creates:A|C;', |
266 returns: ['A', 'B'], creates: ['A', 'C']); | 287 returns: ['A', 'B'], creates: ['A', 'C']); |
267 testWithSideEffects(' returns:A|B|C; creates:A; ', | 288 testWithSideEffects(' returns:A|B|C; creates:A; ', |
(...skipping 16 matching lines...) Expand all Loading... |
284 test('gvn:false', expectedGvn: false); | 305 test('gvn:false', expectedGvn: false); |
285 test('returns:A;gvn:true', returns: ['A'], expectedGvn: true); | 306 test('returns:A;gvn:true', returns: ['A'], expectedGvn: true); |
286 test(' gvn : true ; returns:A;', returns: ['A'], expectedGvn: true); | 307 test(' gvn : true ; returns:A;', returns: ['A'], expectedGvn: true); |
287 test('gvn:true;returns:A;gvn:true', expectError: true); | 308 test('gvn:true;returns:A;gvn:true', expectError: true); |
288 | 309 |
289 test('gvn: true; new: true', expectError: true); | 310 test('gvn: true; new: true', expectError: true); |
290 test('gvn: true; new: false', expectedGvn: true, expectedNew: false); | 311 test('gvn: true; new: false', expectedGvn: true, expectedNew: false); |
291 test('gvn: false; new: true', expectedGvn: false, expectedNew: true); | 312 test('gvn: false; new: true', expectedGvn: false, expectedNew: true); |
292 test('gvn: false; new: false', expectedGvn: false, expectedNew: false); | 313 test('gvn: false; new: false', expectedGvn: false, expectedNew: false); |
293 } | 314 } |
OLD | NEW |