| Index: pkg/third_party/html5lib/test/dom_test.dart
|
| diff --git a/pkg/third_party/html5lib/test/dom_test.dart b/pkg/third_party/html5lib/test/dom_test.dart
|
| index 43a963732acb31c96c3ea03a1966dbde47aba2cb..99dfb0147696516314e36d6f32a6e2f3bda68d6f 100644
|
| --- a/pkg/third_party/html5lib/test/dom_test.dart
|
| +++ b/pkg/third_party/html5lib/test/dom_test.dart
|
| @@ -20,6 +20,12 @@ main() {
|
| expect(parse('<foo123>').body.querySelector('foo123'), isNotNull);
|
| });
|
|
|
| + test('built from fragments', () {
|
| + var doc = parse('<body>');
|
| + doc.body.nodes.add(parseFragment('<x-foo>'));
|
| + expect(doc.body.querySelector('x-foo'), isNotNull);
|
| + });
|
| +
|
| test('123 - invalid', () {
|
| var doc = parse('<123>');
|
| expect(() => doc.body.querySelector('123'), throwsUnimplementedError);
|
| @@ -30,4 +36,172 @@ main() {
|
| expect(() => doc.body.querySelector('x\\ny'), throwsUnimplementedError);
|
| });
|
| });
|
| +
|
| + group('Node.querySelectorAll type selectors', () {
|
| + test('x-foo', () {
|
| + expect(parse('<x-foo>').body.querySelectorAll('x-foo').length, 1);
|
| + });
|
| +
|
| + test('-x-foo', () {
|
| + var doc = parse('<body><-x-foo>');
|
| + expect(doc.body.outerHtml, equals('<body><-x-foo></body>'));
|
| + expect(doc.body.querySelectorAll('-x-foo').length, 0);
|
| + });
|
| +
|
| + test('foo123', () {
|
| + expect(parse('<foo123>').body.querySelectorAll('foo123').length, 1);
|
| + });
|
| +
|
| + test('built from fragments', () {
|
| + var doc = parse('<body>');
|
| + doc.body.nodes.add(parseFragment('<x-foo></x-foo><x-foo>'));
|
| + expect(doc.body.querySelectorAll('x-foo').length, 2);
|
| + });
|
| +
|
| + test('123 - invalid', () {
|
| + var doc = parse('<123>');
|
| + expect(() => doc.body.querySelectorAll('123'), throwsUnimplementedError);
|
| + });
|
| +
|
| + test('x\\ny - not implemented', () {
|
| + var doc = parse('<x\\ny>');
|
| + expect(() => doc.body.querySelectorAll('x\\ny'),
|
| + throwsUnimplementedError);
|
| + });
|
| + });
|
| +
|
| + group('fragments are flattened', () {
|
| + test('add', () {
|
| + var doc = parse('<body>');
|
| + doc.body.nodes.add(parseFragment('<x-foo>'));
|
| + expect(doc.body.nodes[0].localName, 'x-foo');
|
| + doc.body.nodes.add(parseFragment('<x-bar>'));
|
| + expect(doc.body.nodes[1].localName, 'x-bar');
|
| + });
|
| +
|
| + test('addLast', () {
|
| + var doc = parse('<body>');
|
| + doc.body.nodes.addLast(parseFragment('<x-foo>'));
|
| + expect(doc.body.nodes[0].localName, 'x-foo');
|
| + doc.body.nodes.addLast(parseFragment('<x-bar>'));
|
| + expect(doc.body.nodes[1].localName, 'x-bar');
|
| + });
|
| +
|
| + test('addAll', () {
|
| + var doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.addAll([parseFragment('<x-b></x-b><x-c></x-c>')]);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'x-b');
|
| + expect(doc.body.nodes[2].localName, 'x-c');
|
| + });
|
| +
|
| + test('insert', () {
|
| + var doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insert(0, parseFragment('<x-b></x-b><x-c></x-c>'));
|
| + expect(doc.body.nodes[0].localName, 'x-b');
|
| + expect(doc.body.nodes[1].localName, 'x-c');
|
| + expect(doc.body.nodes[2].localName, 'x-a');
|
| +
|
| + doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insert(1, parseFragment('<x-b></x-b><x-c></x-c>'));
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'x-b');
|
| + expect(doc.body.nodes[2].localName, 'x-c');
|
| +
|
| + doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insert(0, parseFragment('<x-b></x-b>'));
|
| + doc.body.nodes.insert(1, parseFragment('<x-c></x-c>'));
|
| + expect(doc.body.nodes[0].localName, 'x-b');
|
| + expect(doc.body.nodes[1].localName, 'x-c');
|
| + expect(doc.body.nodes[2].localName, 'x-a');
|
| + });
|
| +
|
| + test('insertAll', () {
|
| + var doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b><x-c></x-c>')]);
|
| + expect(doc.body.nodes[0].localName, 'x-b');
|
| + expect(doc.body.nodes[1].localName, 'x-c');
|
| + expect(doc.body.nodes[2].localName, 'x-a');
|
| + expect(doc.body.nodes.length, 3);
|
| +
|
| + doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insertAll(1, [parseFragment('<x-b></x-b><x-c></x-c>')]);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'x-b');
|
| + expect(doc.body.nodes[2].localName, 'x-c');
|
| +
|
| + doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes.insertAll(0, [parseFragment('<x-b></x-b>')]);
|
| + doc.body.nodes.insertAll(1, [parseFragment('<x-c></x-c>')]);
|
| + expect(doc.body.nodes[0].localName, 'x-b');
|
| + expect(doc.body.nodes[1].localName, 'x-c');
|
| + expect(doc.body.nodes[2].localName, 'x-a');
|
| + });
|
| +
|
| + test('operator []=', () {
|
| + var doc = parse('<body><x-a></x-a>');
|
| + doc.body.nodes[0] = parseFragment('<x-b></x-b><x-c></x-c>');
|
| + expect(doc.body.nodes[0].localName, 'x-b');
|
| + expect(doc.body.nodes[1].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 2);
|
| +
|
| + doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes[1] = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes[3].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 4);
|
| + });
|
| +
|
| + test('setRange', () {
|
| + var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes.setRange(1, 2, fragment.nodes, 0);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes.length, 3);
|
| +
|
| + fragment = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes.setRange(1, 1, [fragment], 0);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes[3].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 4);
|
| + });
|
| +
|
| + test('replaceRange', () {
|
| + var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes.replaceRange(1, 2, fragment.nodes);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes[3].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 4);
|
| +
|
| + fragment = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes.replaceRange(1, 2, [fragment]);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes[3].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 4);
|
| + });
|
| +
|
| + test('replaceWith', () {
|
| + var fragment = parseFragment('<y-b></y-b><y-c></y-c>');
|
| + var doc = parse('<body><x-a></x-a><x-b></x-b><x-c></x-c>');
|
| + doc.body.nodes[1].replaceWith(fragment);
|
| + expect(doc.body.nodes[0].localName, 'x-a');
|
| + expect(doc.body.nodes[1].localName, 'y-b');
|
| + expect(doc.body.nodes[2].localName, 'y-c');
|
| + expect(doc.body.nodes[3].localName, 'x-c');
|
| + expect(doc.body.nodes.length, 4);
|
| + });
|
| + });
|
| }
|
|
|