blob: 3a128f6751b47bf79379051adfbd05230035721b [file] [log] [blame]
// 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);
});
});
}