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

Side by Side Diff: pkg/third_party/html5lib/test/dom_test.dart

Issue 224733003: Fix how document fragments are added on NodeList operations (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months 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 | Annotate | Revision Log
« no previous file with comments | « pkg/third_party/html5lib/pubspec.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/parser.dart'; 5 import 'package:html5lib/parser.dart';
6 6
7 main() { 7 main() {
8 group('Node.querySelector type selectors', () { 8 group('Node.querySelector type selectors', () {
9 test('x-foo', () { 9 test('x-foo', () {
10 expect(parse('<x-foo>').body.querySelector('x-foo'), isNotNull); 10 expect(parse('<x-foo>').body.querySelector('x-foo'), isNotNull);
11 }); 11 });
12 12
13 test('-x-foo', () { 13 test('-x-foo', () {
14 var doc = parse('<body><-x-foo>'); 14 var doc = parse('<body><-x-foo>');
15 expect(doc.body.outerHtml, equals('<body>&lt;-x-foo&gt;</body>')); 15 expect(doc.body.outerHtml, equals('<body>&lt;-x-foo&gt;</body>'));
16 expect(doc.body.querySelector('-x-foo'), isNull); 16 expect(doc.body.querySelector('-x-foo'), isNull);
17 }); 17 });
18 18
19 test('foo123', () { 19 test('foo123', () {
20 expect(parse('<foo123>').body.querySelector('foo123'), isNotNull); 20 expect(parse('<foo123>').body.querySelector('foo123'), isNotNull);
21 }); 21 });
22 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
23 test('123 - invalid', () { 29 test('123 - invalid', () {
24 var doc = parse('<123>'); 30 var doc = parse('<123>');
25 expect(() => doc.body.querySelector('123'), throwsUnimplementedError); 31 expect(() => doc.body.querySelector('123'), throwsUnimplementedError);
26 }); 32 });
27 33
28 test('x\\ny - not implemented', () { 34 test('x\\ny - not implemented', () {
29 var doc = parse('<x\\ny>'); 35 var doc = parse('<x\\ny>');
30 expect(() => doc.body.querySelector('x\\ny'), throwsUnimplementedError); 36 expect(() => doc.body.querySelector('x\\ny'), throwsUnimplementedError);
31 }); 37 });
32 }); 38 });
39
40 group('Node.querySelectorAll type selectors', () {
41 test('x-foo', () {
42 expect(parse('<x-foo>').body.querySelectorAll('x-foo').length, 1);
43 });
44
45 test('-x-foo', () {
46 var doc = parse('<body><-x-foo>');
47 expect(doc.body.outerHtml, equals('<body>&lt;-x-foo&gt;</body>'));
48 expect(doc.body.querySelectorAll('-x-foo').length, 0);
49 });
50
51 test('foo123', () {
52 expect(parse('<foo123>').body.querySelectorAll('foo123').length, 1);
53 });
54
55 test('built from fragments', () {
56 var doc = parse('<body>');
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 });
71 });
72
73 group('fragments are flattened', () {
74 test('add', () {
75 var doc = parse('<body>');
76 doc.body.nodes.add(parseFragment('<x-foo>'));
77 expect(doc.body.nodes[0].localName, 'x-foo');
78 doc.body.nodes.add(parseFragment('<x-bar>'));
79 expect(doc.body.nodes[1].localName, 'x-bar');
80 });
81
82 test('addLast', () {
83 var doc = parse('<body>');
84 doc.body.nodes.addLast(parseFragment('<x-foo>'));
85 expect(doc.body.nodes[0].localName, 'x-foo');
86 doc.body.nodes.addLast(parseFragment('<x-bar>'));
87 expect(doc.body.nodes[1].localName, 'x-bar');
88 });
89
90 test('addAll', () {
91 var doc = parse('<body><x-a></x-a>');
92 doc.body.nodes.addAll([parseFragment('<x-b></x-b><x-c></x-c>')]);
93 expect(doc.body.nodes[0].localName, 'x-a');
94 expect(doc.body.nodes[1].localName, 'x-b');
95 expect(doc.body.nodes[2].localName, 'x-c');
96 });
97
98 test('insert', () {
99 var doc = parse('<body><x-a></x-a>');
100 doc.body.nodes.insert(0, parseFragment('<x-b></x-b><x-c></x-c>'));
101 expect(doc.body.nodes[0].localName, 'x-b');
102 expect(doc.body.nodes[1].localName, 'x-c');
103 expect(doc.body.nodes[2].localName, 'x-a');
104
105 doc = parse('<body><x-a></x-a>');
106 doc.body.nodes.insert(1, parseFragment('<x-b></x-b><x-c></x-c>'));
107 expect(doc.body.nodes[0].localName, 'x-a');
108 expect(doc.body.nodes[1].localName, 'x-b');
109 expect(doc.body.nodes[2].localName, 'x-c');
110
111 doc = parse('<body><x-a></x-a>');
112 doc.body.nodes.insert(0, parseFragment('<x-b></x-b>'));
113 doc.body.nodes.insert(1, parseFragment('<x-c></x-c>'));
114 expect(doc.body.nodes[0].localName, 'x-b');
115 expect(doc.body.nodes[1].localName, 'x-c');
116 expect(doc.body.nodes[2].localName, 'x-a');
117 });
118
119 test('insertAll', () {
120 var doc = parse('<body><x-a></x-a>');
121 doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b><x-c></x-c>')]);
122 expect(doc.body.nodes[0].localName, 'x-b');
123 expect(doc.body.nodes[1].localName, 'x-c');
124 expect(doc.body.nodes[2].localName, 'x-a');
125 expect(doc.body.nodes.length, 3);
126
127 doc = parse('<body><x-a></x-a>');
128 doc.body.nodes.insertAll(1, [parseFragment('<x-b></x-b><x-c></x-c>')]);
129 expect(doc.body.nodes[0].localName, 'x-a');
130 expect(doc.body.nodes[1].localName, 'x-b');
131 expect(doc.body.nodes[2].localName, 'x-c');
132
133 doc = parse('<body><x-a></x-a>');
134 doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b>')]);
135 doc.body.nodes.insertAll(1, [parseFragment('<x-c></x-c>')]);
136 expect(doc.body.nodes[0].localName, 'x-b');
137 expect(doc.body.nodes[1].localName, 'x-c');
138 expect(doc.body.nodes[2].localName, 'x-a');
139 });
140
141 test('operator []=', () {
142 var doc = parse('<body><x-a></x-a>');
143 doc.body.nodes[0] = parseFragment('<x-b></x-b><x-c></x-c>');
144 expect(doc.body.nodes[0].localName, 'x-b');
145 expect(doc.body.nodes[1].localName, 'x-c');
146 expect(doc.body.nodes.length, 2);
147
148 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
149 doc.body.nodes[1] = parseFragment('<y-b></y-b><y-c></y-c>');
150 expect(doc.body.nodes[0].localName, 'x-a');
151 expect(doc.body.nodes[1].localName, 'y-b');
152 expect(doc.body.nodes[2].localName, 'y-c');
153 expect(doc.body.nodes[3].localName, 'x-c');
154 expect(doc.body.nodes.length, 4);
155 });
156
157 test('setRange', () {
158 var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
159 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
160 doc.body.nodes.setRange(1, 2, fragment.nodes, 0);
161 expect(doc.body.nodes[0].localName, 'x-a');
162 expect(doc.body.nodes[1].localName, 'y-b');
163 expect(doc.body.nodes[2].localName, 'y-c');
164 expect(doc.body.nodes.length, 3);
165
166 fragment = parseFragment('<y-b></y-b><y-c></y-c>');
167 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
168 doc.body.nodes.setRange(1, 1, [fragment], 0);
169 expect(doc.body.nodes[0].localName, 'x-a');
170 expect(doc.body.nodes[1].localName, 'y-b');
171 expect(doc.body.nodes[2].localName, 'y-c');
172 expect(doc.body.nodes[3].localName, 'x-c');
173 expect(doc.body.nodes.length, 4);
174 });
175
176 test('replaceRange', () {
177 var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
178 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
179 doc.body.nodes.replaceRange(1, 2, fragment.nodes);
180 expect(doc.body.nodes[0].localName, 'x-a');
181 expect(doc.body.nodes[1].localName, 'y-b');
182 expect(doc.body.nodes[2].localName, 'y-c');
183 expect(doc.body.nodes[3].localName, 'x-c');
184 expect(doc.body.nodes.length, 4);
185
186 fragment = parseFragment('<y-b></y-b><y-c></y-c>');
187 doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
188 doc.body.nodes.replaceRange(1, 2, [fragment]);
189 expect(doc.body.nodes[0].localName, 'x-a');
190 expect(doc.body.nodes[1].localName, 'y-b');
191 expect(doc.body.nodes[2].localName, 'y-c');
192 expect(doc.body.nodes[3].localName, 'x-c');
193 expect(doc.body.nodes.length, 4);
194 });
195
196 test('replaceWith', () {
197 var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
198 var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
199 doc.body.nodes[1].replaceWith(fragment);
200 expect(doc.body.nodes[0].localName, 'x-a');
201 expect(doc.body.nodes[1].localName, 'y-b');
202 expect(doc.body.nodes[2].localName, 'y-c');
203 expect(doc.body.nodes[3].localName, 'x-c');
204 expect(doc.body.nodes.length, 4);
205 });
206 });
33 } 207 }
OLDNEW
« no previous file with comments | « pkg/third_party/html5lib/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698