Index: pkg/kernel/test/type_substitute_bounds_test.dart |
diff --git a/pkg/kernel/test/type_substitute_bounds_test.dart b/pkg/kernel/test/type_substitute_bounds_test.dart |
deleted file mode 100644 |
index bddd7bd1af65774c37d891dfa124c82aff67a0cc..0000000000000000000000000000000000000000 |
--- a/pkg/kernel/test/type_substitute_bounds_test.dart |
+++ /dev/null |
@@ -1,84 +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. |
-library kernel.type_substitute_bounds_test; |
- |
-import 'package:kernel/kernel.dart'; |
-import 'package:kernel/type_algebra.dart'; |
-import 'package:test/test.dart'; |
-import 'type_parser.dart'; |
- |
-final List<TestCase> testCases = <TestCase>[ |
- testCase('T', {'T': bound('_', 'String')}, 'String'), |
- testCase('List<T>', {'T': bound('_', 'String')}, 'List<String>'), |
- testCase('List<List<T>>', {'T': bound('_', 'String')}, 'List<List<String>>'), |
- testCase('(T) => T', {'T': bound('_', 'String')}, '(_) => String'), |
- testCase('<G>(G,T) => T', {'T': bound('_', 'String')}, '<G>(G,_) => String'), |
- testCase( |
- '<G>(G,x:T) => T', {'T': bound('_', 'String')}, '<G>(G,x:_) => String'), |
- testCase('<G:T>(G) => G', {'T': bound('_', 'String')}, '<G:_>(G) => G'), |
- testCase('<G:T>(G) => G', {'T': bound('int', 'num')}, '<G:int>(G) => G'), |
- testCase('<G>(T,G) => void', {'T': bound('_', 'String')}, '<G>(_,G) => void'), |
- testCase('(T) => void', {'T': bound('_', 'String')}, '(_) => void'), |
- testCase('(int) => T', {'T': bound('_', 'String')}, '(int) => String'), |
- testCase('(int) => int', {'T': bound('_', 'String')}, '(int) => int'), |
- testCase('((T) => int) => int', {'T': bound('_', 'String')}, |
- '((String) => int) => int'), |
- testCase('<E>(<F>(T) => int) => int', {'T': bound('_', 'String')}, |
- '<E>(<F>(String) => int) => int'), |
- testCase('(<F>(T) => int) => int', {'T': bound('_', 'String')}, |
- '(<F>(String) => int) => int'), |
- testCase('<E>((T) => int) => int', {'T': bound('_', 'String')}, |
- '<E>((String) => int) => int'), |
-]; |
- |
-class TestCase { |
- final String type; |
- final Map<String, TypeBound> bounds; |
- final String expected; |
- |
- TestCase(this.type, this.bounds, this.expected); |
- |
- String toString() { |
- var substitution = bounds.keys.map((key) { |
- var bound = bounds[key]; |
- return '${bound.lower} <: $key <: ${bound.upper}'; |
- }).join(','); |
- return '$type [$substitution] <: $expected'; |
- } |
-} |
- |
-class TypeBound { |
- final String lower, upper; |
- |
- TypeBound(this.lower, this.upper); |
-} |
- |
-TypeBound bound(String lower, String upper) => new TypeBound(lower, upper); |
- |
-TestCase testCase(String type, Map<String, TypeBound> bounds, String expected) { |
- return new TestCase(type, bounds, expected); |
-} |
- |
-main() { |
- for (var testCase in testCases) { |
- test('$testCase', () { |
- var environment = new LazyTypeEnvironment(); |
- var type = environment.parse(testCase.type); |
- var upperBounds = <TypeParameter, DartType>{}; |
- var lowerBounds = <TypeParameter, DartType>{}; |
- testCase.bounds.forEach((String name, TypeBound bounds) { |
- var parameter = environment.getTypeParameter(name); |
- upperBounds[parameter] = environment.parse(bounds.upper); |
- lowerBounds[parameter] = environment.parse(bounds.lower); |
- }); |
- var substituted = Substitution |
- .fromUpperAndLowerBounds(upperBounds, lowerBounds) |
- .substituteType(type); |
- var expected = environment.parse(testCase.expected); |
- if (substituted != expected) { |
- fail('Expected `$expected` but got `$substituted`'); |
- } |
- }); |
- } |
-} |