OLD | NEW |
| (Empty) |
1 #import('../../../../../dart/client/testing/unittest/unittest.dart'); | |
2 #import('dart:dom'); | |
3 | |
4 // Test that HTMLCollection implements List<T> | |
5 main() { | |
6 HTMLElement insertTestDiv() { | |
7 HTMLElement element = document.createElement('div'); | |
8 element.innerHTML = @""" | |
9 <div id='allChecked'> | |
10 <input type="checkbox" name="c1" value="1" checked="yes"> | |
11 <input type="checkbox" name="c2" value="2" checked="yes"> | |
12 <input type="checkbox" name="c3" value="3" checked="yes"> | |
13 <input type="checkbox" name="c4" value="4" checked="yes"> | |
14 </div> | |
15 <div id='someChecked'> | |
16 <input type="checkbox" name="s1" value="1" checked="yes"> | |
17 <input type="checkbox" name="s2" value="2"> | |
18 <input type="checkbox" name="s3" value="3" checked="yes"> | |
19 <input type="checkbox" name="s4" value="4"> | |
20 </div> | |
21 <div id='noneChecked'> | |
22 <input type="checkbox" name="n1" value="1"> | |
23 <input type="checkbox" name="n2" value="2"> | |
24 <input type="checkbox" name="n3" value="3"> | |
25 <input type="checkbox" name="n4" value="4"> | |
26 </div> | |
27 <div id='emptyDiv'></div> | |
28 """; | |
29 document.body.appendChild(element); | |
30 return element; | |
31 } | |
32 | |
33 forLayoutTests(); | |
34 test('IsList', () { | |
35 HTMLElement root = insertTestDiv(); | |
36 | |
37 HTMLCollection eachChecked = | |
38 document.getElementById('allChecked').dynamic.children; | |
39 | |
40 Expect.isTrue(eachChecked is List); | |
41 | |
42 document.body.removeChild(root); | |
43 }); | |
44 test('Every', () { | |
45 HTMLElement root = insertTestDiv(); | |
46 | |
47 HTMLCollection eachChecked = | |
48 document.getElementById('allChecked').dynamic.children; | |
49 | |
50 HTMLCollection someChecked = | |
51 document.getElementById('someChecked').dynamic.children; | |
52 | |
53 HTMLCollection noneChecked = | |
54 document.getElementById('noneChecked').dynamic.children; | |
55 | |
56 Expect.equals(4, eachChecked.length); | |
57 Expect.equals(4, someChecked.length); | |
58 Expect.equals(4, noneChecked.length); | |
59 | |
60 Expect.isTrue(eachChecked.every((x) => x.checked)); | |
61 Expect.isFalse(eachChecked.every((x) => !x.checked)); | |
62 Expect.isFalse(someChecked.every((x) => x.checked)); | |
63 Expect.isFalse(someChecked.every((x) => !x.checked)); | |
64 Expect.isFalse(noneChecked.every((x) => x.checked)); | |
65 Expect.isTrue(noneChecked.every((x) => !x.checked)); | |
66 | |
67 document.body.removeChild(root); | |
68 }); | |
69 test('Some', () { | |
70 HTMLElement root = insertTestDiv(); | |
71 | |
72 HTMLCollection eachChecked = | |
73 document.getElementById('allChecked').dynamic.children; | |
74 | |
75 HTMLCollection someChecked = | |
76 document.getElementById('someChecked').dynamic.children; | |
77 | |
78 HTMLCollection noneChecked = | |
79 document.getElementById('noneChecked').dynamic.children; | |
80 | |
81 Expect.equals(4, eachChecked.length); | |
82 Expect.equals(4, someChecked.length); | |
83 Expect.equals(4, noneChecked.length); | |
84 | |
85 Expect.isTrue(eachChecked.some((x) => x.checked)); | |
86 Expect.isFalse(eachChecked.some((x) => !x.checked)); | |
87 Expect.isTrue(someChecked.some((x) => x.checked)); | |
88 Expect.isTrue(someChecked.some((x) => !x.checked)); | |
89 Expect.isFalse(noneChecked.some((x) => x.checked)); | |
90 Expect.isTrue(noneChecked.some((x) => !x.checked)); | |
91 | |
92 document.body.removeChild(root); | |
93 }); | |
94 test('Filter', () { | |
95 HTMLElement root = insertTestDiv(); | |
96 | |
97 HTMLCollection eachChecked = | |
98 document.getElementById('allChecked').dynamic.children; | |
99 | |
100 HTMLCollection someChecked = | |
101 document.getElementById('someChecked').dynamic.children; | |
102 | |
103 HTMLCollection noneChecked = | |
104 document.getElementById('noneChecked').dynamic.children; | |
105 | |
106 Expect.equals(4, eachChecked.length); | |
107 Expect.equals(4, someChecked.length); | |
108 Expect.equals(4, noneChecked.length); | |
109 | |
110 Expect.equals(4, eachChecked.filter((x) => x.checked).length); | |
111 Expect.equals(0, eachChecked.filter((x) => !x.checked).length); | |
112 Expect.equals(2, someChecked.filter((x) => x.checked).length); | |
113 Expect.equals(2, someChecked.filter((x) => !x.checked).length); | |
114 Expect.equals(0, noneChecked.filter((x) => x.checked).length); | |
115 Expect.equals(4, noneChecked.filter((x) => !x.checked).length); | |
116 | |
117 document.body.removeChild(root); | |
118 }); | |
119 test('IsEmpty', () { | |
120 HTMLElement root = insertTestDiv(); | |
121 | |
122 HTMLCollection someChecked = | |
123 document.getElementById('someChecked').dynamic.children; | |
124 | |
125 HTMLCollection emptyDiv = | |
126 document.getElementById('emptyDiv').dynamic.children; | |
127 | |
128 Expect.equals(4, someChecked.length); | |
129 Expect.equals(0, emptyDiv.length); | |
130 | |
131 Expect.isFalse(someChecked.isEmpty()); | |
132 Expect.isTrue(emptyDiv.isEmpty()); | |
133 | |
134 document.body.removeChild(root); | |
135 }); | |
136 | |
137 int countWithForEach(collection, predicate) { | |
138 int count = 0; | |
139 collection.forEach((element) { | |
140 if (predicate(element)) count++; | |
141 }); | |
142 return count; | |
143 } | |
144 | |
145 test('ForEach', () { | |
146 HTMLElement root = insertTestDiv(); | |
147 | |
148 HTMLCollection eachChecked = | |
149 document.getElementById('allChecked').dynamic.children; | |
150 | |
151 HTMLCollection someChecked = | |
152 document.getElementById('someChecked').dynamic.children; | |
153 | |
154 HTMLCollection noneChecked = | |
155 document.getElementById('noneChecked').dynamic.children; | |
156 | |
157 Expect.equals(4, eachChecked.length); | |
158 Expect.equals(4, someChecked.length); | |
159 Expect.equals(4, noneChecked.length); | |
160 | |
161 Expect.equals(4, countWithForEach(eachChecked, (x) => x.checked)); | |
162 Expect.equals(0, countWithForEach(eachChecked, (x) => !x.checked)); | |
163 Expect.equals(2, countWithForEach(someChecked, (x) => x.checked)); | |
164 Expect.equals(2, countWithForEach(someChecked, (x) => !x.checked)); | |
165 Expect.equals(0, countWithForEach(noneChecked, (x) => x.checked)); | |
166 Expect.equals(4, countWithForEach(noneChecked, (x) => !x.checked)); | |
167 | |
168 document.body.removeChild(root); | |
169 }); | |
170 | |
171 int countWithForLoop(collection, predicate) { | |
172 int count = 0; | |
173 for (var element in collection) { | |
174 if (predicate(element)) count++; | |
175 } | |
176 return count; | |
177 } | |
178 | |
179 test('ForLoop', () { // Uses iterator. | |
180 HTMLElement root = insertTestDiv(); | |
181 | |
182 HTMLCollection eachChecked = | |
183 document.getElementById('allChecked').dynamic.children; | |
184 | |
185 HTMLCollection someChecked = | |
186 document.getElementById('someChecked').dynamic.children; | |
187 | |
188 HTMLCollection noneChecked = | |
189 document.getElementById('noneChecked').dynamic.children; | |
190 | |
191 Expect.equals(4, eachChecked.length); | |
192 Expect.equals(4, someChecked.length); | |
193 Expect.equals(4, noneChecked.length); | |
194 | |
195 Expect.equals(4, countWithForLoop(eachChecked, (x) => x.checked)); | |
196 Expect.equals(0, countWithForLoop(eachChecked, (x) => !x.checked)); | |
197 Expect.equals(2, countWithForLoop(someChecked, (x) => x.checked)); | |
198 Expect.equals(2, countWithForLoop(someChecked, (x) => !x.checked)); | |
199 Expect.equals(0, countWithForLoop(noneChecked, (x) => x.checked)); | |
200 Expect.equals(4, countWithForLoop(noneChecked, (x) => !x.checked)); | |
201 | |
202 document.body.removeChild(root); | |
203 }); | |
204 test('Last', () { | |
205 HTMLElement root = insertTestDiv(); | |
206 | |
207 HTMLCollection someChecked = | |
208 document.getElementById('someChecked').dynamic.children; | |
209 | |
210 Expect.equals(4, someChecked.length); | |
211 | |
212 Expect.equals(someChecked[3], someChecked.last()); | |
213 | |
214 document.body.removeChild(root); | |
215 }); | |
216 test('IndexOf', () { | |
217 HTMLElement root = insertTestDiv(); | |
218 | |
219 HTMLCollection someChecked = | |
220 document.getElementById('someChecked').dynamic.children; | |
221 | |
222 HTMLCollection noneChecked = | |
223 document.getElementById('noneChecked').dynamic.children; | |
224 | |
225 Expect.equals(4, someChecked.length); | |
226 Expect.equals(4, noneChecked.length); | |
227 | |
228 Expect.equals(0, someChecked.indexOf(someChecked[0], 0)); | |
229 Expect.equals(1, someChecked.indexOf(someChecked[1], 0)); | |
230 Expect.equals(2, someChecked.indexOf(someChecked[2], 0)); | |
231 Expect.equals(3, someChecked.indexOf(someChecked[3], 0)); | |
232 | |
233 Expect.equals(-1, someChecked.indexOf(someChecked[0], 1)); | |
234 Expect.equals(-1, someChecked.indexOf(someChecked[1], 2)); | |
235 Expect.equals(-1, someChecked.indexOf(someChecked[2], 3)); | |
236 Expect.equals(-1, someChecked.indexOf(someChecked[3], 4)); | |
237 | |
238 | |
239 Expect.equals(-1, someChecked.indexOf(noneChecked[0], 0)); | |
240 Expect.equals(-1, noneChecked.indexOf(someChecked[0], 0)); | |
241 Expect.equals(-1, someChecked.indexOf(noneChecked[1], 0)); | |
242 Expect.equals(-1, noneChecked.indexOf(someChecked[1], 0)); | |
243 | |
244 document.body.removeChild(root); | |
245 }); | |
246 test('LastIndexOf', () { | |
247 HTMLElement root = insertTestDiv(); | |
248 | |
249 HTMLCollection someChecked = | |
250 document.getElementById('someChecked').dynamic.children; | |
251 | |
252 HTMLCollection noneChecked = | |
253 document.getElementById('noneChecked').dynamic.children; | |
254 | |
255 Expect.equals(4, someChecked.length); | |
256 Expect.equals(4, noneChecked.length); | |
257 | |
258 Expect.equals(0, someChecked.lastIndexOf(someChecked[0], 3)); | |
259 Expect.equals(1, someChecked.lastIndexOf(someChecked[1], 3)); | |
260 Expect.equals(2, someChecked.lastIndexOf(someChecked[2], 3)); | |
261 Expect.equals(3, someChecked.lastIndexOf(someChecked[3], 3)); | |
262 | |
263 Expect.equals(-1, someChecked.lastIndexOf(someChecked[0], -1)); | |
264 Expect.equals(-1, someChecked.lastIndexOf(someChecked[1], 0)); | |
265 Expect.equals(-1, someChecked.lastIndexOf(someChecked[2], 1)); | |
266 Expect.equals(-1, someChecked.lastIndexOf(someChecked[3], 2)); | |
267 | |
268 Expect.equals(-1, someChecked.lastIndexOf(noneChecked[0], 3)); | |
269 Expect.equals(-1, noneChecked.lastIndexOf(someChecked[0], 3)); | |
270 Expect.equals(-1, someChecked.lastIndexOf(noneChecked[1], 3)); | |
271 Expect.equals(-1, noneChecked.lastIndexOf(someChecked[1], 3)); | |
272 | |
273 document.body.removeChild(root); | |
274 }); | |
275 } | |
OLD | NEW |