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

Side by Side Diff: tests/kernel/unsorted/types_test.dart

Issue 2451893004: Revert "Reland "Merge more Kernel infrastructure from kernel_sdk SDK fork."" (Closed)
Patch Set: Created 4 years, 1 month 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
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 import 'expect.dart';
6
7 class TypeTester<T> {
8 const TypeTester();
9 bool isCorrectType(object) => object is T;
10 }
11
12 class ClosureTypeTester<T> {
13 const ClosureTypeTester();
14 bool isCorrectType(object) => (() => object is T)();
15 }
16
17 class Base<A, B> {
18 final A a;
19 final B b;
20 const Base(this.a, this.b);
21 const factory Base.fac(A a, B b) = Base<A, B>;
22 }
23
24 class Sub1<C, D> extends Base<C, C> {
25 final D d;
26 const Sub1(C a, this.d) : super(a, a);
27 const factory Sub1.fac(C a, D d) = Sub1<C, D>;
28 }
29
30 class Sub2<C, D> extends Base<D, C> {
31 const Sub2(C a, D b) : super(b, a);
32 const factory Sub2.fac(C a, D b) = Sub2<C, D>;
33 }
34
35 class G<T> { }
36 class I { }
37 class A implements I { }
38 class B extends A { }
39 class C {}
40
41 testConstantLiteralTypes() {
42 Expect.isTrue(const [1] is List);
43 Expect.isTrue(const [1] is List<int>);
44 Expect.isTrue(const [1] is List<String>);
45 Expect.isTrue(const <int>[1] is List);
46 Expect.isTrue(const <int>[1] is List<int>);
47 Expect.isTrue(!(const <int>[1] is List<String>));
48 Expect.isTrue(const {"a": 1} is Map);
49 Expect.isTrue(const {"a": 1} is Map<String, int>);
50 Expect.isTrue(const {"a": 1} is Map<int, String>);
51 Expect.isTrue(const <String, int>{"a": 1} is Map);
52 Expect.isTrue(const <String, int>{"a": 1} is Map<String, int>);
53 Expect.isTrue(!(const <String, int>{"a": 1} is Map<int, String>));
54 }
55
56 testNonConstantLiteralTypes() {
57 Expect.isTrue([1] is List);
58 Expect.isTrue([1] is List<int>);
59 Expect.isTrue([1] is List<String>);
60 Expect.isTrue(<int>[1] is List);
61 Expect.isTrue(<int>[1] is List<int>);
62 Expect.isTrue(!(<int>[1] is List<String>));
63 }
64
65 testParametrizedClass() {
66 Expect.isTrue(new Base<int, int>(1, 1) is Base<int, int>);
67 Expect.isTrue(new Base<int, int>(1, 1) is Base);
68 Expect.isTrue(new Base<int, int>(1, 1) is Base<Object, Object>);
69 Expect.isTrue(!(new Base<int, int>(1, 1) is Base<int, String>));
70 Expect.isTrue(!(new Base<int, int>(1, 1) is Base<String, int>));
71 Expect.isTrue(new Sub1<int, String>(1, "1") is Base<int, int>);
72 Expect.isTrue(new Sub1<int, String>(1, "1") is Base);
73 Expect.isTrue(new Sub1<int, String>(1, "1") is Sub1<int, String>);
74 Expect.isTrue(new Sub1<int, String>(1, "1") is Sub1);
75 Expect.isTrue(!(new Sub1<int, String>(1, "1") is Base<String, int>));
76 Expect.isTrue(!(new Sub1<int, String>(1, "1") is Base<int, String>));
77 Expect.isTrue(!(new Sub1<int, String>(1, "1") is Sub1<String, String>));
78 Expect.isTrue(new Sub2<int, String>(1, "1") is Base<String, int>);
79 Expect.isTrue(new Sub2<int, String>(1, "1") is Base);
80 Expect.isTrue(new Sub2<int, String>(1, "1") is Sub2<int, String>);
81 Expect.isTrue(new Sub2<int, String>(1, "1") is Sub2);
82 Expect.isTrue(!(new Sub2<int, String>(1, "1") is Base<int, int>));
83 Expect.isTrue(!(new Sub2<int, String>(1, "1") is Base<int, String>));
84 Expect.isTrue(!(new Sub2<int, String>(1, "1") is Sub2<String, String>));
85 }
86
87 testTypeTester() {
88 Expect.isTrue(new TypeTester<int>().isCorrectType(10));
89 Expect.isTrue(!new TypeTester<int>().isCorrectType("abc"));
90 Expect.isTrue(new TypeTester<List<int>>().isCorrectType([1]));
91 Expect.isTrue(new TypeTester<List<int>>().isCorrectType(<int>[1]));
92 Expect.isTrue(!new TypeTester<List<int>>().isCorrectType(<String>["1"]));
93 Expect.isTrue(new TypeTester<Base<String, int>>()
94 .isCorrectType(new Sub2<int, String>(1, "1")));
95 Expect.isTrue(new TypeTester<Sub2<int, String>>()
96 .isCorrectType(new Sub2<int, String>(1, "1")));
97 }
98
99 testClosureTypeTester() {
100 Expect.isTrue(new ClosureTypeTester<int>().isCorrectType(10));
101 Expect.isTrue(!new ClosureTypeTester<int>().isCorrectType("abc"));
102 Expect.isTrue(new ClosureTypeTester<List<int>>().isCorrectType([1]));
103 Expect.isTrue(new ClosureTypeTester<List<int>>().isCorrectType(<int>[1]));
104 Expect.isTrue(!new ClosureTypeTester<List<int>>()
105 .isCorrectType(<String>["1"]));
106 Expect.isTrue(new ClosureTypeTester<Base<String, int>>()
107 .isCorrectType(new Sub2<int, String>(1, "1")));
108 Expect.isTrue(new ClosureTypeTester<Sub2<int, String>>()
109 .isCorrectType(new Sub2<int, String>(1, "1")));
110 }
111
112 testConstTypeArguments() {
113 Expect.isTrue(const Sub1<int, String>(1, "1") is Sub1<int, String>);
114 Expect.isTrue(const Sub1<int, String>.fac(1, "1") is Sub1<int, String>);
115 Expect.isTrue(!(const Sub1<int, String>(1, "1") is Sub1<String, String>));
116 Expect.isTrue(!(const Sub1<int, String>.fac(1, "1") is Sub1<String, String>));
117
118 Expect.isTrue(const ClosureTypeTester<List<Base<int, String>>>()
119 .isCorrectType(
120 const <Base<int, String>>[const Base<int, String>(1, "2")]));
121 Expect.isTrue(const ClosureTypeTester<List<Base<int, String>>>()
122 .isCorrectType(
123 const <Base<int, String>>[const Base<int, String>.fac(1, "2")]));
124 Expect.isTrue(!const ClosureTypeTester<List<Base<int, String>>>()
125 .isCorrectType(
126 const <Base<String, String>>[const Base<String, String>("1", "2")]));
127 Expect.isTrue(!const ClosureTypeTester<List<Base<int, String>>>()
128 .isCorrectType(
129 const <Base<String, String>>[const Base<String, String>.fac("1", "2")]));
130
131 Expect.isTrue(const TypeTester<Sub2<int, String>>()
132 .isCorrectType(const Sub2<int, String>(1, "1")));
133 Expect.isTrue(const TypeTester<Sub2<int, String>>()
134 .isCorrectType(const Sub2<int, String>.fac(1, "1")));
135 Expect.isTrue(!const TypeTester<Sub2<int, String>>()
136 .isCorrectType(const Sub2<String, String>("a", "b")));
137 Expect.isTrue(!const TypeTester<Sub2<int, String>>()
138 .isCorrectType(const Sub2<String, String>.fac("a", "b")));
139 }
140
141 testNoBound() {
142 new G<int>();
143 new G<num>();
144 new G<Function>();
145 new G<Object>();
146 new G();
147 new G();
148 new G<G>();
149 }
150
151 testSubtypeChecker() {
152 Expect.isTrue(new TypeTester<num>().isCorrectType(1));
153 Expect.isTrue(new TypeTester<num>().isCorrectType(1.0));
154 Expect.isTrue(new TypeTester<A>().isCorrectType(new B()));
155 Expect.isTrue(new TypeTester<Object>().isCorrectType(new C()));
156 Expect.isTrue(new TypeTester<I>().isCorrectType(new A()));
157 }
158
159 testFunctionTypes() {
160 fun(int x, String y) => "${x}${y}";
161 Expect.isTrue(fun is FunctionType);
162 Expect.isTrue(nan is FunctionType);
163 Expect.isTrue(nan is Function);
164 }
165
166 num nan(double d, Pattern p) => double.NAN;
167
168 typedef int FunctionType(num _, Pattern __);
169
170
171 testLiteralTypeArguments() {
172 Expect.isTrue(new Foo<String, int>().foo() is List<String>);
173 Expect.isTrue(new Foo<int, String>().bar() is Map<int, String>);
174 }
175
176 class Foo<T1, T2> {
177 foo() => <T1>[];
178 bar() => <T1, T2>{};
179 }
180
181 regressionTest1() {
182 Expect.isTrue(!StaticTypeTester.isInt('abc'));
183 }
184
185 class StaticTypeTester<T> {
186 static isInt(x) => x is int;
187 }
188
189 main() {
190 testConstantLiteralTypes();
191 testNonConstantLiteralTypes();
192 testParametrizedClass();
193 testTypeTester();
194 testClosureTypeTester();
195 testConstTypeArguments();
196 testNoBound();
197 testSubtypeChecker();
198 testFunctionTypes();
199 testLiteralTypeArguments();
200 regressionTest1();
201 }
202
OLDNEW
« no previous file with comments | « tests/kernel/unsorted/type_args_regression_test.dart ('k') | tests/language/language_kernel.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698