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

Unified Diff: packages/html/test/dom_test.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/html/test/data/tree-construction/webkit02.dat ('k') | packages/html/test/parser_feature_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/html/test/dom_test.dart
diff --git a/packages/html/test/dom_test.dart b/packages/html/test/dom_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..d4e0809f2fb4289fa10779ab9d0804dfb7b3a6a1
--- /dev/null
+++ b/packages/html/test/dom_test.dart
@@ -0,0 +1,190 @@
+/// Additional feature tests that aren't based on test data.
+library dom_test;
+
+import 'package:unittest/unittest.dart';
+import 'package:html/dom.dart';
+import 'package:html/parser.dart';
+
+main() {
+ group('Element', () {
+ test('classes', () {
+ final barBaz = new Element.html('<div class=" bar baz"></div>');
+ final quxBaz = new Element.html('<div class="qux baz "></div>');
+ expect(barBaz.className, ' bar baz');
+ expect(quxBaz.className, 'qux baz ');
+ expect(barBaz.classes, ['bar', 'baz']);
+ expect(quxBaz.classes, ['qux', 'baz']);
+ });
+ });
+
+ group('Document', () {
+ final doc = parse('<div id=foo>'
+ '<div class=" bar baz"></div>'
+ '<div class="qux baz "></div>'
+ '<div id=Foo>');
+
+ test('getElementById', () {
+ var foo = doc.body.nodes[0];
+ var Foo = foo.nodes[2];
+ expect(foo.id, 'foo');
+ expect(Foo.id, 'Foo');
+ expect(doc.getElementById('foo'), foo);
+ expect(doc.getElementById('Foo'), Foo);
+ });
+
+ test('getElementsByClassName', () {
+ var foo = doc.body.nodes[0];
+ var barBaz = foo.nodes[0];
+ var quxBaz = foo.nodes[1];
+ expect(barBaz.className, ' bar baz');
+ expect(quxBaz.className, 'qux baz ');
+ expect(doc.getElementsByClassName('baz'), [barBaz, quxBaz]);
+ expect(doc.getElementsByClassName('bar '), [barBaz]);
+ expect(doc.getElementsByClassName(' qux'), [quxBaz]);
+ expect(doc.getElementsByClassName(' baz qux'), [quxBaz]);
+ });
+
+ test('getElementsByTagName', () {
+ var foo = doc.body.nodes[0];
+ var barBaz = foo.nodes[0];
+ var quxBaz = foo.nodes[1];
+ var Foo = foo.nodes[2];
+ expect(doc.getElementsByTagName('div'), [foo, barBaz, quxBaz, Foo]);
+ });
+ });
+
+ 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);
+ });
+ });
+}
« no previous file with comments | « packages/html/test/data/tree-construction/webkit02.dat ('k') | packages/html/test/parser_feature_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698