Index: client/tests/client/html/ElementTests.dart |
diff --git a/client/tests/client/html/ElementTests.dart b/client/tests/client/html/ElementTests.dart |
index d14f0625ad562f15cc7ff80c90004c04436a95fb..38c608a238f8e033b5db67c6c5e2521b619ec743 100644 |
--- a/client/tests/client/html/ElementTests.dart |
+++ b/client/tests/client/html/ElementTests.dart |
@@ -41,6 +41,11 @@ void testConstructorHelper(String tag, String htmlSnippet, |
Expect.equals(elementFromSnippet.text, expectedText); |
} |
+Element makeElement() => new Element.tag('div'); |
+ |
+Element makeElementWithChildren() => |
+ new Element.html("<div><br/><img/><input/></div>"); |
+ |
void testElement() { |
asyncTest('computedStyle', 1, () { |
final element = document.body; |
@@ -389,4 +394,145 @@ void testElement() { |
// attributes['style'] = 'width: 300px;'; |
// Expect.equals(attributes.length, 5);*/ |
}); |
+ |
+ group('elements', () { |
+ test('is a subset of nodes', () { |
+ var el = new Element.html("<div>Foo<br/><img/></div>"); |
+ Expect.equals(3, el.nodes.length); |
+ Expect.equals(2, el.elements.length); |
+ Expect.equals(el.nodes[1], el.elements[0]); |
+ Expect.equals(el.nodes[2], el.elements[1]); |
+ }); |
+ |
+ test('changes when an element is added to nodes', () { |
+ var el = new Element.html("<div>Foo<br/><img/></div>"); |
+ el.nodes.add(new Element.tag('hr')); |
+ Expect.equals(3, el.elements.length); |
+ Expect.isTrue(el.elements[2] is HRElement); |
+ Expect.equals(el.nodes[3], el.elements[2]); |
+ }); |
+ |
+ test('changes nodes when an element is added', () { |
+ var el = new Element.html("<div>Foo<br/><img/></div>"); |
+ el.elements.add(new Element.tag('hr')); |
+ Expect.equals(4, el.nodes.length); |
+ Expect.isTrue(el.nodes[3] is HRElement); |
+ Expect.equals(el.elements[2], el.nodes[3]); |
+ }); |
+ |
+ test('first', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements.first is BRElement); |
+ }); |
+ |
+ test('last', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements.last() is InputElement); |
+ }); |
+ |
+ test('forEach', () { |
+ var els = []; |
+ var el = makeElementWithChildren(); |
+ el.elements.forEach((n) => els.add(n)); |
+ Expect.isTrue(els[0] is BRElement); |
+ Expect.isTrue(els[1] is ImageElement); |
+ Expect.isTrue(els[2] is InputElement); |
+ }); |
+ |
+ test('filter', () { |
+ var filtered = makeElementWithChildren().elements. |
+ filter((n) => n is ImageElement); |
+ Expect.equals(1, filtered.length); |
+ Expect.isTrue(filtered[0] is ImageElement); |
+ }); |
+ |
+ test('every', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements.every((n) => n is Element)); |
+ Expect.isFalse(el.elements.every((n) => n is InputElement)); |
+ }); |
+ |
+ test('some', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements.some((n) => n is InputElement)); |
+ Expect.isFalse(el.elements.some((n) => n is SVGElement)); |
+ }); |
+ |
+ test('isEmpty', () { |
+ Expect.isTrue(makeElement().elements.isEmpty()); |
+ Expect.isFalse(makeElementWithChildren().elements.isEmpty()); |
+ }); |
+ |
+ test('length', () { |
+ Expect.equals(0, makeElement().elements.length); |
+ Expect.equals(3, makeElementWithChildren().elements.length); |
+ }); |
+ |
+ test('[]', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements[0] is BRElement); |
+ Expect.isTrue(el.elements[1] is ImageElement); |
+ Expect.isTrue(el.elements[2] is InputElement); |
+ }); |
+ |
+ test('[]=', () { |
+ var el = makeElementWithChildren(); |
+ el.elements[1] = new Element.tag('hr'); |
+ Expect.isTrue(el.elements[0] is BRElement); |
+ Expect.isTrue(el.elements[1] is HRElement); |
+ Expect.isTrue(el.elements[2] is InputElement); |
+ }); |
+ |
+ test('add', () { |
+ var el = makeElement(); |
+ el.elements.add(new Element.tag('hr')); |
+ Expect.isTrue(el.elements.last() is HRElement); |
+ }); |
+ |
+ test('addLast', () { |
+ var el = makeElement(); |
+ el.elements.addLast(new Element.tag('hr')); |
+ Expect.isTrue(el.elements.last() is HRElement); |
+ }); |
+ |
+ test('iterator', () { |
+ var els = []; |
+ var el = makeElementWithChildren(); |
+ for (var subel in el.elements) { |
+ els.add(subel); |
+ } |
+ Expect.isTrue(els[0] is BRElement); |
+ Expect.isTrue(els[1] is ImageElement); |
+ Expect.isTrue(els[2] is InputElement); |
+ }); |
+ |
+ test('addAll', () { |
+ var el = makeElementWithChildren(); |
+ el.elements.addAll([ |
+ new Element.tag('span'), |
+ new Element.tag('a'), |
+ new Element.tag('h1') |
+ ]); |
+ Expect.isTrue(el.elements[0] is BRElement); |
+ Expect.isTrue(el.elements[1] is ImageElement); |
+ Expect.isTrue(el.elements[2] is InputElement); |
+ Expect.isTrue(el.elements[3] is SpanElement); |
+ Expect.isTrue(el.elements[4] is AnchorElement); |
+ Expect.isTrue(el.elements[5] is HeadingElement); |
+ }); |
+ |
+ test('clear', () { |
+ var el = makeElementWithChildren(); |
+ el.elements.clear(); |
+ Expect.listEquals([], el.elements); |
+ }); |
+ |
+ test('removeLast', () { |
+ var el = makeElementWithChildren(); |
+ Expect.isTrue(el.elements.removeLast() is InputElement); |
+ Expect.equals(2, el.elements.length); |
+ Expect.isTrue(el.elements.removeLast() is ImageElement); |
+ Expect.equals(1, el.elements.length); |
+ }); |
+ }); |
} |