OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 #library('NodeTest'); | |
6 #import('../../../../lib/unittest/unittest.dart'); | |
7 #import('../../../../lib/unittest/html_config.dart'); | |
8 #import('dart:html'); | |
9 | |
10 Node makeNode() => new Element.tag('div'); | |
11 Node makeNodeWithChildren() => | |
12 new Element.html("<div>Foo<br/><!--baz--></div>"); | |
13 | |
14 main() { | |
15 useHtmlConfiguration(); | |
16 | |
17 test('replaceWith', () { | |
18 final node = makeNodeWithChildren(); | |
19 final subnode = node.nodes[1]; | |
20 final out = subnode.replaceWith(new Text('Bar')); | |
21 Expect.equals(subnode, out, '#replaceWith should be chainable'); | |
22 Expect.equals(3, node.nodes.length); | |
23 Expect.isTrue(node.nodes[0] is Text); | |
24 Expect.equals('Foo', node.nodes[0].text); | |
25 Expect.isTrue(node.nodes[1] is Text); | |
26 Expect.equals('Bar', node.nodes[1].text); | |
27 Expect.isTrue(node.nodes[2] is Comment); | |
28 }); | |
29 | |
30 test('remove', () { | |
31 final node = makeNodeWithChildren(); | |
32 final subnode = node.nodes[1]; | |
33 final out = subnode.remove(); | |
34 Expect.equals(subnode, out, '#remove should be chainable'); | |
35 Expect.equals(2, node.nodes.length); | |
36 Expect.isTrue(node.nodes[0] is Text); | |
37 Expect.isTrue(node.nodes[1] is Comment); | |
38 }); | |
39 | |
40 test('contains', () { | |
41 final Node node = new Element.html("<div>Foo<span>Bar</span></div>"); | |
42 Expect.isTrue(node.contains(node.nodes.first)); | |
43 Expect.isTrue(node.contains(node.nodes[1].nodes.first)); | |
44 Expect.isFalse(node.contains(new Text('Foo'))); | |
45 }); | |
46 | |
47 group('nodes', () { | |
48 test('is a NodeList', () { | |
49 Expect.isTrue(makeNodeWithChildren().nodes is NodeList); | |
50 }); | |
51 | |
52 test('first', () { | |
53 var node = makeNodeWithChildren(); | |
54 Expect.isTrue(node.nodes.first is Text); | |
55 }); | |
56 | |
57 test('last', () { | |
58 var node = makeNodeWithChildren(); | |
59 Expect.isTrue(node.nodes.last() is Comment); | |
60 }); | |
61 | |
62 test('forEach', () { | |
63 var nodes = []; | |
64 var node = makeNodeWithChildren(); | |
65 node.nodes.forEach((n) => nodes.add(n)); | |
66 Expect.isTrue(nodes[0] is Text); | |
67 Expect.isTrue(nodes[1] is BRElement); | |
68 Expect.isTrue(nodes[2] is Comment); | |
69 }); | |
70 | |
71 test('filter', () { | |
72 var filtered = makeNodeWithChildren().nodes.filter((n) => n is BRElement); | |
73 Expect.equals(1, filtered.length); | |
74 Expect.isTrue(filtered[0] is BRElement); | |
75 Expect.isTrue(filtered is NodeList); | |
76 }); | |
77 | |
78 test('every', () { | |
79 var node = makeNodeWithChildren(); | |
80 Expect.isTrue(node.nodes.every((n) => n is Node)); | |
81 Expect.isFalse(node.nodes.every((n) => n is Comment)); | |
82 }); | |
83 | |
84 test('some', () { | |
85 var node = makeNodeWithChildren(); | |
86 Expect.isTrue(node.nodes.some((n) => n is Comment)); | |
87 Expect.isFalse(node.nodes.some((n) => n is SVGElement)); | |
88 }); | |
89 | |
90 test('isEmpty', () { | |
91 Expect.isTrue(makeNode().nodes.isEmpty()); | |
92 Expect.isFalse(makeNodeWithChildren().nodes.isEmpty()); | |
93 }); | |
94 | |
95 test('length', () { | |
96 Expect.equals(0, makeNode().nodes.length); | |
97 Expect.equals(3, makeNodeWithChildren().nodes.length); | |
98 }); | |
99 | |
100 test('[]', () { | |
101 var node = makeNodeWithChildren(); | |
102 Expect.isTrue(node.nodes[0] is Text); | |
103 Expect.isTrue(node.nodes[1] is BRElement); | |
104 Expect.isTrue(node.nodes[2] is Comment); | |
105 }); | |
106 | |
107 test('[]=', () { | |
108 var node = makeNodeWithChildren(); | |
109 node.nodes[1] = new Element.tag('hr'); | |
110 Expect.isTrue(node.nodes[0] is Text); | |
111 Expect.isTrue(node.nodes[1] is HRElement); | |
112 Expect.isTrue(node.nodes[2] is Comment); | |
113 }); | |
114 | |
115 test('add', () { | |
116 var node = makeNode(); | |
117 node.nodes.add(new Element.tag('hr')); | |
118 Expect.isTrue(node.nodes.last() is HRElement); | |
119 }); | |
120 | |
121 test('addLast', () { | |
122 var node = makeNode(); | |
123 node.nodes.addLast(new Element.tag('hr')); | |
124 Expect.isTrue(node.nodes.last() is HRElement); | |
125 }); | |
126 | |
127 test('iterator', () { | |
128 var nodes = []; | |
129 var node = makeNodeWithChildren(); | |
130 for (var subnode in node.nodes) { | |
131 nodes.add(subnode); | |
132 } | |
133 Expect.isTrue(nodes[0] is Text); | |
134 Expect.isTrue(nodes[1] is BRElement); | |
135 Expect.isTrue(nodes[2] is Comment); | |
136 }); | |
137 | |
138 test('addAll', () { | |
139 var node = makeNodeWithChildren(); | |
140 node.nodes.addAll([ | |
141 new Element.tag('hr'), | |
142 new Element.tag('img'), | |
143 new Element.tag('input') | |
144 ]); | |
145 Expect.isTrue(node.nodes[0] is Text); | |
146 Expect.isTrue(node.nodes[1] is BRElement); | |
147 Expect.isTrue(node.nodes[2] is Comment); | |
148 Expect.isTrue(node.nodes[3] is HRElement); | |
149 Expect.isTrue(node.nodes[4] is ImageElement); | |
150 Expect.isTrue(node.nodes[5] is InputElement); | |
151 }); | |
152 | |
153 test('clear', () { | |
154 var node = makeNodeWithChildren(); | |
155 node.nodes.clear(); | |
156 Expect.listEquals([], node.nodes); | |
157 }); | |
158 | |
159 test('removeLast', () { | |
160 var node = makeNodeWithChildren(); | |
161 Expect.isTrue(node.nodes.removeLast() is Comment); | |
162 Expect.equals(2, node.nodes.length); | |
163 Expect.isTrue(node.nodes.removeLast() is BRElement); | |
164 Expect.equals(1, node.nodes.length); | |
165 }); | |
166 | |
167 test('getRange', () { | |
168 var node = makeNodeWithChildren(); | |
169 Expect.isTrue(node.nodes.getRange(1, 2) is NodeList); | |
170 }); | |
171 }); | |
172 | |
173 group('_NodeList', () { | |
174 NodeList makeNodeList() => | |
175 makeNodeWithChildren().nodes.filter((_) => true); | |
176 | |
177 test('first', () { | |
178 var nodes = makeNodeList(); | |
179 Expect.isTrue(nodes.first is Text); | |
180 }); | |
181 | |
182 test('filter', () { | |
183 var filtered = makeNodeList().filter((n) => n is BRElement); | |
184 Expect.equals(1, filtered.length); | |
185 Expect.isTrue(filtered[0] is BRElement); | |
186 Expect.isTrue(filtered is NodeList); | |
187 }); | |
188 | |
189 test('getRange', () { | |
190 var range = makeNodeList().getRange(1, 2); | |
191 Expect.isTrue(range is NodeList); | |
192 Expect.isTrue(range[0] is BRElement); | |
193 Expect.isTrue(range[1] is Comment); | |
194 }); | |
195 }); | |
196 } | |
OLD | NEW |