Index: tests/compiler/dart2js_native/core_type_check_native_test.dart |
diff --git a/tests/compiler/dart2js_native/core_type_check_native_test.dart b/tests/compiler/dart2js_native/core_type_check_native_test.dart |
index cdfc737a5e85cae8319fa677b6227147c27ed58f..de64aef468aae312d271f1b4e8c7837579e8525a 100644 |
--- a/tests/compiler/dart2js_native/core_type_check_native_test.dart |
+++ b/tests/compiler/dart2js_native/core_type_check_native_test.dart |
@@ -4,12 +4,7 @@ |
import "package:expect/expect.dart"; |
-check(value, expectComparable, expectPattern) { |
- Expect.equals(expectComparable, value is Comparable); |
- Expect.equals(expectPattern, value is Pattern); |
-} |
- |
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1)); |
+var inscrutable = (int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1)); |
class A native "*A" { |
} |
@@ -39,18 +34,44 @@ function D() {}; |
makeD = function() { return new D; } |
"""; |
+ |
+checkTest(value, expectComparable, expectPattern) { |
+ Expect.equals(expectComparable, value is Comparable); |
+ Expect.equals(expectPattern, value is Pattern); |
+} |
+ |
+checkCast(value, expectComparable, expectPattern) { |
+ if (expectComparable) { |
+ Expect.identical(value, value as Comparable); |
+ } else { |
+ Expect.throws(() => value as Comparable); |
+ } |
+ if (expectPattern) { |
+ Expect.identical(value, value as Pattern); |
+ } else { |
+ Expect.throws(() => value as Pattern); |
+ } |
+} |
+ |
+checkAll(check) { |
+ var things = |
+ [[], 4, 4.2, 'foo', new Object(), makeA(), makeB(), makeC(), makeD()]; |
+ value(i) => things[inscrutable(i)]; |
+ |
+ check(value(0), false, false); // List |
+ check(value(1), true, false); // int |
+ check(value(2), true, false); // num |
+ check(value(3), true, true); // String |
+ check(value(4), false, false); // Object |
+ check(value(5), false, false); // A |
+ check(value(6), true, false); // B |
+ check(value(7), false, true); // C |
+ check(value(8), true, true); // D |
+} |
+ |
main() { |
setup(); |
- var things = [[], 4, 4.2, 'foo', new Object(), makeA(), makeB(), |
- makeC(), makeD()]; |
- |
- check(things[inscrutable(0)], false, false); // List |
- check(things[inscrutable(1)], true, false); // int |
- check(things[inscrutable(2)], true, false); // num |
- check(things[inscrutable(3)], true, true); // string |
- check(things[inscrutable(4)], false, false); // Object |
- check(things[inscrutable(5)], false, false); // A |
- check(things[inscrutable(6)], true, false); // B |
- check(things[inscrutable(7)], false, true); // C |
- check(things[inscrutable(8)], true, true); // D |
+ |
+ checkAll(checkTest); |
+ checkAll(checkCast); |
} |