Index: tests/compiler/dart2js/serialization_model_test.dart |
diff --git a/tests/compiler/dart2js/serialization_model_test.dart b/tests/compiler/dart2js/serialization_model_test.dart |
deleted file mode 100644 |
index 52547ae638c8cd942fbdf3fb229646fa5f089b20..0000000000000000000000000000000000000000 |
--- a/tests/compiler/dart2js/serialization_model_test.dart |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library dart2js.serialization_model_test; |
- |
-import 'dart:async'; |
-import 'dart:io'; |
-import 'package:async_helper/async_helper.dart'; |
-import 'package:expect/expect.dart'; |
-import 'package:compiler/src/commandline_options.dart'; |
-import 'package:compiler/src/common/backend_api.dart'; |
-import 'package:compiler/src/common/names.dart'; |
-import 'package:compiler/src/common/resolution.dart'; |
-import 'package:compiler/src/compiler.dart'; |
-import 'package:compiler/src/dart_types.dart'; |
-import 'package:compiler/src/elements/elements.dart'; |
-import 'package:compiler/src/filenames.dart'; |
-import 'package:compiler/src/serialization/element_serialization.dart'; |
-import 'package:compiler/src/serialization/impact_serialization.dart'; |
-import 'package:compiler/src/serialization/json_serializer.dart'; |
-import 'package:compiler/src/serialization/serialization.dart'; |
-import 'package:compiler/src/serialization/equivalence.dart'; |
-import 'package:compiler/src/serialization/task.dart'; |
-import 'package:compiler/src/universe/world_impact.dart'; |
-import 'package:compiler/src/universe/class_set.dart'; |
-import 'package:compiler/src/universe/use.dart'; |
-import 'memory_compiler.dart'; |
-import 'serialization_helper.dart'; |
-import 'serialization_test_data.dart'; |
-import 'serialization_test_helper.dart'; |
- |
-main(List<String> args) { |
- asyncTest(() async { |
- Arguments arguments = new Arguments.from(args); |
- String serializedData = await serializeDartCore(arguments: arguments); |
- if (arguments.filename != null) { |
- Uri entryPoint = Uri.base.resolve(nativeToUriPath(arguments.filename)); |
- await check(serializedData, entryPoint); |
- } else { |
- Uri entryPoint = Uri.parse('memory:main.dart'); |
- for (Test test in TESTS) { |
- print('=============================================================='); |
- print(test.sourceFiles); |
- await check( |
- serializedData, |
- entryPoint, |
- sourceFiles: test.sourceFiles, |
- verbose: arguments.verbose); |
- } |
- } |
- }); |
-} |
- |
-Future check( |
- String serializedData, |
- Uri entryPoint, |
- {Map<String, String> sourceFiles: const <String, String>{}, |
- bool verbose: false}) async { |
- |
- print('------------------------------------------------------------------'); |
- print('compile normal'); |
- print('------------------------------------------------------------------'); |
- Compiler compilerNormal = compilerFor( |
- memorySourceFiles: sourceFiles, |
- options: [Flags.analyzeOnly]); |
- compilerNormal.resolution.retainCachesForTesting = true; |
- await compilerNormal.run(entryPoint); |
- compilerNormal.world.populate(); |
- |
- print('------------------------------------------------------------------'); |
- print('compile deserialized'); |
- print('------------------------------------------------------------------'); |
- Compiler compilerDeserialized = compilerFor( |
- memorySourceFiles: sourceFiles, |
- options: [Flags.analyzeOnly]); |
- compilerDeserialized.resolution.retainCachesForTesting = true; |
- deserialize(compilerDeserialized, serializedData); |
- await compilerDeserialized.run(entryPoint); |
- compilerDeserialized.world.populate(); |
- |
- checkAllImpacts( |
- compilerNormal, compilerDeserialized, |
- verbose: verbose); |
- |
- checkSets( |
- compilerNormal.resolverWorld.directlyInstantiatedClasses, |
- compilerDeserialized.resolverWorld.directlyInstantiatedClasses, |
- "Directly instantiated classes mismatch", |
- areElementsEquivalent, |
- verbose: verbose); |
- |
- checkSets( |
- compilerNormal.resolverWorld.instantiatedTypes, |
- compilerDeserialized.resolverWorld.instantiatedTypes, |
- "Instantiated types mismatch", |
- areTypesEquivalent, |
- // TODO(johnniwinther): Ensure that all instantiated types are tracked. |
- failOnUnfound: false, |
- verbose: verbose); |
- |
- checkSets( |
- compilerNormal.resolverWorld.isChecks, |
- compilerDeserialized.resolverWorld.isChecks, |
- "Is-check mismatch", |
- areTypesEquivalent, |
- verbose: verbose); |
- |
- checkSets( |
- compilerNormal.enqueuer.resolution.processedElements, |
- compilerDeserialized.enqueuer.resolution.processedElements, |
- "Processed element mismatch", |
- areElementsEquivalent, |
- verbose: verbose); |
- |
- checkClassHierarchyNodes( |
- compilerNormal.world.getClassHierarchyNode( |
- compilerNormal.coreClasses.objectClass), |
- compilerDeserialized.world.getClassHierarchyNode( |
- compilerDeserialized.coreClasses.objectClass), |
- verbose: verbose); |
-} |
- |
-void checkClassHierarchyNodes( |
- ClassHierarchyNode a, ClassHierarchyNode b, |
- {bool verbose: false}) { |
- if (verbose) { |
- print('Checking $a vs $b'); |
- } |
- Expect.isTrue( |
- areElementsEquivalent(a.cls, b.cls), |
- "Element identity mismatch for ${a.cls} vs ${b.cls}."); |
- Expect.equals( |
- a.isDirectlyInstantiated, |
- b.isDirectlyInstantiated, |
- "Value mismatch for 'isDirectlyInstantiated' for ${a.cls} vs ${b.cls}."); |
- Expect.equals( |
- a.isIndirectlyInstantiated, |
- b.isIndirectlyInstantiated, |
- "Value mismatch for 'isIndirectlyInstantiated' " |
- "for ${a.cls} vs ${b.cls}."); |
- // TODO(johnniwinther): Enforce a canonical and stable order on direct |
- // subclasses. |
- for (ClassHierarchyNode child in a.directSubclasses) { |
- bool found = false; |
- for (ClassHierarchyNode other in b.directSubclasses) { |
- if (areElementsEquivalent(child.cls, other.cls)) { |
- checkClassHierarchyNodes(child, other, |
- verbose: verbose); |
- found = true; |
- break; |
- } |
- } |
- if (!found) { |
- Expect.isFalse( |
- child.isInstantiated, 'Missing subclass ${child.cls} of ${a.cls}'); |
- } |
- } |
-} |
- |
-void checkSets( |
- Iterable set1, |
- Iterable set2, |
- String messagePrefix, |
- bool areEquivalent(a, b), |
- {bool failOnUnfound: true, |
- bool verbose: false}) { |
- List common = []; |
- List unfound = []; |
- Set remaining = computeSetDifference( |
- set1, set2, common, unfound, areEquivalent); |
- StringBuffer sb = new StringBuffer(); |
- sb.write("$messagePrefix:"); |
- if (verbose) { |
- sb.write("\n Common:\n ${common.join('\n ')}"); |
- } |
- if (unfound.isNotEmpty || verbose) { |
- sb.write("\n Unfound:\n ${unfound.join('\n ')}"); |
- } |
- if (remaining.isNotEmpty || verbose) { |
- sb.write("\n Extra: \n ${remaining.join('\n ')}"); |
- } |
- String message = sb.toString(); |
- if (unfound.isNotEmpty || remaining.isNotEmpty) { |
- |
- if (failOnUnfound || remaining.isNotEmpty) { |
- Expect.fail(message); |
- } else { |
- print(message); |
- } |
- } else if (verbose) { |
- print(message); |
- } |
-} |