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

Side by Side Diff: tests/compiler/dart2js/type_substitution_test.dart

Issue 2345083003: dart2js: run dartfmt on tests (Closed)
Patch Set: revert another multipart test Created 4 years, 3 months 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
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library type_substitution_test; 5 library type_substitution_test;
6 6
7 import 'package:expect/expect.dart'; 7 import 'package:expect/expect.dart';
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import 'package:compiler/src/dart_types.dart'; 9 import 'package:compiler/src/dart_types.dart';
10 import 'compiler_helper.dart'; 10 import 'compiler_helper.dart';
(...skipping 30 matching lines...) Expand all
41 41
42 void testAsInstanceOf() { 42 void testAsInstanceOf() {
43 asyncTest(() => TypeEnvironment.create(''' 43 asyncTest(() => TypeEnvironment.create('''
44 class A<T> {} 44 class A<T> {}
45 class B<T> {} 45 class B<T> {}
46 class C<T> extends A<T> {} 46 class C<T> extends A<T> {}
47 class D<T> extends A<int> {} 47 class D<T> extends A<int> {}
48 class E<T> extends A<A<T>> {} 48 class E<T> extends A<A<T>> {}
49 class F<T, U> extends B<F<T, String>> implements A<F<B<U>, int>> {} 49 class F<T, U> extends B<F<T, String>> implements A<F<B<U>, int>> {}
50 ''').then((env) { 50 ''').then((env) {
51 var compiler = env.compiler; 51 var compiler = env.compiler;
52 52
53 ClassElement A = env.getElement("A"); 53 ClassElement A = env.getElement("A");
54 ClassElement B = env.getElement("B"); 54 ClassElement B = env.getElement("B");
55 ClassElement C = env.getElement("C"); 55 ClassElement C = env.getElement("C");
56 ClassElement D = env.getElement("D"); 56 ClassElement D = env.getElement("D");
57 ClassElement E = env.getElement("E"); 57 ClassElement E = env.getElement("E");
58 ClassElement F = env.getElement("F"); 58 ClassElement F = env.getElement("F");
59 59
60 DartType numType = env['num']; 60 DartType numType = env['num'];
61 DartType intType = env['int']; 61 DartType intType = env['int'];
62 DartType stringType = env['String']; 62 DartType stringType = env['String'];
63 63
64 InterfaceType C_int = instantiate(C, [intType]); 64 InterfaceType C_int = instantiate(C, [intType]);
65 Expect.equals(instantiate(C, [intType]), C_int); 65 Expect.equals(instantiate(C, [intType]), C_int);
66 Expect.equals(instantiate(A, [intType]), C_int.asInstanceOf(A)); 66 Expect.equals(instantiate(A, [intType]), C_int.asInstanceOf(A));
67 67
68 InterfaceType D_int = instantiate(D, [stringType]); 68 InterfaceType D_int = instantiate(D, [stringType]);
69 Expect.equals(instantiate(A, [intType]), D_int.asInstanceOf(A)); 69 Expect.equals(instantiate(A, [intType]), D_int.asInstanceOf(A));
70 70
71 InterfaceType E_int = instantiate(E, [intType]); 71 InterfaceType E_int = instantiate(E, [intType]);
72 Expect.equals(instantiate(A, [instantiate(A, [intType])]), 72 Expect.equals(
73 E_int.asInstanceOf(A)); 73 instantiate(A, [
74 instantiate(A, [intType])
75 ]),
76 E_int.asInstanceOf(A));
74 77
75 InterfaceType F_int_string = instantiate(F, [intType, stringType]); 78 InterfaceType F_int_string = instantiate(F, [intType, stringType]);
76 Expect.equals(instantiate(B, [instantiate(F, [intType, stringType])]), 79 Expect.equals(
77 F_int_string.asInstanceOf(B)); 80 instantiate(B, [
78 Expect.equals(instantiate(A, [instantiate(F, [instantiate(B, [stringType]), 81 instantiate(F, [intType, stringType])
79 intType])]), 82 ]),
80 F_int_string.asInstanceOf(A)); 83 F_int_string.asInstanceOf(B));
81 84 Expect.equals(
82 })); 85 instantiate(A, [
86 instantiate(F, [
87 instantiate(B, [stringType]),
88 intType
89 ])
90 ]),
91 F_int_string.asInstanceOf(A));
92 }));
83 } 93 }
84 94
85 /** 95 /**
86 * Test that substitution of [parameters] by [arguments] in the type found 96 * Test that substitution of [parameters] by [arguments] in the type found
87 * through [name1] is the same as the type found through [name2]. 97 * through [name1] is the same as the type found through [name2].
88 */ 98 */
89 void testSubstitution(compiler, arguments, parameters, 99 void testSubstitution(
90 String name1, String name2) { 100 compiler, arguments, parameters, String name1, String name2) {
91 DartType type1 = getType(compiler, name1); 101 DartType type1 = getType(compiler, name1);
92 DartType type2 = getType(compiler, name2); 102 DartType type2 = getType(compiler, name2);
93 DartType subst = type1.subst(arguments, parameters); 103 DartType subst = type1.subst(arguments, parameters);
94 Expect.equals(type2, subst, 104 Expect.equals(
95 "$type1.subst($arguments,$parameters)=$subst != $type2"); 105 type2, subst, "$type1.subst($arguments,$parameters)=$subst != $type2");
96 } 106 }
97 107
98 void testTypeSubstitution() { 108 void testTypeSubstitution() {
99 asyncTest(() => TypeEnvironment.create(r""" 109 asyncTest(() => TypeEnvironment.create(r"""
100 typedef void Typedef1<X,Y>(X x1, Y y2); 110 typedef void Typedef1<X,Y>(X x1, Y y2);
101 typedef void Typedef2<Z>(Z z1); 111 typedef void Typedef2<Z>(Z z1);
102 112
103 class Class<T,S> { 113 class Class<T,S> {
104 void void1() {} 114 void void1() {}
105 void void2() {} 115 void void2() {}
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 void Typedef1b(Typedef1<dynamic,dynamic> a) {} 152 void Typedef1b(Typedef1<dynamic,dynamic> a) {}
143 void Typedef2b(Typedef1<dynamic,dynamic> b) {} 153 void Typedef2b(Typedef1<dynamic,dynamic> b) {}
144 void Typedef1c(Typedef1 a) {} 154 void Typedef1c(Typedef1 a) {}
145 void Typedef2c(Typedef1 b) {} 155 void Typedef2c(Typedef1 b) {}
146 void Typedef1d(Typedef2<T> a) {} 156 void Typedef1d(Typedef2<T> a) {}
147 void Typedef2d(Typedef2<int> b) {} 157 void Typedef2d(Typedef2<int> b) {}
148 void Typedef1e(Typedef2<S> a) {} 158 void Typedef1e(Typedef2<S> a) {}
149 void Typedef2e(Typedef2<String> b) {} 159 void Typedef2e(Typedef2<String> b) {}
150 } 160 }
151 """).then((env) { 161 """).then((env) {
152 var compiler = env.compiler; 162 var compiler = env.compiler;
153 163
154 InterfaceType Class_T_S = env["Class"]; 164 InterfaceType Class_T_S = env["Class"];
155 Expect.isNotNull(Class_T_S); 165 Expect.isNotNull(Class_T_S);
156 Expect.identical(Class_T_S.kind, TypeKind.INTERFACE); 166 Expect.identical(Class_T_S.kind, TypeKind.INTERFACE);
157 Expect.equals(2, Class_T_S.typeArguments.length); 167 Expect.equals(2, Class_T_S.typeArguments.length);
158 168
159 DartType T = Class_T_S.typeArguments[0]; 169 DartType T = Class_T_S.typeArguments[0];
160 Expect.isNotNull(T); 170 Expect.isNotNull(T);
161 Expect.identical(T.kind, TypeKind.TYPE_VARIABLE); 171 Expect.identical(T.kind, TypeKind.TYPE_VARIABLE);
162 172
163 DartType S = Class_T_S.typeArguments[1]; 173 DartType S = Class_T_S.typeArguments[1];
164 Expect.isNotNull(S); 174 Expect.isNotNull(S);
165 Expect.identical(S.kind, TypeKind.TYPE_VARIABLE); 175 Expect.identical(S.kind, TypeKind.TYPE_VARIABLE);
166 176
167 DartType intType = env['int'];//getType(compiler, "int1"); 177 DartType intType = env['int']; //getType(compiler, "int1");
168 Expect.isNotNull(intType); 178 Expect.isNotNull(intType);
169 Expect.identical(intType.kind, TypeKind.INTERFACE); 179 Expect.identical(intType.kind, TypeKind.INTERFACE);
170 180
171 DartType StringType = env['String'];//getType(compiler, "String1"); 181 DartType StringType = env['String']; //getType(compiler, "String1");
172 Expect.isNotNull(StringType); 182 Expect.isNotNull(StringType);
173 Expect.identical(StringType.kind, TypeKind.INTERFACE); 183 Expect.identical(StringType.kind, TypeKind.INTERFACE);
174 184
175 List<DartType> parameters = <DartType>[T, S]; 185 List<DartType> parameters = <DartType>[T, S];
176 List<DartType> arguments = <DartType>[intType, StringType]; 186 List<DartType> arguments = <DartType>[intType, StringType];
177 187
178 // TODO(johnniwinther): Create types directly from strings to improve test 188 // TODO(johnniwinther): Create types directly from strings to improve te st
179 // readability. 189 // readability.
180 190
181 testSubstitution(compiler, arguments, parameters, "void1", "void2"); 191 testSubstitution(compiler, arguments, parameters, "void1", "void2");
182 testSubstitution(compiler, arguments, parameters, "dynamic1", "dynamic2"); 192 testSubstitution(
183 testSubstitution(compiler, arguments, parameters, "int1", "int2"); 193 compiler, arguments, parameters, "dynamic1", "dynamic2");
184 testSubstitution(compiler, arguments, parameters, "String1", "String2"); 194 testSubstitution(compiler, arguments, parameters, "int1", "int2");
185 testSubstitution(compiler, arguments, parameters, "ListInt1", "ListInt2"); 195 testSubstitution(compiler, arguments, parameters, "String1", "String2");
186 testSubstitution(compiler, arguments, parameters, "ListT1", "ListT2"); 196 testSubstitution(
187 testSubstitution(compiler, arguments, parameters, "ListS1", "ListS2"); 197 compiler, arguments, parameters, "ListInt1", "ListInt2");
188 testSubstitution(compiler, arguments, parameters, "ListListT1", "ListListT2" ); 198 testSubstitution(compiler, arguments, parameters, "ListT1", "ListT2");
189 testSubstitution(compiler, arguments, parameters, "ListRaw1", "ListRaw2"); 199 testSubstitution(compiler, arguments, parameters, "ListS1", "ListS2");
190 testSubstitution(compiler, arguments, parameters, 200 testSubstitution(
191 "ListDynamic1", "ListDynamic2"); 201 compiler, arguments, parameters, "ListListT1", "ListListT2");
192 testSubstitution(compiler, arguments, parameters, 202 testSubstitution(
193 "MapIntString1", "MapIntString2"); 203 compiler, arguments, parameters, "ListRaw1", "ListRaw2");
194 testSubstitution(compiler, arguments, parameters, 204 testSubstitution(
195 "MapTString1", "MapTString2"); 205 compiler, arguments, parameters, "ListDynamic1", "ListDynamic2");
196 testSubstitution(compiler, arguments, parameters, 206 testSubstitution(
197 "MapDynamicString1", "MapDynamicString2"); 207 compiler, arguments, parameters, "MapIntString1", "MapIntString2");
198 testSubstitution(compiler, arguments, parameters, "TypeVarT1", "TypeVarT2"); 208 testSubstitution(
199 testSubstitution(compiler, arguments, parameters, "TypeVarS1", "TypeVarS2"); 209 compiler, arguments, parameters, "MapTString1", "MapTString2");
200 testSubstitution(compiler, arguments, parameters, "Function1a", "Function2a" ); 210 testSubstitution(compiler, arguments, parameters, "MapDynamicString1",
201 testSubstitution(compiler, arguments, parameters, "Function1b", "Function2b" ); 211 "MapDynamicString2");
202 testSubstitution(compiler, arguments, parameters, "Function1c", "Function2c" ); 212 testSubstitution(
203 testSubstitution(compiler, arguments, parameters, "Typedef1a", "Typedef2a"); 213 compiler, arguments, parameters, "TypeVarT1", "TypeVarT2");
204 testSubstitution(compiler, arguments, parameters, "Typedef1b", "Typedef2b"); 214 testSubstitution(
205 testSubstitution(compiler, arguments, parameters, "Typedef1c", "Typedef2c"); 215 compiler, arguments, parameters, "TypeVarS1", "TypeVarS2");
206 testSubstitution(compiler, arguments, parameters, "Typedef1d", "Typedef2d"); 216 testSubstitution(
207 testSubstitution(compiler, arguments, parameters, "Typedef1e", "Typedef2e"); 217 compiler, arguments, parameters, "Function1a", "Function2a");
218 testSubstitution(
219 compiler, arguments, parameters, "Function1b", "Function2b");
220 testSubstitution(
221 compiler, arguments, parameters, "Function1c", "Function2c");
222 testSubstitution(
223 compiler, arguments, parameters, "Typedef1a", "Typedef2a");
224 testSubstitution(
225 compiler, arguments, parameters, "Typedef1b", "Typedef2b");
226 testSubstitution(
227 compiler, arguments, parameters, "Typedef1c", "Typedef2c");
228 testSubstitution(
229 compiler, arguments, parameters, "Typedef1d", "Typedef2d");
230 testSubstitution(
231 compiler, arguments, parameters, "Typedef1e", "Typedef2e");
208 232
209 // Substitution in unalias. 233 // Substitution in unalias.
210 DartType Typedef2_int_String = getType(compiler, "Typedef2a"); 234 DartType Typedef2_int_String = getType(compiler, "Typedef2a");
211 Expect.isNotNull(Typedef2_int_String); 235 Expect.isNotNull(Typedef2_int_String);
212 DartType Function_int_String = getType(compiler, "Function2b"); 236 DartType Function_int_String = getType(compiler, "Function2b");
213 Expect.isNotNull(Function_int_String); 237 Expect.isNotNull(Function_int_String);
214 DartType unalias1 = Typedef2_int_String.unaliased; 238 DartType unalias1 = Typedef2_int_String.unaliased;
215 Expect.equals(Function_int_String, unalias1, 239 Expect.equals(Function_int_String, unalias1,
216 '$Typedef2_int_String.unalias=$unalias1 != $Function_int_String'); 240 '$Typedef2_int_String.unalias=$unalias1 != $Function_int_String');
217 241
218 DartType Typedef1 = getType(compiler, "Typedef1c"); 242 DartType Typedef1 = getType(compiler, "Typedef1c");
219 Expect.isNotNull(Typedef1); 243 Expect.isNotNull(Typedef1);
220 DartType Function_dynamic_dynamic = getType(compiler, "Function1c"); 244 DartType Function_dynamic_dynamic = getType(compiler, "Function1c");
221 Expect.isNotNull(Function_dynamic_dynamic); 245 Expect.isNotNull(Function_dynamic_dynamic);
222 DartType unalias2 = Typedef1.unaliased; 246 DartType unalias2 = Typedef1.unaliased;
223 Expect.equals(Function_dynamic_dynamic, unalias2, 247 Expect.equals(Function_dynamic_dynamic, unalias2,
224 '$Typedef1.unalias=$unalias2 != $Function_dynamic_dynamic'); 248 '$Typedef1.unalias=$unalias2 != $Function_dynamic_dynamic');
225 })); 249 }));
226 } 250 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/type_representation_test.dart ('k') | tests/compiler/dart2js/type_test_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698