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

Side by Side Diff: tests/compiler/dart2js_native/core_type_check_native_test.dart

Issue 2379173002: Add native_testing library to mock @Native classes (Closed)
Patch Set: xxx 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
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 "dart:_js_helper"; 5 import "native_testing.dart";
6 import "package:expect/expect.dart";
7
8 var inscrutable = (int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
9 6
10 @Native("A") 7 @Native("A")
11 class A {} 8 class A {}
12 9
13 @Native("B") 10 @Native("B")
14 class B implements Comparable {} 11 class B implements Comparable {}
15 12
16 @Native("C") 13 @Native("C")
17 class C implements Pattern {} 14 class C implements Pattern {}
18 15
19 @Native("D") 16 @Native("D")
20 class D implements Pattern, Comparable {} 17 class D implements Pattern, Comparable {}
21 18
22 makeA() native ; 19 makeA() native ;
23 makeB() native ; 20 makeB() native ;
24 makeC() native ; 21 makeC() native ;
25 makeD() native ; 22 makeD() native ;
26 23
27 void setup() native """ 24 void setup() native """
28 function A() {}; 25 function A() {};
29 makeA = function() { return new A; } 26 makeA = function() { return new A; }
30 function B() {}; 27 function B() {};
31 makeB = function() { return new B; } 28 makeB = function() { return new B; }
32 function C() {}; 29 function C() {};
33 makeC = function() { return new C; } 30 makeC = function() { return new C; }
34 function D() {}; 31 function D() {};
35 makeD = function() { return new D; } 32 makeD = function() { return new D; }
33
34 self.nativeConstructor(A);
35 self.nativeConstructor(B);
36 self.nativeConstructor(C);
37 self.nativeConstructor(D);
36 """; 38 """;
37 39
38 checkTest(value, expectComparable, expectPattern) { 40 checkTest(value, expectComparable, expectPattern) {
39 Expect.equals(expectComparable, value is Comparable); 41 Expect.equals(expectComparable, value is Comparable);
40 Expect.equals(expectPattern, value is Pattern); 42 Expect.equals(expectPattern, value is Pattern);
41 } 43 }
42 44
43 checkCast(value, expectComparable, expectPattern) { 45 checkCast(value, expectComparable, expectPattern) {
44 if (expectComparable) { 46 if (expectComparable) {
45 Expect.identical(value, value as Comparable); 47 Expect.identical(value, value as Comparable);
(...skipping 12 matching lines...) Expand all
58 [], 60 [],
59 4, 61 4,
60 4.2, 62 4.2,
61 'foo', 63 'foo',
62 new Object(), 64 new Object(),
63 makeA(), 65 makeA(),
64 makeB(), 66 makeB(),
65 makeC(), 67 makeC(),
66 makeD() 68 makeD()
67 ]; 69 ];
68 value(i) => things[inscrutable(i)]; 70 value(i) => confuse(things[i]);
69 71
70 check(value(0), false, false); // List 72 check(value(0), false, false); // List
71 check(value(1), true, false); // int 73 check(value(1), true, false); // int
72 check(value(2), true, false); // num 74 check(value(2), true, false); // num
73 check(value(3), true, true); // String 75 check(value(3), true, true); // String
74 check(value(4), false, false); // Object 76 check(value(4), false, false); // Object
75 check(value(5), false, false); // A 77 check(value(5), false, false); // A
76 check(value(6), true, false); // B 78 check(value(6), true, false); // B
77 check(value(7), false, true); // C 79 check(value(7), false, true); // C
78 check(value(8), true, true); // D 80 check(value(8), true, true); // D
79 } 81 }
80 82
81 main() { 83 main() {
84 nativeTesting();
82 setup(); 85 setup();
83 86
84 checkAll(checkTest); 87 checkAll(checkTest);
85 checkAll(checkCast); 88 checkAll(checkCast);
86 } 89 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698