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

Side by Side Diff: tests/compiler/dart2js/js_spec_string_test.dart

Issue 1034263002: Parse more properties of native code fragments. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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
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 // 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/dart2jslib.dart' 9 import 'package:compiler/src/dart2jslib.dart'
10 show DiagnosticListener; 10 show DiagnosticListener;
(...skipping 10 matching lines...) Expand all
21 throw "error"; 21 throw "error";
22 } 22 }
23 23
24 noSuchMethod(_) => null; 24 noSuchMethod(_) => null;
25 } 25 }
26 26
27 void test(String specString, 27 void test(String specString,
28 {List returns, 28 {List returns,
29 List creates, 29 List creates,
30 SideEffects expectedSideEffects, 30 SideEffects expectedSideEffects,
31 NativeThrowBehavior expectedThrows,
32 bool expectedNew,
33 bool expectedGvn,
31 bool expectError: false}) { 34 bool expectError: false}) {
32 List actualReturns = []; 35 List actualReturns = [];
33 List actualCreates = []; 36 List actualCreates = [];
34 SideEffects actualSideEffects; 37 SideEffects actualSideEffects;
38 NativeThrowBehavior actualThrows;
39 bool actualNew;
40 bool actualGvn;
35 Listener listener = new Listener(); 41 Listener listener = new Listener();
36 try { 42 try {
37 NativeBehavior.processSpecString( 43 NativeBehavior.processSpecString(
38 listener, 44 listener,
39 null, 45 null,
40 specString, 46 specString,
41 setSideEffects: (effects) { actualSideEffects = effects; }, 47 setSideEffects: (effects) { actualSideEffects = effects; },
48 setThrows: (b) { actualThrows = b; },
49 setIsAllocation: (b) { actualNew = b; },
50 setUseGvn: (b) { actualGvn = b; },
42 resolveType: (t) => t, 51 resolveType: (t) => t,
43 typesReturned: actualReturns, typesInstantiated: actualCreates, 52 typesReturned: actualReturns, typesInstantiated: actualCreates,
44 objectType: OBJECT, nullType: NULL); 53 objectType: OBJECT, nullType: NULL);
45 } catch (e) { 54 } catch (e) {
46 Expect.isTrue(expectError); 55 Expect.isTrue(expectError);
47 Expect.isNotNull(listener.errorMessage, 'Internal error expected.'); 56 Expect.isNotNull(listener.errorMessage, 'Internal error expected.');
48 return; 57 return;
49 } 58 }
50 Expect.isNull(listener.errorMessage, 'Unexpected internal error.'); 59 Expect.isNull(listener.errorMessage, 'Unexpected internal error.');
51 Expect.listEquals(returns, actualReturns, 'Unexpected returns.'); 60 if (returns != null) {
52 Expect.listEquals(creates, actualCreates, 'Unexpected creates.'); 61 Expect.listEquals(returns, actualReturns, 'Unexpected returns.');
62 }
63 if (creates != null) {
64 Expect.listEquals(creates, actualCreates, 'Unexpected creates.');
65 }
53 Expect.equals(expectedSideEffects, actualSideEffects); 66 Expect.equals(expectedSideEffects, actualSideEffects);
67 Expect.equals(expectedThrows, actualThrows);
68 Expect.equals(expectedNew, actualNew);
69 Expect.equals(expectedGvn, actualGvn);
54 } 70 }
55 71
56 void testWithSideEffects(String specString, 72 void testWithSideEffects(String specString,
57 {List returns, 73 {List returns,
58 List creates, 74 List creates,
59 bool expectError: false}) { 75 bool expectError: false}) {
60 76
61 void sideEffectsTest(String newSpecString, SideEffects expectedSideEffects, 77 void sideEffectsTest(String newSpecString, SideEffects expectedSideEffects,
62 {bool sideEffectsExpectError}) { 78 {bool sideEffectsExpectError}) {
63 test(newSpecString, 79 test(newSpecString,
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 test(' returns:A|B|C; creates:A; ', 226 test(' returns:A|B|C; creates:A; ',
211 returns: ['A', 'B', 'C'], creates: ['A']); 227 returns: ['A', 'B', 'C'], creates: ['A']);
212 228
213 testWithSideEffects('returns:void;', returns: [], creates: []); 229 testWithSideEffects('returns:void;', returns: [], creates: []);
214 testWithSideEffects('returns:void;', returns: [], creates: []); 230 testWithSideEffects('returns:void;', returns: [], creates: []);
215 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []); 231 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []);
216 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []); 232 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []);
217 testWithSideEffects('returns:A;', returns: ['A'], creates: []); 233 testWithSideEffects('returns:A;', returns: ['A'], creates: []);
218 testWithSideEffects('returns:A|B;', returns: ['A', 'B'], creates: []); 234 testWithSideEffects('returns:A|B;', returns: ['A', 'B'], creates: []);
219 testWithSideEffects('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []); 235 testWithSideEffects('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []);
236 testWithSideEffects('returns: A| B |C ;', returns: ['A', 'B', 'C'], creates: [ ]);
floitsch 2015/04/07 15:35:16 long line.
sra1 2015/04/07 17:59:47 Done.
220 237
221 testWithSideEffects('creates:void;', expectError: true); 238 testWithSideEffects('creates:void;', expectError: true);
222 testWithSideEffects('creates:;', expectError: true); 239 testWithSideEffects('creates:;', expectError: true);
223 testWithSideEffects('creates:var;', expectError: true); 240 testWithSideEffects('creates:var;', expectError: true);
224 testWithSideEffects('creates:A;', returns: [], creates: ['A']); 241 testWithSideEffects('creates:A;', returns: [], creates: ['A']);
225 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']); 242 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']);
226 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); 243 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']);
227 244
228 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']); 245 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']);
229 testWithSideEffects('returns:;creates:A|B;', 246 testWithSideEffects('returns:;creates:A|B;',
230 returns: [OBJECT, NULL], creates: ['A', 'B']); 247 returns: [OBJECT, NULL], creates: ['A', 'B']);
231 testWithSideEffects('returns:var;creates:A|B|C;', 248 testWithSideEffects('returns:var;creates:A|B|C;',
232 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); 249 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']);
233 testWithSideEffects('returns:A; creates:A|B|C; ', 250 testWithSideEffects('returns:A; creates:A|B|C; ',
234 returns: ['A'], creates: ['A', 'B', 'C']); 251 returns: ['A'], creates: ['A', 'B', 'C']);
235 testWithSideEffects(' returns:A|B; creates:A|C;', 252 testWithSideEffects(' returns:A|B; creates:A|C;',
236 returns: ['A', 'B'], creates: ['A', 'C']); 253 returns: ['A', 'B'], creates: ['A', 'C']);
237 testWithSideEffects(' returns:A|B|C; creates:A; ', 254 testWithSideEffects(' returns:A|B|C; creates:A; ',
238 returns: ['A', 'B', 'C'], creates: ['A']); 255 returns: ['A', 'B', 'C'], creates: ['A']);
256
257 test('throws:must', expectedThrows: NativeThrowBehavior.MUST);
258 test('throws:may', expectedThrows: NativeThrowBehavior.MAY);
259 test('throws:never', expectedThrows: NativeThrowBehavior.NEVER);
260 test('throws:null(1)',
261 expectedThrows:
262 NativeThrowBehavior.MAY_THROW_ONLY_ON_FIRST_ARGUMENT_ACCESS);
263
264 test('new:true', expectedNew: true);
265 test('new:false', expectedNew: false);
266 test('returns:A;new:true', returns: ['A'], expectedNew: true);
267 test(' new : true ; returns:A;', returns: ['A'], expectedNew: true);
268 test('new:true;returns:A;new:true', expectError: true);
269
270 test('gvn:true', expectedGvn: true);
271 test('gvn:false', expectedGvn: false);
272 test('returns:A;gvn:true', returns: ['A'], expectedGvn: true);
273 test(' gvn : true ; returns:A;', returns: ['A'], expectedGvn: true);
274 test('gvn:true;returns:A;gvn:true', expectError: true);
275
276 test('gvn: true; new: true', expectError: true);
277 test('gvn: true; new: false', expectedGvn: true, expectedNew: false);
278 test('gvn: false; new: true', expectedGvn: false, expectedNew: true);
279 test('gvn: false; new: false', expectedGvn: false, expectedNew: false);
239 } 280 }
OLDNEW
« pkg/compiler/lib/src/native/behavior.dart ('K') | « pkg/compiler/lib/src/native/behavior.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698