| OLD | NEW |
| 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 'dart:html'; | 8 import 'dart:html'; |
| 9 part 'util.dart'; | 9 part 'util.dart'; |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 expect(true, isFalse, reason: 'Expected immutability error'); | 38 expect(true, isFalse, reason: 'Expected immutability error'); |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 void expectEmptyStyleDeclaration(CSSStyleDeclaration style) { | 41 void expectEmptyStyleDeclaration(CSSStyleDeclaration style) { |
| 42 expect(style.cssText, equals('')); | 42 expect(style.cssText, equals('')); |
| 43 expect(style.getPropertyPriority('color'), equals('')); | 43 expect(style.getPropertyPriority('color'), equals('')); |
| 44 expect(style.item(0), equals('')); | 44 expect(style.item(0), equals('')); |
| 45 expect(style.length, isZero); | 45 expect(style.length, isZero); |
| 46 // TODO(jacobr): these checks throw UnimplementedErrors in dartium. | 46 // TODO(jacobr): these checks throw UnimplementedErrors in dartium. |
| 47 // expect(style.parentRule, isNull); | 47 // expect(style.parentRule, isNull); |
| 48 // expect(style.getPropertyCSSValue('color'), isNull); | 48 // expect(style.getPropertyCssValue('color'), isNull); |
| 49 // expect(style.getPropertyShorthand('color'), isNull); | 49 // expect(style.getPropertyShorthand('color'), isNull); |
| 50 // expect(style.isPropertyImplicit('color'), isFalse); | 50 // expect(style.isPropertyImplicit('color'), isFalse); |
| 51 | 51 |
| 52 // Ideally these would throw errors, but it's not possible to create a class | 52 // Ideally these would throw errors, but it's not possible to create a class |
| 53 // that'll intercept these calls without implementing the entire | 53 // that'll intercept these calls without implementing the entire |
| 54 // CSSStyleDeclaration interface, so we'll settle for them being no-ops. | 54 // CSSStyleDeclaration interface, so we'll settle for them being no-ops. |
| 55 style.cssText = '* {color: blue}'; | 55 style.cssText = '* {color: blue}'; |
| 56 style.removeProperty('color'); | 56 style.removeProperty('color'); |
| 57 style.setProperty('color', 'blue'); | 57 style.setProperty('color', 'blue'); |
| 58 } | 58 } |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 expect(children.last.tagName, "U"); | 175 expect(children.last.tagName, "U"); |
| 176 }); | 176 }); |
| 177 | 177 |
| 178 test('setting children overwrites nodes as well', () { | 178 test('setting children overwrites nodes as well', () { |
| 179 init(); | 179 init(); |
| 180 fragment.children = [new Element.tag("DIV"), new Element.tag("HEAD")]; | 180 fragment.children = [new Element.tag("DIV"), new Element.tag("HEAD")]; |
| 181 expect(_nodeStrings(fragment.nodes), equals(["DIV", "HEAD"])); | 181 expect(_nodeStrings(fragment.nodes), equals(["DIV", "HEAD"])); |
| 182 }); | 182 }); |
| 183 }); | 183 }); |
| 184 | 184 |
| 185 test('setting innerHTML works', () { | 185 test('setting innerHtml works', () { |
| 186 var fragment = new DocumentFragment(); | 186 var fragment = new DocumentFragment(); |
| 187 fragment.nodes.add(new Text("foo")); | 187 fragment.nodes.add(new Text("foo")); |
| 188 fragment.innerHTML = "<a>bar</a>baz"; | 188 fragment.innerHtml = "<a>bar</a>baz"; |
| 189 expect(_nodeStrings(fragment.nodes), equals(["A", "baz"])); | 189 expect(_nodeStrings(fragment.nodes), equals(["A", "baz"])); |
| 190 }); | 190 }); |
| 191 | 191 |
| 192 test('getting innerHTML works', () { | 192 test('getting innerHtml works', () { |
| 193 var fragment = new DocumentFragment(); | 193 var fragment = new DocumentFragment(); |
| 194 fragment.nodes.addAll([new Text("foo"), new Element.html("<A>bar</A>")]); | 194 fragment.nodes.addAll([new Text("foo"), new Element.html("<A>bar</A>")]); |
| 195 expect(fragment.innerHTML, "foo<a>bar</a>"); | 195 expect(fragment.innerHtml, "foo<a>bar</a>"); |
| 196 expect(fragment.outerHTML, "foo<a>bar</a>"); | 196 expect(fragment.outerHtml, "foo<a>bar</a>"); |
| 197 }); | 197 }); |
| 198 | 198 |
| 199 group('insertAdjacentElement', () { | 199 group('insertAdjacentElement', () { |
| 200 getFragment() => new DocumentFragment.html("<a>foo</a>"); | 200 getFragment() => new DocumentFragment.html("<a>foo</a>"); |
| 201 | 201 |
| 202 test('beforeBegin does nothing', () { | 202 test('beforeBegin does nothing', () { |
| 203 var fragment = getFragment(); | 203 var fragment = getFragment(); |
| 204 expect(fragment.insertAdjacentElement("beforeBegin", | 204 expect(fragment.insertAdjacentElement("beforeBegin", |
| 205 new Element.tag("b")), isNull); | 205 new Element.tag("b")), isNull); |
| 206 expect(fragment.innerHTML, "<a>foo</a>"); | 206 expect(fragment.innerHtml, "<a>foo</a>"); |
| 207 }); | 207 }); |
| 208 | 208 |
| 209 test('afterEnd does nothing', () { | 209 test('afterEnd does nothing', () { |
| 210 var fragment = getFragment(); | 210 var fragment = getFragment(); |
| 211 expect(fragment.insertAdjacentElement("afterEnd", | 211 expect(fragment.insertAdjacentElement("afterEnd", |
| 212 new Element.tag("b")), isNull); | 212 new Element.tag("b")), isNull); |
| 213 expect(fragment.innerHTML, "<a>foo</a>"); | 213 expect(fragment.innerHtml, "<a>foo</a>"); |
| 214 }); | 214 }); |
| 215 | 215 |
| 216 test('afterBegin inserts the element', () { | 216 test('afterBegin inserts the element', () { |
| 217 var fragment = getFragment(); | 217 var fragment = getFragment(); |
| 218 var el = new Element.tag("b"); | 218 var el = new Element.tag("b"); |
| 219 expect(fragment.insertAdjacentElement("afterBegin", el), equals(el)); | 219 expect(fragment.insertAdjacentElement("afterBegin", el), equals(el)); |
| 220 expect(fragment.innerHTML, "<b></b><a>foo</a>"); | 220 expect(fragment.innerHtml, "<b></b><a>foo</a>"); |
| 221 }); | 221 }); |
| 222 | 222 |
| 223 test('beforeEnd inserts the element', () { | 223 test('beforeEnd inserts the element', () { |
| 224 var fragment = getFragment(); | 224 var fragment = getFragment(); |
| 225 var el = new Element.tag("b"); | 225 var el = new Element.tag("b"); |
| 226 expect(fragment.insertAdjacentElement("beforeEnd", el), equals(el)); | 226 expect(fragment.insertAdjacentElement("beforeEnd", el), equals(el)); |
| 227 expect(fragment.innerHTML, "<a>foo</a><b></b>"); | 227 expect(fragment.innerHtml, "<a>foo</a><b></b>"); |
| 228 }); | 228 }); |
| 229 }); | 229 }); |
| 230 | 230 |
| 231 group('insertAdjacentText', () { | 231 group('insertAdjacentText', () { |
| 232 getFragment() => new DocumentFragment.html("<a>foo</a>"); | 232 getFragment() => new DocumentFragment.html("<a>foo</a>"); |
| 233 | 233 |
| 234 test('beforeBegin does nothing', () { | 234 test('beforeBegin does nothing', () { |
| 235 var fragment = getFragment(); | 235 var fragment = getFragment(); |
| 236 fragment.insertAdjacentText("beforeBegin", "foo"); | 236 fragment.insertAdjacentText("beforeBegin", "foo"); |
| 237 expect(fragment.innerHTML, "<a>foo</a>"); | 237 expect(fragment.innerHtml, "<a>foo</a>"); |
| 238 }); | 238 }); |
| 239 | 239 |
| 240 test('afterEnd does nothing', () { | 240 test('afterEnd does nothing', () { |
| 241 var fragment = getFragment(); | 241 var fragment = getFragment(); |
| 242 fragment.insertAdjacentText("afterEnd", "foo"); | 242 fragment.insertAdjacentText("afterEnd", "foo"); |
| 243 expect(fragment.innerHTML, "<a>foo</a>"); | 243 expect(fragment.innerHtml, "<a>foo</a>"); |
| 244 }); | 244 }); |
| 245 | 245 |
| 246 test('afterBegin inserts the text', () { | 246 test('afterBegin inserts the text', () { |
| 247 var fragment = getFragment(); | 247 var fragment = getFragment(); |
| 248 fragment.insertAdjacentText("afterBegin", "foo"); | 248 fragment.insertAdjacentText("afterBegin", "foo"); |
| 249 expect(fragment.innerHTML, "foo<a>foo</a>"); | 249 expect(fragment.innerHtml, "foo<a>foo</a>"); |
| 250 }); | 250 }); |
| 251 | 251 |
| 252 test('beforeEnd inserts the text', () { | 252 test('beforeEnd inserts the text', () { |
| 253 var fragment = getFragment(); | 253 var fragment = getFragment(); |
| 254 fragment.insertAdjacentText("beforeEnd", "foo"); | 254 fragment.insertAdjacentText("beforeEnd", "foo"); |
| 255 expect(fragment.innerHTML, "<a>foo</a>foo"); | 255 expect(fragment.innerHtml, "<a>foo</a>foo"); |
| 256 }); | 256 }); |
| 257 }); | 257 }); |
| 258 | 258 |
| 259 group('insertAdjacentHTML', () { | 259 group('insertAdjacentHtml', () { |
| 260 getFragment() => new DocumentFragment.html("<a>foo</a>"); | 260 getFragment() => new DocumentFragment.html("<a>foo</a>"); |
| 261 | 261 |
| 262 test('beforeBegin does nothing', () { | 262 test('beforeBegin does nothing', () { |
| 263 var fragment = getFragment(); | 263 var fragment = getFragment(); |
| 264 fragment.insertAdjacentHTML("beforeBegin", "foo<br>"); | 264 fragment.insertAdjacentHtml("beforeBegin", "foo<br>"); |
| 265 expect(fragment.innerHTML, "<a>foo</a>"); | 265 expect(fragment.innerHtml, "<a>foo</a>"); |
| 266 }); | 266 }); |
| 267 | 267 |
| 268 test('afterEnd does nothing', () { | 268 test('afterEnd does nothing', () { |
| 269 var fragment = getFragment(); | 269 var fragment = getFragment(); |
| 270 fragment.insertAdjacentHTML("afterEnd", "<br>foo"); | 270 fragment.insertAdjacentHtml("afterEnd", "<br>foo"); |
| 271 expect(fragment.innerHTML, "<a>foo</a>"); | 271 expect(fragment.innerHtml, "<a>foo</a>"); |
| 272 }); | 272 }); |
| 273 | 273 |
| 274 test('afterBegin inserts the HTML', () { | 274 test('afterBegin inserts the HTML', () { |
| 275 var fragment = getFragment(); | 275 var fragment = getFragment(); |
| 276 fragment.insertAdjacentHTML("afterBegin", "foo<br>"); | 276 fragment.insertAdjacentHtml("afterBegin", "foo<br>"); |
| 277 expect(fragment.innerHTML, "foo<br><a>foo</a>"); | 277 expect(fragment.innerHtml, "foo<br><a>foo</a>"); |
| 278 }); | 278 }); |
| 279 | 279 |
| 280 test('beforeEnd inserts the HTML', () { | 280 test('beforeEnd inserts the HTML', () { |
| 281 var fragment = getFragment(); | 281 var fragment = getFragment(); |
| 282 fragment.insertAdjacentHTML("beforeEnd", "<br>foo"); | 282 fragment.insertAdjacentHtml("beforeEnd", "<br>foo"); |
| 283 expect(fragment.innerHTML, "<a>foo</a><br>foo"); | 283 expect(fragment.innerHtml, "<a>foo</a><br>foo"); |
| 284 }); | 284 }); |
| 285 }); | 285 }); |
| 286 | 286 |
| 287 // Just test that these methods don't throw errors | 287 // Just test that these methods don't throw errors |
| 288 test("no-op methods don't throw errors", () { | 288 test("no-op methods don't throw errors", () { |
| 289 var fragment = new DocumentFragment(); | 289 var fragment = new DocumentFragment(); |
| 290 fragment.on.click.add((e) => null); | 290 fragment.on.click.add((e) => null); |
| 291 fragment.blur(); | 291 fragment.blur(); |
| 292 fragment.focus(); | 292 fragment.focus(); |
| 293 fragment.click(); | 293 fragment.click(); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 // // assertConstError(() => fragment.classes.add('foo')); | 344 // // assertConstError(() => fragment.classes.add('foo')); |
| 345 // }); | 345 // }); |
| 346 | 346 |
| 347 test('query searches the fragment', () { | 347 test('query searches the fragment', () { |
| 348 var fragment = new DocumentFragment.html( | 348 var fragment = new DocumentFragment.html( |
| 349 "<div class='foo'><a>foo</a><b>bar</b></div>"); | 349 "<div class='foo'><a>foo</a><b>bar</b></div>"); |
| 350 expect(fragment.query(".foo a").tagName, "A"); | 350 expect(fragment.query(".foo a").tagName, "A"); |
| 351 expect(_nodeStrings(fragment.queryAll(".foo *")), equals(["A", "B"])); | 351 expect(_nodeStrings(fragment.queryAll(".foo *")), equals(["A", "B"])); |
| 352 }); | 352 }); |
| 353 } | 353 } |
| OLD | NEW |