OLD | NEW |
| (Empty) |
1 <sky> | |
2 <import src="../resources/dom-utils.sky" as="DomUtils" /> | |
3 <script> | |
4 import "../resources/third_party/unittest/unittest.dart"; | |
5 import "../resources/unit.dart"; | |
6 | |
7 import "dart:sky"; | |
8 | |
9 void main() { | |
10 initUnit(); | |
11 | |
12 var doc; | |
13 | |
14 var childElementCount = DomUtils.childElementCount; | |
15 var childNodeCount = DomUtils.childNodeCount; | |
16 | |
17 setUp(() { | |
18 doc = new Document(); | |
19 }); | |
20 | |
21 test("should allow replacing the document element", () { | |
22 var oldChild = doc.appendChild(doc.createElement("div")); | |
23 expect(childElementCount(doc), equals(1)); | |
24 var newChild = doc.createElement("div"); | |
25 oldChild.replaceWith([newChild]); | |
26 expect(childElementCount(doc), equals(1)); | |
27 expect(newChild.parentNode, equals(doc)); | |
28 expect(oldChild.parentNode, isNull); | |
29 }); | |
30 | |
31 test("should allow replacing a text child with an element", () { | |
32 var oldChild = doc.appendChild(new Text("text here")); | |
33 expect(childElementCount(doc), equals(0)); | |
34 expect(childNodeCount(doc), equals(1)); | |
35 var newChild = doc.createElement("div"); | |
36 oldChild.replaceWith([newChild]); | |
37 expect(childElementCount(doc), equals(1)); | |
38 expect(childNodeCount(doc), equals(1)); | |
39 expect(newChild.parentNode, equals(doc)); | |
40 expect(oldChild.parentNode, isNull); | |
41 }); | |
42 | |
43 test("should allow replacing the document element with text", () { | |
44 var oldChild = doc.appendChild(doc.createElement("div")); | |
45 expect(childElementCount(doc), equals(1)); | |
46 var newChild = new Text(" text "); | |
47 oldChild.replaceWith([newChild]); | |
48 expect(childElementCount(doc), equals(0)); | |
49 expect(childNodeCount(doc), equals(1)); | |
50 expect(newChild.parentNode, equals(doc)); | |
51 expect(oldChild.parentNode, isNull); | |
52 }); | |
53 | |
54 test("should allow inserting text with a fragment", () { | |
55 var fragment = doc.createDocumentFragment(); | |
56 fragment.appendChild(new Text(" text ")); | |
57 fragment.appendChild(new Text(" text ")); | |
58 expect(childNodeCount(doc), equals(0)); | |
59 doc.appendChild(fragment); | |
60 expect(childElementCount(doc), equals(0)); | |
61 expect(childNodeCount(doc), equals(2)); | |
62 }); | |
63 | |
64 test("should allow replacing the document element with a fragment", () { | |
65 var oldChild = doc.appendChild(doc.createElement("div")); | |
66 expect(childElementCount(doc), equals(1)); | |
67 var fragment = doc.createDocumentFragment(); | |
68 fragment.appendChild(new Text(" text ")); | |
69 var newChild = fragment.appendChild(doc.createElement("div")); | |
70 fragment.appendChild(new Text(" ")); | |
71 oldChild.replaceWith([fragment]); | |
72 expect(childElementCount(doc), equals(1)); | |
73 expect(childNodeCount(doc), equals(3)); | |
74 expect(newChild.parentNode, equals(doc)); | |
75 expect(oldChild.parentNode, isNull); | |
76 }); | |
77 | |
78 test("should throw when inserting multiple elements", () { | |
79 doc.appendChild(doc.createElement("div")); | |
80 var oldChild = doc.appendChild(new Text(" text ")); | |
81 expect(childElementCount(doc), equals(1)); | |
82 var newChild = doc.createElement("div"); | |
83 // expect(() { | |
84 // doc.replaceChild(newChild, 0); | |
85 // }, throws); | |
86 // expect(() { | |
87 // doc.insertBefore(newChild, oldChild); | |
88 // }, throws); | |
89 }); | |
90 | |
91 test("should throw when inserting multiple elements with a fragment", () { | |
92 var oldChild = doc.appendChild(doc.createElement("div")); | |
93 expect(childElementCount(doc), equals(1)); | |
94 var fragment = doc.createDocumentFragment(); | |
95 fragment.appendChild(new Text(" text ")); | |
96 fragment.appendChild(doc.createElement("div")); | |
97 fragment.appendChild(doc.createElement("div")); | |
98 fragment.appendChild(new Text(" ")); | |
99 // expect(() { | |
100 // doc.replaceChild(fragment, 0); | |
101 // }, throws); | |
102 // expect(() { | |
103 // doc.insertBefore(fragment, oldChild); | |
104 // }, throws); | |
105 }); | |
106 } | |
107 </script> | |
108 </sky> | |
OLD | NEW |