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

Side by Side Diff: tests/compiler/dart2js/serialization/model_test.dart

Issue 2057993003: Serialize NativeBehavior for elements (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Cleanup. Created 4 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
OLDNEW
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 library dart2js.serialization_model_test; 5 library dart2js.serialization_model_test;
6
7 import 'dart:async'; 6 import 'dart:async';
8 import 'dart:io'; 7 import 'dart:io';
9 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
10 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
11 import 'package:compiler/src/closure.dart'; 10 import 'package:compiler/src/closure.dart';
12 import 'package:compiler/src/commandline_options.dart'; 11 import 'package:compiler/src/commandline_options.dart';
13 import 'package:compiler/src/compiler.dart'; 12 import 'package:compiler/src/compiler.dart';
14 import 'package:compiler/src/elements/elements.dart'; 13 import 'package:compiler/src/elements/elements.dart';
15 import 'package:compiler/src/filenames.dart'; 14 import 'package:compiler/src/filenames.dart';
16 import 'package:compiler/src/serialization/equivalence.dart'; 15 import 'package:compiler/src/serialization/equivalence.dart';
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 verbose ? compiler2.coreClasses.objectClass : node2.cls)); 232 verbose ? compiler2.coreClasses.objectClass : node2.cls));
234 } 233 }
235 Expect.isFalse(child.isInstantiated, 234 Expect.isFalse(child.isInstantiated,
236 'Missing subclass ${child.cls} of ${node1.cls} in ' 235 'Missing subclass ${child.cls} of ${node1.cls} in '
237 '${node2.directSubclasses}'); 236 '${node2.directSubclasses}');
238 } 237 }
239 } 238 }
240 checkMixinUses(compiler1, compiler2, node1.cls, node2.cls, verbose: verbose); 239 checkMixinUses(compiler1, compiler2, node1.cls, node2.cls, verbose: verbose);
241 } 240 }
242 241
243 void checkSets(
244 Iterable set1,
245 Iterable set2,
246 String messagePrefix,
247 bool sameElement(a, b),
248 {bool failOnUnfound: true,
249 bool verbose: false,
250 void onSameElement(a, b)}) {
251 List common = [];
252 List unfound = [];
253 Set remaining = computeSetDifference(
254 set1, set2, common, unfound,
255 sameElement: sameElement,
256 checkElements: onSameElement);
257 StringBuffer sb = new StringBuffer();
258 sb.write("$messagePrefix:");
259 if (verbose) {
260 sb.write("\n Common:\n ${common.join('\n ')}");
261 }
262 if (unfound.isNotEmpty || verbose) {
263 sb.write("\n Unfound:\n ${unfound.join('\n ')}");
264 }
265 if (remaining.isNotEmpty || verbose) {
266 sb.write("\n Extra: \n ${remaining.join('\n ')}");
267 }
268 String message = sb.toString();
269 if (unfound.isNotEmpty || remaining.isNotEmpty) {
270
271 if (failOnUnfound || remaining.isNotEmpty) {
272 Expect.fail(message);
273 } else {
274 print(message);
275 }
276 } else if (verbose) {
277 print(message);
278 }
279 }
280
281 String defaultToString(obj) => '$obj';
282
283 void checkMaps(
284 Map map1,
285 Map map2,
286 String messagePrefix,
287 bool sameKey(a, b),
288 bool sameValue(a, b),
289 {bool failOnUnfound: true,
290 bool failOnMismatch: true,
291 bool verbose: false,
292 String keyToString(key): defaultToString,
293 String valueToString(key): defaultToString}) {
294 List common = [];
295 List unfound = [];
296 List<List> mismatch = <List>[];
297 Set remaining = computeSetDifference(
298 map1.keys, map2.keys, common, unfound,
299 sameElement: sameKey,
300 checkElements: (k1, k2) {
301 var v1 = map1[k1];
302 var v2 = map2[k2];
303 if (!sameValue(v1, v2)) {
304 mismatch.add([k1, k2]);
305 }
306 });
307 StringBuffer sb = new StringBuffer();
308 sb.write("$messagePrefix:");
309 if (verbose) {
310 sb.write("\n Common: \n");
311 for (List pair in common) {
312 var k1 = pair[0];
313 var k2 = pair[1];
314 var v1 = map1[k1];
315 var v2 = map2[k2];
316 sb.write(" key1 =${keyToString(k1)}\n");
317 sb.write(" key2 =${keyToString(k2)}\n");
318 sb.write(" value1=${valueToString(v1)}\n");
319 sb.write(" value2=${valueToString(v2)}\n");
320 }
321 }
322 if (unfound.isNotEmpty || verbose) {
323 sb.write("\n Unfound: \n");
324 for (var k1 in unfound) {
325 var v1 = map1[k1];
326 sb.write(" key1 =${keyToString(k1)}\n");
327 sb.write(" value1=${valueToString(v1)}\n");
328 }
329 }
330 if (remaining.isNotEmpty || verbose) {
331 sb.write("\n Extra: \n");
332 for (var k2 in remaining) {
333 var v2 = map2[k2];
334 sb.write(" key2 =${keyToString(k2)}\n");
335 sb.write(" value2=${valueToString(v2)}\n");
336 }
337 }
338 if (mismatch.isNotEmpty || verbose) {
339 sb.write("\n Mismatch: \n");
340 for (List pair in mismatch) {
341 var k1 = pair[0];
342 var k2 = pair[1];
343 var v1 = map1[k1];
344 var v2 = map2[k2];
345 sb.write(" key1 =${keyToString(k1)}\n");
346 sb.write(" key2 =${keyToString(k2)}\n");
347 sb.write(" value1=${valueToString(v1)}\n");
348 sb.write(" value2=${valueToString(v2)}\n");
349 }
350 }
351 String message = sb.toString();
352 if (unfound.isNotEmpty || mismatch.isNotEmpty || remaining.isNotEmpty) {
353 if ((unfound.isNotEmpty && failOnUnfound) ||
354 (mismatch.isNotEmpty && failOnMismatch) ||
355 remaining.isNotEmpty) {
356 Expect.fail(message);
357 } else {
358 print(message);
359 }
360 } else if (verbose) {
361 print(message);
362 }
363 }
364
365 bool areLocalsEquivalent(Local a, Local b) { 242 bool areLocalsEquivalent(Local a, Local b) {
366 if (a == b) return true; 243 if (a == b) return true;
367 if (a == null || b == null) return false; 244 if (a == null || b == null) return false;
368 245
369 if (a is Element) { 246 if (a is Element) {
370 return b is Element && areElementsEquivalent(a as Element, b as Element); 247 return b is Element && areElementsEquivalent(a as Element, b as Element);
371 } else { 248 } else {
372 return a.runtimeType == b.runtimeType && 249 return a.runtimeType == b.runtimeType &&
373 areElementsEquivalent(a.executableContext, b.executableContext); 250 areElementsEquivalent(a.executableContext, b.executableContext);
374 } 251 }
(...skipping 28 matching lines...) Expand all
403 return true; 280 return true;
404 } 281 }
405 282
406 String nodeToString(Node node) { 283 String nodeToString(Node node) {
407 String text = '$node'; 284 String text = '$node';
408 if (text.length > 40) { 285 if (text.length > 40) {
409 return '(${node.runtimeType}) ${text.substring(0, 37)}...'; 286 return '(${node.runtimeType}) ${text.substring(0, 37)}...';
410 } 287 }
411 return '(${node.runtimeType}) $text'; 288 return '(${node.runtimeType}) $text';
412 } 289 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/serialization/helper.dart ('k') | tests/compiler/dart2js/serialization/native_data_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698