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

Side by Side Diff: tests/compiler/dart2js/equivalence/check_helpers.dart

Issue 2954493002: Less inequivalence on Hello World! (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 /// General equivalence test functions. 5 /// General equivalence test functions.
6 6
7 library dart2js.equivalence.helpers; 7 library dart2js.equivalence.helpers;
8 8
9 import 'package:compiler/src/constants/expressions.dart'; 9 import 'package:compiler/src/constants/expressions.dart';
10 import 'package:compiler/src/constants/values.dart'; 10 import 'package:compiler/src/constants/values.dart';
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 /// Checks the pair-wise equivalence of the constants values in [list1] and 332 /// Checks the pair-wise equivalence of the constants values in [list1] and
333 /// [list2]. 333 /// [list2].
334 /// 334 ///
335 /// Uses [object1], [object2] and [property] to provide context for failures. 335 /// Uses [object1], [object2] and [property] to provide context for failures.
336 bool checkConstantValueLists(Object object1, Object object2, String property, 336 bool checkConstantValueLists(Object object1, Object object2, String property,
337 List<ConstantValue> list1, List<ConstantValue> list2) { 337 List<ConstantValue> list1, List<ConstantValue> list2) {
338 return checkListEquivalence( 338 return checkListEquivalence(
339 object1, object2, property, list1, list2, checkConstantValues); 339 object1, object2, property, list1, list2, checkConstantValues);
340 } 340 }
341 341
342 void checkLists(
343 List list1, List list2, String messagePrefix, bool sameElement(a, b),
344 {bool verbose: false,
345 void onSameElement(a, b),
346 void onDifferentElements(a, b),
347 void onUnfoundElement(a),
348 void onExtraElement(b),
349 String elementToString(key): defaultToString}) {
350 List<List> common = <List>[];
351 List mismatch = [];
352 List unfound = [];
353 List extra = [];
354 int index = 0;
355 while (index < list1.length && index < list2.length) {
356 var element1 = list1[index];
357 var element2 = list2[index];
358 if (sameElement(element1, element2)) {
359 if (onSameElement != null) {
360 onSameElement(element1, element2);
361 }
362 common.add([element1, element2]);
363 } else {
364 if (onDifferentElements != null) {
365 onDifferentElements(element1, element2);
366 }
367 mismatch = [element1, element2];
368 break;
369 }
370 index++;
371 }
372 for (int tail = index; tail < list1.length; tail++) {
373 var element1 = list1[tail];
374 if (onUnfoundElement != null) {
375 onUnfoundElement(element1);
376 }
377 unfound.add(element1);
378 }
379 for (int tail = index; tail < list2.length; tail++) {
380 var element2 = list2[tail];
381 if (onExtraElement != null) {
382 onExtraElement(element2);
383 }
384 extra.add(element2);
385 }
386 StringBuffer sb = new StringBuffer();
387 sb.write("$messagePrefix:");
388 if (verbose) {
389 sb.write("\n Common: \n");
390 for (List pair in common) {
391 var element1 = pair[0];
392 var element2 = pair[1];
393 sb.write(" [${elementToString(element1)},"
394 "${elementToString(element2)}]\n");
395 }
396 }
397 if (mismatch.isNotEmpty) {
398 sb.write("\n Mismatch @ $index:\n "
399 "${mismatch.map(elementToString).join('\n ')}");
400 }
401
402 if (unfound.isNotEmpty || verbose) {
403 sb.write("\n Unfound:\n ${unfound.map(elementToString).join('\n ')}");
404 }
405 if (extra.isNotEmpty || verbose) {
406 sb.write("\n Extra: \n ${extra.map(elementToString).join('\n ')}");
407 }
408 String message = sb.toString();
409 if (mismatch.isNotEmpty) {
410 Expect.fail(message);
411 } else if (verbose) {
412 print(message);
413 }
414 }
415
342 void checkSets( 416 void checkSets(
343 Iterable set1, Iterable set2, String messagePrefix, bool sameElement(a, b), 417 Iterable set1, Iterable set2, String messagePrefix, bool sameElement(a, b),
344 {bool failOnUnfound: true, 418 {bool failOnUnfound: true,
345 bool failOnExtra: true, 419 bool failOnExtra: true,
346 bool verbose: false, 420 bool verbose: false,
347 void onSameElement(a, b), 421 void onSameElement(a, b),
348 void onUnfoundElement(a), 422 void onUnfoundElement(a),
349 void onExtraElement(b), 423 void onExtraElement(b),
350 bool elementFilter(element), 424 bool elementFilter(element),
351 elementConverter(element), 425 elementConverter(element),
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 (mismatch.isNotEmpty && failOnMismatch) || 550 (mismatch.isNotEmpty && failOnMismatch) ||
477 remaining.isNotEmpty) { 551 remaining.isNotEmpty) {
478 Expect.fail(message); 552 Expect.fail(message);
479 } else { 553 } else {
480 print(message); 554 print(message);
481 } 555 }
482 } else if (verbose) { 556 } else if (verbose) {
483 print(message); 557 print(message);
484 } 558 }
485 } 559 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/equivalence/check_functions.dart ('k') | tests/compiler/dart2js/kernel/compile_from_dill_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698