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

Side by Side Diff: tests/html/documentfragment_test.dart

Issue 12039072: Removing many Element APIs from DocumentFragment (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library DocumentFragmentTest; 5 library DocumentFragmentTest;
6 import '../../pkg/unittest/lib/unittest.dart'; 6 import '../../pkg/unittest/lib/unittest.dart';
7 import '../../pkg/unittest/lib/html_config.dart'; 7 import '../../pkg/unittest/lib/html_config.dart';
8 import 'util.dart'; 8 import 'util.dart';
9 import 'dart:html'; 9 import 'dart:html';
10 10
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 // expect(fragment.children[0] is SVGAElement, isTrue); 73 // expect(fragment.children[0] is SVGAElement, isTrue);
74 // }); 74 // });
75 75
76 // TODO(nweiz): enable this once XML is ported. 76 // TODO(nweiz): enable this once XML is ported.
77 // test('.xml parses input as XML', () { 77 // test('.xml parses input as XML', () {
78 // final fragment = new DocumentFragment.xml('<a>foo</a>'); 78 // final fragment = new DocumentFragment.xml('<a>foo</a>');
79 // expect(fragment.children[0] is XMLElement, isTrue); 79 // expect(fragment.children[0] is XMLElement, isTrue);
80 // }); 80 // });
81 }); 81 });
82 82
83 test('Unsupported operations throw errors', () {
84 var emptyFragment = new DocumentFragment();
85 expectUnsupported(() => emptyFragment.attributes = {});
86 expectUnsupported(() => emptyFragment.classes = []);
87 expectUnsupported(() => emptyFragment.classes.add('foo'));
88 expectUnsupported(() => emptyFragment.dataAttributes = {});
89 expectUnsupported(() => emptyFragment.contentEditable = "true");
90 expectUnsupported(() => emptyFragment.dir);
91 expectUnsupported(() => emptyFragment.dir = "ltr");
92 expectUnsupported(() => emptyFragment.draggable = true);
93 expectUnsupported(() => emptyFragment.hidden = true);
94 expectUnsupported(() => emptyFragment.id = "foo");
95 expectUnsupported(() => emptyFragment.lang);
96 expectUnsupported(() => emptyFragment.lang = "en");
97 expectUnsupported(() => emptyFragment.scrollLeft = 10);
98 expectUnsupported(() => emptyFragment.scrollTop = 10);
99 expectUnsupported(() => emptyFragment.spellcheck = true);
100 expectUnsupported(() => emptyFragment.translate = true);
101 expectUnsupported(() => emptyFragment.tabIndex = 5);
102 expectUnsupported(() => emptyFragment.title = "foo");
103 expectUnsupported(() => emptyFragment.webkitdropzone = "foo");
104 expectUnsupported(() => emptyFragment.webkitRegionOverflow = "foo");
105 });
106
107 group('children', () { 83 group('children', () {
108 var fragment; 84 var fragment;
109 var children; 85 var children;
110 86
111 init() { 87 init() {
112 fragment = new DocumentFragment(); 88 fragment = new DocumentFragment();
113 children = fragment.children; 89 children = fragment.children;
114 fragment.nodes.addAll( 90 fragment.nodes.addAll(
115 [new Text("1"), new Element.tag("A"), new Element.tag("B"), 91 [new Text("1"), new Element.tag("A"), new Element.tag("B"),
116 new Text("2"), new Element.tag("I"), new Text("3"), 92 new Text("2"), new Element.tag("I"), new Text("3"),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 var fragment = new DocumentFragment(); 162 var fragment = new DocumentFragment();
187 fragment.nodes.add(new Text("foo")); 163 fragment.nodes.add(new Text("foo"));
188 fragment.innerHtml = "<a>bar</a>baz"; 164 fragment.innerHtml = "<a>bar</a>baz";
189 expect(_nodeStrings(fragment.nodes), equals(["A", "baz"])); 165 expect(_nodeStrings(fragment.nodes), equals(["A", "baz"]));
190 }); 166 });
191 167
192 test('getting innerHtml works', () { 168 test('getting innerHtml works', () {
193 var fragment = new DocumentFragment(); 169 var fragment = new DocumentFragment();
194 fragment.nodes.addAll([new Text("foo"), new Element.html("<A>bar</A>")]); 170 fragment.nodes.addAll([new Text("foo"), new Element.html("<A>bar</A>")]);
195 expect(fragment.innerHtml, "foo<a>bar</a>"); 171 expect(fragment.innerHtml, "foo<a>bar</a>");
196 expect(fragment.outerHtml, "foo<a>bar</a>");
197 }); 172 });
198 173
199 group('insertAdjacentElement', () {
200 getFragment() => new DocumentFragment.html("<a>foo</a>");
201
202 test('beforeBegin does nothing', () {
203 var fragment = getFragment();
204 expect(fragment.insertAdjacentElement("beforeBegin",
205 new Element.tag("b")), isNull);
206 expect(fragment.innerHtml, "<a>foo</a>");
207 });
208
209 test('afterEnd does nothing', () {
210 var fragment = getFragment();
211 expect(fragment.insertAdjacentElement("afterEnd",
212 new Element.tag("b")), isNull);
213 expect(fragment.innerHtml, "<a>foo</a>");
214 });
215
216 test('afterBegin inserts the element', () {
217 var fragment = getFragment();
218 var el = new Element.tag("b");
219 expect(fragment.insertAdjacentElement("afterBegin", el), equals(el));
220 expect(fragment.innerHtml, "<b></b><a>foo</a>");
221 });
222
223 test('beforeEnd inserts the element', () {
224 var fragment = getFragment();
225 var el = new Element.tag("b");
226 expect(fragment.insertAdjacentElement("beforeEnd", el), equals(el));
227 expect(fragment.innerHtml, "<a>foo</a><b></b>");
228 });
229 });
230
231 group('insertAdjacentText', () {
232 getFragment() => new DocumentFragment.html("<a>foo</a>");
233
234 test('beforeBegin does nothing', () {
235 var fragment = getFragment();
236 fragment.insertAdjacentText("beforeBegin", "foo");
237 expect(fragment.innerHtml, "<a>foo</a>");
238 });
239
240 test('afterEnd does nothing', () {
241 var fragment = getFragment();
242 fragment.insertAdjacentText("afterEnd", "foo");
243 expect(fragment.innerHtml, "<a>foo</a>");
244 });
245
246 test('afterBegin inserts the text', () {
247 var fragment = getFragment();
248 fragment.insertAdjacentText("afterBegin", "foo");
249 expect(fragment.innerHtml, "foo<a>foo</a>");
250 });
251
252 test('beforeEnd inserts the text', () {
253 var fragment = getFragment();
254 fragment.insertAdjacentText("beforeEnd", "foo");
255 expect(fragment.innerHtml, "<a>foo</a>foo");
256 });
257 });
258
259 group('insertAdjacentHtml', () {
260 getFragment() => new DocumentFragment.html("<a>foo</a>");
261
262 test('beforeBegin does nothing', () {
263 var fragment = getFragment();
264 fragment.insertAdjacentHtml("beforeBegin", "foo<br>");
265 expect(fragment.innerHtml, "<a>foo</a>");
266 });
267
268 test('afterEnd does nothing', () {
269 var fragment = getFragment();
270 fragment.insertAdjacentHtml("afterEnd", "<br>foo");
271 expect(fragment.innerHtml, "<a>foo</a>");
272 });
273
274 test('afterBegin inserts the HTML', () {
275 var fragment = getFragment();
276 fragment.insertAdjacentHtml("afterBegin", "foo<br>");
277 expect(fragment.innerHtml, "foo<br><a>foo</a>");
278 });
279
280 test('beforeEnd inserts the HTML', () {
281 var fragment = getFragment();
282 fragment.insertAdjacentHtml("beforeEnd", "<br>foo");
283 expect(fragment.innerHtml, "<a>foo</a><br>foo");
284 });
285 });
286
287 // Just test that these methods don't throw errors
288 test("no-op methods don't throw errors", () {
289 var fragment = new DocumentFragment();
290 fragment.on.click.add((e) => null);
291 fragment.blur();
292 fragment.focus();
293 fragment.click();
294 fragment.scrollByLines(2);
295 fragment.scrollByPages(2);
296 fragment.scrollIntoView();
297 fragment.webkitRequestFullScreen(2);
298 });
299
300 test('default values', () {
301 var fragment = new DocumentFragment();
302 expect(fragment.contentEditable, "false");
303 expect(fragment.tabIndex, -1);
304 expect(fragment.id, "");
305 expect(fragment.title, "");
306 expect(fragment.tagName, "");
307 expect(fragment.webkitdropzone, "");
308 expect(fragment.webkitRegionOverflow, "");
309 expect(fragment.isContentEditable, isFalse);
310 expect(fragment.draggable, isFalse);
311 expect(fragment.hidden, isFalse);
312 expect(fragment.spellcheck, isFalse);
313 expect(fragment.translate, isFalse);
314 expect(fragment.nextElementSibling, isNull);
315 expect(fragment.previousElementSibling, isNull);
316 expect(fragment.offsetParent, isNull);
317 expect(fragment.parent, isNull);
318 expect(fragment.attributes.isEmpty, isTrue);
319 expect(fragment.classes.isEmpty, isTrue);
320 expect(fragment.dataAttributes.isEmpty, isTrue);
321 });
322
323 test('style', () {
324 var fragment = new DocumentFragment();
325 var style = fragment.style;
326 expectEmptyStyleDeclaration(style);
327 fragment.computedStyle.then(expectAsync1((computedStyle) {
328 expectEmptyStyleDeclaration(computedStyle);
329 }));
330 });
331
332 // TODO(nweiz): re-enable when const is better supported in dartc and/or frog
333 // test('const fields are immutable', () {
334 // var fragment = new DocumentFragment();
335 // assertConstError(() => fragment.attributes['title'] = 'foo');
336 // assertConstError(() => fragment.dataAttributes['title'] = 'foo');
337 // fragment.rect.then((ElementRect rect) {
338 // assertConstError(() => rect.clientRects.add(null));
339 // callbackDone();
340 // });
341 // // Issue 174: #classes is currently not const
342 // // assertConstError(() => fragment.classes.add('foo'));
343 // });
344
345 test('query searches the fragment', () { 174 test('query searches the fragment', () {
346 var fragment = new DocumentFragment.html( 175 var fragment = new DocumentFragment.html(
347 "<div class='foo'><a>foo</a><b>bar</b></div>"); 176 "<div class='foo'><a>foo</a><b>bar</b></div>");
348 expect(fragment.query(".foo a").tagName, "A"); 177 expect(fragment.query(".foo a").tagName, "A");
349 expect(_nodeStrings(fragment.queryAll(".foo *")), equals(["A", "B"])); 178 expect(_nodeStrings(fragment.queryAll(".foo *")), equals(["A", "B"]));
350 }); 179 });
351 } 180 }
OLDNEW
« no previous file with comments | « sdk/lib/html/dartium/html_dartium.dart ('k') | tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698