| OLD | NEW |
| 1 /// Additional feature tests that aren't based on test data. | 1 /// Additional feature tests that aren't based on test data. |
| 2 library dom_test; | 2 library dom_test; |
| 3 | 3 |
| 4 import 'package:unittest/unittest.dart'; | 4 import 'package:unittest/unittest.dart'; |
| 5 import 'package:html5lib/dom.dart'; |
| 5 import 'package:html5lib/parser.dart'; | 6 import 'package:html5lib/parser.dart'; |
| 6 | 7 |
| 7 main() { | 8 main() { |
| 8 group('Node.querySelector type selectors', () { | |
| 9 test('x-foo', () { | |
| 10 expect(parse('<x-foo>').body.querySelector('x-foo'), isNotNull); | |
| 11 }); | |
| 12 | 9 |
| 13 test('-x-foo', () { | 10 group('Element', () { |
| 14 var doc = parse('<body><-x-foo>'); | 11 test('classes', () { |
| 15 expect(doc.body.outerHtml, equals('<body><-x-foo></body>')); | 12 final barBaz = new Element.html('<div class=" bar baz"></div>'); |
| 16 expect(doc.body.querySelector('-x-foo'), isNull); | 13 final quxBaz = new Element.html('<div class="qux baz "></div>'); |
| 17 }); | 14 expect(barBaz.className, ' bar baz'); |
| 18 | 15 expect(quxBaz.className, 'qux baz '); |
| 19 test('foo123', () { | 16 expect(barBaz.classes, ['bar', 'baz']); |
| 20 expect(parse('<foo123>').body.querySelector('foo123'), isNotNull); | 17 expect(quxBaz.classes, ['qux', 'baz']); |
| 21 }); | |
| 22 | |
| 23 test('built from fragments', () { | |
| 24 var doc = parse('<body>'); | |
| 25 doc.body.nodes.add(parseFragment('<x-foo>')); | |
| 26 expect(doc.body.querySelector('x-foo'), isNotNull); | |
| 27 }); | |
| 28 | |
| 29 test('123 - invalid', () { | |
| 30 var doc = parse('<123>'); | |
| 31 expect(() => doc.body.querySelector('123'), throwsUnimplementedError); | |
| 32 }); | |
| 33 | |
| 34 test('x\\ny - not implemented', () { | |
| 35 var doc = parse('<x\\ny>'); | |
| 36 expect(() => doc.body.querySelector('x\\ny'), throwsUnimplementedError); | |
| 37 }); | 18 }); |
| 38 }); | 19 }); |
| 39 | 20 |
| 40 group('Node.querySelectorAll type selectors', () { | 21 group('Document', () { |
| 41 test('x-foo', () { | 22 final doc = parse('<div id=foo>' |
| 42 expect(parse('<x-foo>').body.querySelectorAll('x-foo').length, 1); | 23 '<div class=" bar baz"></div>' |
| 24 '<div class="qux baz "></div>' |
| 25 '<div id=Foo>'); |
| 26 |
| 27 test('getElementById', () { |
| 28 var foo = doc.body.nodes[0]; |
| 29 var Foo = foo.nodes[2]; |
| 30 expect(foo.id, 'foo'); |
| 31 expect(Foo.id, 'Foo'); |
| 32 expect(doc.getElementById('foo'), foo); |
| 33 expect(doc.getElementById('Foo'), Foo); |
| 43 }); | 34 }); |
| 44 | 35 |
| 45 test('-x-foo', () { | 36 test('getElementsByClassName', () { |
| 46 var doc = parse('<body><-x-foo>'); | 37 var foo = doc.body.nodes[0]; |
| 47 expect(doc.body.outerHtml, equals('<body><-x-foo></body>')); | 38 var barBaz = foo.nodes[0]; |
| 48 expect(doc.body.querySelectorAll('-x-foo').length, 0); | 39 var quxBaz = foo.nodes[1]; |
| 40 expect(barBaz.className, ' bar baz'); |
| 41 expect(quxBaz.className, 'qux baz '); |
| 42 expect(doc.getElementsByClassName('baz'), [barBaz, quxBaz]); |
| 43 expect(doc.getElementsByClassName('bar '), [barBaz]); |
| 44 expect(doc.getElementsByClassName(' qux'), [quxBaz]); |
| 45 expect(doc.getElementsByClassName(' baz qux'), [quxBaz]); |
| 49 }); | 46 }); |
| 50 | 47 |
| 51 test('foo123', () { | 48 test('getElementsByTagName', () { |
| 52 expect(parse('<foo123>').body.querySelectorAll('foo123').length, 1); | 49 var foo = doc.body.nodes[0]; |
| 53 }); | 50 var barBaz = foo.nodes[0]; |
| 54 | 51 var quxBaz = foo.nodes[1]; |
| 55 test('built from fragments', () { | 52 var Foo = foo.nodes[2]; |
| 56 var doc = parse('<body>'); | 53 expect(doc.getElementsByTagName('div'), [foo, barBaz, quxBaz, Foo]); |
| 57 doc.body.nodes.add(parseFragment('<x-foo></x-foo><x-foo>')); | |
| 58 expect(doc.body.querySelectorAll('x-foo').length, 2); | |
| 59 }); | |
| 60 | |
| 61 test('123 - invalid', () { | |
| 62 var doc = parse('<123>'); | |
| 63 expect(() => doc.body.querySelectorAll('123'), throwsUnimplementedError); | |
| 64 }); | |
| 65 | |
| 66 test('x\\ny - not implemented', () { | |
| 67 var doc = parse('<x\\ny>'); | |
| 68 expect(() => doc.body.querySelectorAll('x\\ny'), | |
| 69 throwsUnimplementedError); | |
| 70 }); | 54 }); |
| 71 }); | 55 }); |
| 72 | 56 |
| 73 group('fragments are flattened', () { | 57 group('fragments are flattened', () { |
| 74 test('add', () { | 58 test('add', () { |
| 75 var doc = parse('<body>'); | 59 var doc = parse('<body>'); |
| 76 doc.body.nodes.add(parseFragment('<x-foo>')); | 60 doc.body.nodes.add(parseFragment('<x-foo>')); |
| 77 expect(doc.body.nodes[0].localName, 'x-foo'); | 61 expect(doc.body.nodes[0].localName, 'x-foo'); |
| 78 doc.body.nodes.add(parseFragment('<x-bar>')); | 62 doc.body.nodes.add(parseFragment('<x-bar>')); |
| 79 expect(doc.body.nodes[1].localName, 'x-bar'); | 63 expect(doc.body.nodes[1].localName, 'x-bar'); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); | 182 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 199 doc.body.nodes[1].replaceWith(fragment); | 183 doc.body.nodes[1].replaceWith(fragment); |
| 200 expect(doc.body.nodes[0].localName, 'x-a'); | 184 expect(doc.body.nodes[0].localName, 'x-a'); |
| 201 expect(doc.body.nodes[1].localName, 'y-b'); | 185 expect(doc.body.nodes[1].localName, 'y-b'); |
| 202 expect(doc.body.nodes[2].localName, 'y-c'); | 186 expect(doc.body.nodes[2].localName, 'y-c'); |
| 203 expect(doc.body.nodes[3].localName, 'x-c'); | 187 expect(doc.body.nodes[3].localName, 'x-c'); |
| 204 expect(doc.body.nodes.length, 4); | 188 expect(doc.body.nodes.length, 4); |
| 205 }); | 189 }); |
| 206 }); | 190 }); |
| 207 } | 191 } |
| OLD | NEW |