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

Unified Diff: pkg/kernel/test/type_subtype_test_disabled.dart

Issue 2548833002: Re-enable kernel unit tests on platforms where they are supported. (Closed)
Patch Set: Also enable hashcode test Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/kernel/test/type_subtype_test.dart ('k') | pkg/kernel/test/type_unification_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/test/type_subtype_test_disabled.dart
diff --git a/pkg/kernel/test/type_subtype_test_disabled.dart b/pkg/kernel/test/type_subtype_test_disabled.dart
deleted file mode 100644
index 56b23398f8e032395ed7fb5c52a2fc3b3b5fbeed..0000000000000000000000000000000000000000
--- a/pkg/kernel/test/type_subtype_test_disabled.dart
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2016, 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.
-
-import 'package:test/test.dart';
-import 'package:kernel/ast.dart';
-import 'package:kernel/class_hierarchy.dart';
-import 'package:kernel/type_environment.dart';
-import 'type_parser.dart';
-
-/// Description of a small class hierarchy for use in subtype tests.
-var classEnvironment = <String, List<String>>{
- 'Comparable<T>': ['Object'],
- 'num': ['Object', 'Comparable<num>'],
- 'int': ['num'],
- 'double': ['num'],
- 'Iterable<T>': ['Object'],
- 'List<T>': ['Iterable<T>'],
-};
-
-List<TestCase> testCases = <TestCase>[
- subtype('int', 'num'),
- subtype('int', 'Comparable<num>'),
- subtype('int', 'Comparable<Object>'),
- subtype('int', 'Object'),
- subtype('double', 'num'),
-
- notSubtype('int', 'double'),
- notSubtype('int', 'Comparable<int>'),
- notSubtype('int', 'Iterable<int>'),
- notSubtype('Comparable<int>', 'Iterable<int>'),
-
- subtype('List<int>', 'List<int>'),
- subtype('List<int>', 'Iterable<int>'),
- subtype('List<int>', 'List<num>'),
- subtype('List<int>', 'Iterable<num>'),
- subtype('List<int>', 'List<Object>'),
- subtype('List<int>', 'Iterable<Object>'),
- subtype('List<int>', 'Object'),
- subtype('List<int>', 'List<Comparable<Object>>'),
- subtype('List<int>', 'List<Comparable<num>>'),
- subtype('List<int>', 'List<Comparable<Comparable<num>>>'),
-
- notSubtype('List<int>', 'List<double>'),
- notSubtype('List<int>', 'Iterable<double>'),
- notSubtype('List<int>', 'Comparable<int>'),
- notSubtype('List<int>', 'List<Comparable<int>>'),
- notSubtype('List<int>', 'List<Comparable<Comparable<int>>>'),
-
- subtype('(num) => num', '(int) => num'),
- subtype('(num) => int', '(num) => num'),
- subtype('(num) => int', '(int) => num'),
- notSubtype('(int) => int', '(num) => num'),
-
- subtype('(num) => (num) => num', '(num) => (int) => num'),
- notSubtype('(num) => (int) => int', '(num) => (num) => num'),
-
- subtype('(x:num) => num', '(x:int) => num'), // named parameters
- subtype('(num,x:num) => num', '(int,x:int) => num'),
- subtype('(x:num) => int', '(x:num) => num'),
- notSubtype('(x:int) => int', '(x:num) => num'),
-
- subtype('<E>(E) => int', '<E>(E) => num'), // type parameters
- subtype('<E>(num) => E', '<E>(int) => E'),
- subtype('<E>(E,num) => E', '<E>(E,int) => E'),
- notSubtype('<E>(E,num) => E', '<E>(E,E) => E'),
-
- subtype('<E>(E) => (E) => E', '<F>(F) => (F) => F'),
- subtype('<E>(E, (int,E) => E) => E', '<E>(E, (int,E) => E) => E'),
- subtype('<E>(E, (int,E) => E) => E', '<E>(E, (num,E) => E) => E'),
- notSubtype('<E,F>(E) => (F) => E', '<E>(E) => <F>(F) => E'),
- notSubtype('<E,F>(E) => (F) => E', '<F,E>(E) => (F) => E'),
-
- subtype('<E>(E,num) => E', '<E:num>(E,E) => E'),
- subtype('<E:num>(E) => int', '<E:int>(E) => int'),
- subtype('<E:num>(E) => E', '<E:int>(E) => E'),
- subtype('<E:num>(int) => E', '<E:int>(int) => E'),
- notSubtype('<E>(int) => int', '(int) => int'),
- notSubtype('<E,F>(int) => int', '<E>(int) => int'),
-
- subtype('<E:List<E>>(E) => E', '<F:List<F>>(F) => F'),
- subtype('<E:Iterable<E>>(E) => E', '<F:List<F>>(F) => F'),
- subtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => F'),
- notSubtype('<E>(E,List<Object>) => List<E>', '<F:List<F>>(F,F) => F'),
- notSubtype('<E>(E,List<Object>) => int', '<F:List<F>>(F,F) => F'),
- subtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => void'),
-];
-
-/// Assert that [subtype] is a subtype of [supertype], and that [supertype]
-/// is not a subtype of [subtype] (unless the two strings are equal).
-TestCase subtype(String subtype_, String supertype) {
- return new TestCase(subtype_, supertype, isSubtype: true);
-}
-
-/// Assert that neither type is a subtype of the other.
-TestCase notSubtype(String subtype_, String supertype) {
- return new TestCase(subtype_, supertype, isSubtype: false);
-}
-
-class TestCase {
- String subtype;
- String supertype;
- bool isSubtype;
- TestCase(this.subtype, this.supertype, {this.isSubtype});
-
- String toString() =>
- isSubtype ? '$subtype <: $supertype' : '$subtype </: $supertype';
-}
-
-class MockSubtypeTester extends SubtypeTester {
- ClassHierarchy hierarchy;
- InterfaceType objectType;
- InterfaceType rawFunctionType;
- LazyTypeEnvironment environment;
-
- MockSubtypeTester(
- this.hierarchy, this.objectType, this.rawFunctionType, this.environment);
-}
-
-MockSubtypeTester makeSubtypeTester(Map<String, List<String>> testcase) {
- LazyTypeEnvironment environment = new LazyTypeEnvironment();
- Class objectClass = environment.lookup('Object');
- Class functionClass = environment.lookup('Function');
- functionClass.supertype = objectClass.asRawSupertype;
- for (var typeString in testcase.keys) {
- InterfaceType type = environment.parseFresh(typeString);
- Class class_ = type.classNode;
- for (TypeParameterType typeArg in type.typeArguments) {
- class_.typeParameters.add(typeArg.parameter);
- }
- for (var supertypeString in testcase[typeString]) {
- if (class_.supertype == null) {
- class_.supertype = environment.parseSuper(supertypeString);
- } else {
- class_.implementedTypes.add(environment.parseSuper(supertypeString));
- }
- }
- }
- var program = new Program([environment.dummyLibrary]);
- var hierarchy = new ClassHierarchy(program);
- return new MockSubtypeTester(
- hierarchy, objectClass.rawType, functionClass.rawType, environment);
-}
-
-main() {
- var tester = makeSubtypeTester(classEnvironment);
- var environment = tester.environment;
- for (var testCase in testCases) {
- test('$testCase', () {
- var subtype = environment.parseFresh(testCase.subtype);
- var supertype = environment.parseFresh(testCase.supertype);
- if (tester.isSubtypeOf(subtype, supertype) != testCase.isSubtype) {
- fail('isSubtypeOf(${testCase.subtype}, ${testCase.supertype}) returned '
- '${!testCase.isSubtype} but should return ${testCase.isSubtype}');
- }
- if (subtype != supertype && tester.isSubtypeOf(supertype, subtype)) {
- fail('isSubtypeOf(${testCase.supertype}, ${testCase.subtype}) returned '
- 'true but should return false');
- }
- });
- }
-}
« no previous file with comments | « pkg/kernel/test/type_subtype_test.dart ('k') | pkg/kernel/test/type_unification_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698