Index: tests/lib/mirrors/reflected_type_generics_test.dart |
diff --git a/tests/lib/mirrors/reflected_type_generics_test.dart b/tests/lib/mirrors/reflected_type_generics_test.dart |
deleted file mode 100644 |
index 53a916a623744e05520d2970a94b25b79a26d5e2..0000000000000000000000000000000000000000 |
--- a/tests/lib/mirrors/reflected_type_generics_test.dart |
+++ /dev/null |
@@ -1,99 +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 test.reflected_type_generics_test; |
- |
-@MirrorsUsed(targets: "test.reflected_type_generics_test") |
-import 'dart:mirrors'; |
- |
-import 'package:expect/expect.dart'; |
- |
-import 'reflected_type_helper.dart'; |
- |
-class A<T> {} |
- |
-class P {} |
- |
-class B extends A<P> {} |
- |
-class C<K, V> {} |
- |
-class D<T> extends A<T> {} |
- |
-class E<K> extends C<K, int> {} |
- |
-class F<G> {} |
- |
-typedef bool Predicate<T>(T arg); |
- |
-class FBounded<S extends FBounded> {} |
- |
-class Helper<T> { |
- Type get param => T; |
-} |
- |
-class Mixin<T extends P> {} |
- |
-class Composite<K extends P, V> extends Object with Mixin<K> {} |
- |
-main() { |
- // "Happy" paths: |
- expectReflectedType(reflectType(A, [P]), new A<P>().runtimeType); |
- expectReflectedType(reflectType(C, [B, P]), new C<B, P>().runtimeType); |
- expectReflectedType(reflectType(D, [P]), new D<P>().runtimeType); |
- expectReflectedType(reflectType(E, [P]), new E<P>().runtimeType); |
- expectReflectedType( |
- reflectType(FBounded, [FBounded]), new FBounded<FBounded>().runtimeType); |
- |
- var predicateHelper = new Helper<Predicate<P>>(); |
- expectReflectedType(reflectType(Predicate, [P]), predicateHelper.param); /// 01: ok |
- var composite = new Composite<P, int>(); |
- expectReflectedType(reflectType(Composite, [P, int]), composite.runtimeType); |
- |
- // Edge cases: |
- Expect.throws( |
- () => reflectType(P, []), |
- (e) => e is ArgumentError && e.invalidValue is List, |
- "Should throw an ArgumentError if reflecting not a generic class with " |
- "empty list of type arguments"); |
- Expect.throws( |
- () => reflectType(P, [B]), |
- (e) => e is Error, |
- "Should throw an ArgumentError if reflecting not a generic class with " |
- "some type arguments"); |
- Expect.throws( |
- () => reflectType(A, []), |
- (e) => e is ArgumentError && e.invalidValue is List, |
- "Should throw an ArgumentError if type argument list is empty for a " |
- "generic class"); |
- Expect.throws( |
- () => reflectType(A, [P, B]), |
- (e) => e is ArgumentError && e.invalidValue is List, |
- "Should throw an ArgumentError if number of type arguments is not " |
- "correct"); |
- Expect.throws(() => reflectType(B, [P]), (e) => e is Error, |
- "Should throw an ArgumentError for non-generic class extending " |
- "generic one"); |
- Expect.throws( |
- () => reflectType(A, ["non-type"]), |
- (e) => e is ArgumentError && e.invalidValue is List, |
- "Should throw an ArgumentError when any of type arguments is not a Type"); |
- Expect.throws( |
- () => reflectType(A, [P, B]), |
- (e) => e is ArgumentError && e.invalidValue is List, |
- "Should throw an ArgumentError if number of type arguments is not correct " |
- "for generic extending another generic"); |
- Expect.throws( |
- () => reflectType(reflectType(F).typeVariables[0].reflectedType, [int])); |
- Expect.throws(() => reflectType(FBounded, [int])); /// 02: ok |
- var boundedType = |
- reflectType(FBounded).typeVariables[0].upperBound.reflectedType; |
- Expect.throws(() => reflectType(boundedType, [int])); /// 02: ok |
- Expect.throws(() => reflectType(Composite, [int, int])); /// 02: ok |
- |
- // Instantiation of a generic class preserves type information: |
- ClassMirror m = reflectType(A, [P]) as ClassMirror; |
- var instance = m.newInstance(const Symbol(""), []).reflectee; |
- Expect.equals(new A<P>().runtimeType, instance.runtimeType); |
-} |