| // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file | 
 |  | 
 | #library('ElementAddTest'); | 
 | #import('../../pkg/unittest/unittest.dart'); | 
 | #import('../../pkg/unittest/html_config.dart'); | 
 | #import('dart:html'); | 
 | #source('util.dart'); | 
 |  | 
 | main() { | 
 |   useHtmlConfiguration(); | 
 |  | 
 |   void expectNoSuchMethod(void fn()) => | 
 |     Expect.throws(fn, (e) => e is NoSuchMethodError); | 
 |  | 
 |   group('addHTML', () { | 
 |     test('htmlelement', () { | 
 |       var el = new DivElement(); | 
 |       el.addHTML('<span></span>'); | 
 |       expect(el.elements.length, equals(1)); | 
 |       var span = el.elements[0]; | 
 |       expect(span is SpanElement); | 
 |  | 
 |       el.addHTML('<div></div>'); | 
 |       expect(el.elements.length, equals(2)); | 
 |       // Validate that the first item is still first. | 
 |       expect(el.elements[0] == span); | 
 |       expect(el.elements[1] is DivElement); | 
 |     }); | 
 |  | 
 |     test('documentFragment', () { | 
 |       var fragment = new DocumentFragment(); | 
 |       fragment.addHTML('<span>something</span>'); | 
 |       expect(fragment.elements.length, equals(1)); | 
 |       expect(fragment.elements[0] is SpanElement); | 
 |     }); | 
 |   }); | 
 |  | 
 |   group('addText', () { | 
 |     test('htmlelement', () { | 
 |       var el = new DivElement(); | 
 |       el.addText('foo'); | 
 |       // No elements were created. | 
 |       expect(el.elements.length, equals(0)); | 
 |       // One text node was added. | 
 |       expect(el.nodes.length, equals(1)); | 
 |     }); | 
 |  | 
 |     test('documentFragment', () { | 
 |       var fragment = new DocumentFragment(); | 
 |       fragment.addText('foo'); | 
 |       // No elements were created. | 
 |       expect(fragment.elements.length, equals(0)); | 
 |       // One text node was added. | 
 |       expect(fragment.nodes.length, equals(1)); | 
 |     }); | 
 |   }); | 
 |  | 
 |   group('insertAdjacentElement', () { | 
 |     test('beforebegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       var newChild = new SpanElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentElement('beforebegin', newChild); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[0] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('afterend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       var newChild = new SpanElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentElement('afterend', newChild); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[1] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('afterbegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       var newChild = new SpanElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentElement('afterbegin', newChild); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[0] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('beforeend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       var newChild = new SpanElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentElement('beforeend', newChild); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[1] is SpanElement); | 
 |     }); | 
 |   }); | 
 |  | 
 |   group('insertAdjacentHTML', () { | 
 |     test('beforebegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentHTML('beforebegin', '<span></span>'); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[0] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('afterend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentHTML('afterend', '<span></span>'); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[1] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('afterbegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentHTML('afterbegin', '<span></span>'); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[0] is SpanElement); | 
 |     }); | 
 |  | 
 |     test('beforeend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentHTML('beforeend', '<span></span>'); | 
 |  | 
 |       expect(parent.elements.length, 2); | 
 |       expect(parent.elements[1] is SpanElement); | 
 |     }); | 
 |   }); | 
 |  | 
 |   group('insertAdjacentText', () { | 
 |     test('beforebegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentText('beforebegin', 'test'); | 
 |  | 
 |       expect(parent.nodes.length, 2); | 
 |       expect(parent.nodes[0] is Text); | 
 |     }); | 
 |  | 
 |     test('afterend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       child.insertAdjacentText('afterend', 'test'); | 
 |  | 
 |       expect(parent.nodes.length, 2); | 
 |       expect(parent.nodes[1] is Text); | 
 |     }); | 
 |  | 
 |     test('afterbegin', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentText('afterbegin', 'test'); | 
 |  | 
 |       expect(parent.nodes.length, 2); | 
 |       expect(parent.nodes[0] is Text); | 
 |     }); | 
 |  | 
 |     test('beforeend', () { | 
 |       var parent = new DivElement(); | 
 |       var child = new DivElement(); | 
 |       parent.elements.add(child); | 
 |  | 
 |       parent.insertAdjacentText('beforeend', 'test'); | 
 |  | 
 |       expect(parent.nodes.length, 2); | 
 |       expect(parent.nodes[1] is Text); | 
 |     }); | 
 |   }); | 
 | } |