Index: tests/language/first_class_types_literals_test.dart |
diff --git a/tests/language/first_class_types_literals_test.dart b/tests/language/first_class_types_literals_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9e8093f4d482d230dac875d4d06f074c57072cc1 |
--- /dev/null |
+++ b/tests/language/first_class_types_literals_test.dart |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2012, 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. |
+ |
ahe
2012/11/05 09:47:05
Please add a comment explaining what this test doe
|
+class C<T> {} |
+ |
+class D {} |
+ |
+typedef int Foo(bool b); |
+ |
+sameType(a, b) { |
ahe
2012/11/05 09:47:05
This method is not called.
|
+ Expect.identical(a.runtimeType, b.runtimeType); |
+} |
+ |
+differentType(a, b) { |
ahe
2012/11/05 09:47:05
This method is not called.
|
+ print("a: ${a.runtimeType}"); |
+ print("b: ${b.runtimeType}"); |
+ Expect.isFalse(a.runtimeType === b.runtimeType); |
ahe
2012/11/05 09:47:05
The === operator is deprecated.
|
+} |
+ |
+main() { |
+ // Test type literals. |
+ Expect.identical(int, int); |
+ Expect.isFalse(int === num); |
ahe
2012/11/05 09:47:05
Ditto
|
+ Expect.identical(Foo, Foo); |
+ |
+ // Test that class literals return instances of Type. |
+ Expect.isTrue((D).runtimeType is Type); |
+ |
+ // Test that types from runtimeType and literals agree. |
+ Expect.identical(int, 1.runtimeType); |
+ Expect.identical(C, new C().runtimeType); |
+ Expect.identical(D, new D().runtimeType); |
+ |
+ // runtimeType on type is idempotent. |
+ Expect.identical((D).runtimeType, (D).runtimeType.runtimeType); |
+ |
+ // Test that operator calls on class literals go to Type. |
+ Expect.throws(() => C = 1, (e) => e is NoSuchMethodError); |
+ Expect.throws(() => C++, (e) => e is NoSuchMethodError); |
+ Expect.throws(() => C + 1, (e) => e is NoSuchMethodError); |
+ Expect.throws(() => C[2], (e) => e is NoSuchMethodError); |
+ Expect.throws(() => C[2] = 'hest', (e) => e is NoSuchMethodError); |
+} |