OLD | NEW |
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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 | 6 |
7 class InstanceofTest { | 7 class InstanceofTest { |
8 | |
9 InstanceofTest() {} | 8 InstanceofTest() {} |
10 | 9 |
11 static void testBasicTypes() { | 10 static void testBasicTypes() { |
12 Expect.equals(true, 0 is int); | 11 Expect.equals(true, 0 is int); |
13 Expect.equals(false, (0 is bool)); | 12 Expect.equals(false, (0 is bool)); |
14 Expect.equals(false, (0 is String)); | 13 Expect.equals(false, (0 is String)); |
15 Expect.equals(true, 1 is int); | 14 Expect.equals(true, 1 is int); |
16 Expect.equals(false, (1 is bool)); | 15 Expect.equals(false, (1 is bool)); |
17 Expect.equals(false, (1 is String)); | 16 Expect.equals(false, (1 is String)); |
18 | 17 |
(...skipping 29 matching lines...) Expand all Loading... |
48 Expect.equals(true, c is I); | 47 Expect.equals(true, c is I); |
49 Expect.equals(true, c is J); | 48 Expect.equals(true, c is J); |
50 Expect.equals(true, c is K); | 49 Expect.equals(true, c is K); |
51 | 50 |
52 var d = new D(); | 51 var d = new D(); |
53 Expect.equals(true, d is I); | 52 Expect.equals(true, d is I); |
54 Expect.equals(true, d is J); | 53 Expect.equals(true, d is J); |
55 Expect.equals(true, d is K); | 54 Expect.equals(true, d is K); |
56 | 55 |
57 Expect.equals(true, [] is List); | 56 Expect.equals(true, [] is List); |
58 Expect.equals(true, [1,2,3] is List); | 57 Expect.equals(true, [1, 2, 3] is List); |
59 Expect.equals(false, (d is List)); | 58 Expect.equals(false, (d is List)); |
60 Expect.equals(false, (null is List)); | 59 Expect.equals(false, (null is List)); |
61 Expect.equals(false, (null is D)); | 60 Expect.equals(false, (null is D)); |
62 } | 61 } |
63 | 62 |
64 static void testnum() { | 63 static void testnum() { |
65 Expect.equals(true, 0 is num); | 64 Expect.equals(true, 0 is num); |
66 Expect.equals(true, 123 is num); | 65 Expect.equals(true, 123 is num); |
67 Expect.equals(true, 123.34 is num); | 66 Expect.equals(true, 123.34 is num); |
68 Expect.equals(false, ("123" is num)); | 67 Expect.equals(false, ("123" is num)); |
69 Expect.equals(false, (null is num)); | 68 Expect.equals(false, (null is num)); |
70 Expect.equals(false, (true is num)); | 69 Expect.equals(false, (true is num)); |
71 Expect.equals(false, (false is num)); | 70 Expect.equals(false, (false is num)); |
72 var a = new A(); | 71 var a = new A(); |
73 Expect.equals(false, (a is num)); | 72 Expect.equals(false, (a is num)); |
74 } | 73 } |
75 | 74 |
76 | |
77 static void testTypeOfInstanceOf() { | 75 static void testTypeOfInstanceOf() { |
78 var a = new A(); | 76 var a = new A(); |
79 // Interfaces with parent | 77 // Interfaces with parent |
80 var c = new C(); | 78 var c = new C(); |
81 var d = new D(); | 79 var d = new D(); |
82 | 80 |
83 Expect.equals(true, (null is int) is bool); | 81 Expect.equals(true, (null is int) is bool); |
84 Expect.equals(true, (null is bool) is bool); | 82 Expect.equals(true, (null is bool) is bool); |
85 Expect.equals(true, (null is String) is bool); | 83 Expect.equals(true, (null is String) is bool); |
86 Expect.equals(true, (null is A) is bool); | 84 Expect.equals(true, (null is A) is bool); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 static void testMain() { | 162 static void testMain() { |
165 testBasicTypes(); | 163 testBasicTypes(); |
166 // TODO(sra): enable after fixing b/4604295 | 164 // TODO(sra): enable after fixing b/4604295 |
167 // testnum(); | 165 // testnum(); |
168 testInterfaces(); | 166 testInterfaces(); |
169 testTypeOfInstanceOf(); | 167 testTypeOfInstanceOf(); |
170 } | 168 } |
171 } | 169 } |
172 | 170 |
173 abstract class I {} | 171 abstract class I {} |
174 class A implements I {A() {}} | 172 |
175 class B {B() {}} | 173 class A implements I { |
| 174 A() {} |
| 175 } |
| 176 |
| 177 class B { |
| 178 B() {} |
| 179 } |
176 | 180 |
177 abstract class J {} | 181 abstract class J {} |
178 | 182 |
179 abstract class K implements J {} | 183 abstract class K implements J {} |
180 class C implements I, K {C() {}} | |
181 | 184 |
182 class D extends C {D() : super() {}} | 185 class C implements I, K { |
| 186 C() {} |
| 187 } |
| 188 |
| 189 class D extends C { |
| 190 D() : super() {} |
| 191 } |
183 | 192 |
184 main() { | 193 main() { |
185 // Repeat type checks so that inlined tests can be tested as well. | 194 // Repeat type checks so that inlined tests can be tested as well. |
186 for (int i = 0; i < 5; i++) { | 195 for (int i = 0; i < 5; i++) { |
187 InstanceofTest.testMain(); | 196 InstanceofTest.testMain(); |
188 } | 197 } |
189 } | 198 } |
190 | |
OLD | NEW |