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

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

Issue 268623002: [html5lib] implement querySelector/querySelectorAll (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 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
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/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>&lt;-x-foo&gt;</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>&lt;-x-foo&gt;</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
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 }
OLDNEW
« no previous file with comments | « pkg/third_party/html5lib/pubspec.yaml ('k') | pkg/third_party/html5lib/test/parser_feature_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698