OLD | NEW |
(Empty) | |
| 1 /// Additional feature tests that aren't based on test data. |
| 2 library dom_test; |
| 3 |
| 4 import 'package:unittest/unittest.dart'; |
| 5 import 'package:html/dom.dart'; |
| 6 import 'package:html/parser.dart'; |
| 7 |
| 8 main() { |
| 9 group('Element', () { |
| 10 test('classes', () { |
| 11 final barBaz = new Element.html('<div class=" bar baz"></div>'); |
| 12 final quxBaz = new Element.html('<div class="qux baz "></div>'); |
| 13 expect(barBaz.className, ' bar baz'); |
| 14 expect(quxBaz.className, 'qux baz '); |
| 15 expect(barBaz.classes, ['bar', 'baz']); |
| 16 expect(quxBaz.classes, ['qux', 'baz']); |
| 17 }); |
| 18 }); |
| 19 |
| 20 group('Document', () { |
| 21 final doc = parse('<div id=foo>' |
| 22 '<div class=" bar baz"></div>' |
| 23 '<div class="qux baz "></div>' |
| 24 '<div id=Foo>'); |
| 25 |
| 26 test('getElementById', () { |
| 27 var foo = doc.body.nodes[0]; |
| 28 var Foo = foo.nodes[2]; |
| 29 expect(foo.id, 'foo'); |
| 30 expect(Foo.id, 'Foo'); |
| 31 expect(doc.getElementById('foo'), foo); |
| 32 expect(doc.getElementById('Foo'), Foo); |
| 33 }); |
| 34 |
| 35 test('getElementsByClassName', () { |
| 36 var foo = doc.body.nodes[0]; |
| 37 var barBaz = foo.nodes[0]; |
| 38 var quxBaz = foo.nodes[1]; |
| 39 expect(barBaz.className, ' bar baz'); |
| 40 expect(quxBaz.className, 'qux baz '); |
| 41 expect(doc.getElementsByClassName('baz'), [barBaz, quxBaz]); |
| 42 expect(doc.getElementsByClassName('bar '), [barBaz]); |
| 43 expect(doc.getElementsByClassName(' qux'), [quxBaz]); |
| 44 expect(doc.getElementsByClassName(' baz qux'), [quxBaz]); |
| 45 }); |
| 46 |
| 47 test('getElementsByTagName', () { |
| 48 var foo = doc.body.nodes[0]; |
| 49 var barBaz = foo.nodes[0]; |
| 50 var quxBaz = foo.nodes[1]; |
| 51 var Foo = foo.nodes[2]; |
| 52 expect(doc.getElementsByTagName('div'), [foo, barBaz, quxBaz, Foo]); |
| 53 }); |
| 54 }); |
| 55 |
| 56 group('fragments are flattened', () { |
| 57 test('add', () { |
| 58 var doc = parse('<body>'); |
| 59 doc.body.nodes.add(parseFragment('<x-foo>')); |
| 60 expect(doc.body.nodes[0].localName, 'x-foo'); |
| 61 doc.body.nodes.add(parseFragment('<x-bar>')); |
| 62 expect(doc.body.nodes[1].localName, 'x-bar'); |
| 63 }); |
| 64 |
| 65 test('addLast', () { |
| 66 var doc = parse('<body>'); |
| 67 doc.body.nodes.addLast(parseFragment('<x-foo>')); |
| 68 expect(doc.body.nodes[0].localName, 'x-foo'); |
| 69 doc.body.nodes.addLast(parseFragment('<x-bar>')); |
| 70 expect(doc.body.nodes[1].localName, 'x-bar'); |
| 71 }); |
| 72 |
| 73 test('addAll', () { |
| 74 var doc = parse('<body><x-a></x-a>'); |
| 75 doc.body.nodes.addAll([parseFragment('<x-b></x-b><x-c></x-c>')]); |
| 76 expect(doc.body.nodes[0].localName, 'x-a'); |
| 77 expect(doc.body.nodes[1].localName, 'x-b'); |
| 78 expect(doc.body.nodes[2].localName, 'x-c'); |
| 79 }); |
| 80 |
| 81 test('insert', () { |
| 82 var doc = parse('<body><x-a></x-a>'); |
| 83 doc.body.nodes.insert(0, parseFragment('<x-b></x-b><x-c></x-c>')); |
| 84 expect(doc.body.nodes[0].localName, 'x-b'); |
| 85 expect(doc.body.nodes[1].localName, 'x-c'); |
| 86 expect(doc.body.nodes[2].localName, 'x-a'); |
| 87 |
| 88 doc = parse('<body><x-a></x-a>'); |
| 89 doc.body.nodes.insert(1, parseFragment('<x-b></x-b><x-c></x-c>')); |
| 90 expect(doc.body.nodes[0].localName, 'x-a'); |
| 91 expect(doc.body.nodes[1].localName, 'x-b'); |
| 92 expect(doc.body.nodes[2].localName, 'x-c'); |
| 93 |
| 94 doc = parse('<body><x-a></x-a>'); |
| 95 doc.body.nodes.insert(0, parseFragment('<x-b></x-b>')); |
| 96 doc.body.nodes.insert(1, parseFragment('<x-c></x-c>')); |
| 97 expect(doc.body.nodes[0].localName, 'x-b'); |
| 98 expect(doc.body.nodes[1].localName, 'x-c'); |
| 99 expect(doc.body.nodes[2].localName, 'x-a'); |
| 100 }); |
| 101 |
| 102 test('insertAll', () { |
| 103 var doc = parse('<body><x-a></x-a>'); |
| 104 doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b><x-c></x-c>')]); |
| 105 expect(doc.body.nodes[0].localName, 'x-b'); |
| 106 expect(doc.body.nodes[1].localName, 'x-c'); |
| 107 expect(doc.body.nodes[2].localName, 'x-a'); |
| 108 expect(doc.body.nodes.length, 3); |
| 109 |
| 110 doc = parse('<body><x-a></x-a>'); |
| 111 doc.body.nodes.insertAll(1, [parseFragment('<x-b></x-b><x-c></x-c>')]); |
| 112 expect(doc.body.nodes[0].localName, 'x-a'); |
| 113 expect(doc.body.nodes[1].localName, 'x-b'); |
| 114 expect(doc.body.nodes[2].localName, 'x-c'); |
| 115 |
| 116 doc = parse('<body><x-a></x-a>'); |
| 117 doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b>')]); |
| 118 doc.body.nodes.insertAll(1, [parseFragment('<x-c></x-c>')]); |
| 119 expect(doc.body.nodes[0].localName, 'x-b'); |
| 120 expect(doc.body.nodes[1].localName, 'x-c'); |
| 121 expect(doc.body.nodes[2].localName, 'x-a'); |
| 122 }); |
| 123 |
| 124 test('operator []=', () { |
| 125 var doc = parse('<body><x-a></x-a>'); |
| 126 doc.body.nodes[0] = parseFragment('<x-b></x-b><x-c></x-c>'); |
| 127 expect(doc.body.nodes[0].localName, 'x-b'); |
| 128 expect(doc.body.nodes[1].localName, 'x-c'); |
| 129 expect(doc.body.nodes.length, 2); |
| 130 |
| 131 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 132 doc.body.nodes[1] = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 133 expect(doc.body.nodes[0].localName, 'x-a'); |
| 134 expect(doc.body.nodes[1].localName, 'y-b'); |
| 135 expect(doc.body.nodes[2].localName, 'y-c'); |
| 136 expect(doc.body.nodes[3].localName, 'x-c'); |
| 137 expect(doc.body.nodes.length, 4); |
| 138 }); |
| 139 |
| 140 test('setRange', () { |
| 141 var fragment = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 142 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 143 doc.body.nodes.setRange(1, 2, fragment.nodes, 0); |
| 144 expect(doc.body.nodes[0].localName, 'x-a'); |
| 145 expect(doc.body.nodes[1].localName, 'y-b'); |
| 146 expect(doc.body.nodes[2].localName, 'y-c'); |
| 147 expect(doc.body.nodes.length, 3); |
| 148 |
| 149 fragment = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 150 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 151 doc.body.nodes.setRange(1, 1, [fragment], 0); |
| 152 expect(doc.body.nodes[0].localName, 'x-a'); |
| 153 expect(doc.body.nodes[1].localName, 'y-b'); |
| 154 expect(doc.body.nodes[2].localName, 'y-c'); |
| 155 expect(doc.body.nodes[3].localName, 'x-c'); |
| 156 expect(doc.body.nodes.length, 4); |
| 157 }); |
| 158 |
| 159 test('replaceRange', () { |
| 160 var fragment = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 161 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 162 doc.body.nodes.replaceRange(1, 2, fragment.nodes); |
| 163 expect(doc.body.nodes[0].localName, 'x-a'); |
| 164 expect(doc.body.nodes[1].localName, 'y-b'); |
| 165 expect(doc.body.nodes[2].localName, 'y-c'); |
| 166 expect(doc.body.nodes[3].localName, 'x-c'); |
| 167 expect(doc.body.nodes.length, 4); |
| 168 |
| 169 fragment = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 170 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 171 doc.body.nodes.replaceRange(1, 2, [fragment]); |
| 172 expect(doc.body.nodes[0].localName, 'x-a'); |
| 173 expect(doc.body.nodes[1].localName, 'y-b'); |
| 174 expect(doc.body.nodes[2].localName, 'y-c'); |
| 175 expect(doc.body.nodes[3].localName, 'x-c'); |
| 176 expect(doc.body.nodes.length, 4); |
| 177 }); |
| 178 |
| 179 test('replaceWith', () { |
| 180 var fragment = parseFragment('<y-b></y-b><y-c></y-c>'); |
| 181 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>'); |
| 182 doc.body.nodes[1].replaceWith(fragment); |
| 183 expect(doc.body.nodes[0].localName, 'x-a'); |
| 184 expect(doc.body.nodes[1].localName, 'y-b'); |
| 185 expect(doc.body.nodes[2].localName, 'y-c'); |
| 186 expect(doc.body.nodes[3].localName, 'x-c'); |
| 187 expect(doc.body.nodes.length, 4); |
| 188 }); |
| 189 }); |
| 190 } |
OLD | NEW |