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