OLD | NEW |
1 #library('HiddenDom2Test'); | 1 #library('HiddenDom2Test'); |
2 #import('../../pkg/unittest/unittest.dart'); | 2 #import('../../pkg/unittest/unittest.dart'); |
3 #import('../../pkg/unittest/html_config.dart'); | 3 #import('../../pkg/unittest/html_config.dart'); |
4 #import('dart:html'); | 4 #import('dart:html'); |
5 | 5 |
6 // Test that the dart:html API does not leak native jsdom methods: | 6 // Test that the dart:html API does not leak native jsdom methods: |
7 // appendChild operation. | 7 // appendChild operation. |
8 | 8 |
9 main() { | 9 main() { |
10 useHtmlConfiguration(); | 10 useHtmlConfiguration(); |
11 | 11 |
12 test('test1', () { | 12 test('test1', () { |
13 document.body.elements.add(new Element.html(r''' | 13 document.body.elements.add(new Element.html(r''' |
14 <div id='div1'> | 14 <div id='div1'> |
15 Hello World! | 15 Hello World! |
16 </div>''')); | 16 </div>''')); |
17 Element e = document.query('#div1'); | 17 Element e = document.query('#div1'); |
18 Element e2 = new Element.html(r"<div id='xx'>XX</div>"); | 18 Element e2 = new Element.html(r"<div id='xx'>XX</div>"); |
19 Expect.isTrue(e != null); | 19 expect(e, isNotNull); |
20 | 20 |
21 checkNoSuchMethod(() { confuse(e).appendChild(e2); }); | 21 checkNoSuchMethod(() { confuse(e).appendChild(e2); }); |
22 | 22 |
23 }); | 23 }); |
24 } | 24 } |
25 | 25 |
26 class Decoy { | 26 class Decoy { |
27 void appendChild(x) { throw 'dead code'; } | 27 void appendChild(x) { throw 'dead code'; } |
28 } | 28 } |
29 | 29 |
30 confuse(x) => opaqueTrue() ? x : (opaqueTrue() ? new Object() : new Decoy()); | 30 confuse(x) => opaqueTrue() ? x : (opaqueTrue() ? new Object() : new Decoy()); |
31 | 31 |
32 /** Returns [:true:], but in a way that confuses the compiler. */ | 32 /** Returns [:true:], but in a way that confuses the compiler. */ |
33 opaqueTrue() => true; // Expand as needed. | 33 opaqueTrue() => true; // Expand as needed. |
34 | 34 |
35 checkNoSuchMethod(action()) { | 35 checkNoSuchMethod(action()) { |
36 var ex = null; | 36 var ex = null; |
37 bool threw = false; | 37 bool threw = false; |
38 try { | 38 try { |
39 action(); | 39 action(); |
40 } catch (e) { | 40 } catch (e) { |
41 threw = true; | 41 threw = true; |
42 ex = e; | 42 ex = e; |
43 } | 43 } |
44 if (!threw) | 44 if (!threw) |
45 Expect.fail('Action should have thrown exception'); | 45 expect(false, isTrue, reason: 'Action should have thrown exception'); |
46 | 46 |
47 Expect.isTrue(ex is NoSuchMethodError, 'ex is NoSuchMethodError'); | 47 expect(ex, new isInstanceOf<NoSuchMethodError>('NoSuchMethodError')); |
48 } | 48 } |
OLD | NEW |