blob: 247c4e8efb417d3fdad4482ed895a08d95c3de5c [file] [log] [blame]
// Copyright (c) 2020, 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.
import 'dart:html';
import 'dart:html_common';
import 'package:expect/minitest.dart';
main() {
var t1 = new Text('T1'),
t2 = new Text('T2'),
t3 = new Text('T3'),
t4 = new Text('T4');
var d1 = new DivElement(), d2 = new DivElement(), d3 = new DivElement();
createTestDiv() {
var testDiv = new DivElement();
testDiv
..append(t1)
..append(d1)
..append(t2)
..append(d2)
..append(t3)
..append(d3)
..append(t4);
return testDiv;
}
test('FilteredElementList.insert test', () {
var i = new DivElement();
// Insert before first element
var nodeList = createTestDiv();
var elementList = new FilteredElementList(nodeList);
elementList.insert(0, i);
expect(nodeList.childNodes[0], t1);
expect(nodeList.childNodes[1], i);
expect(nodeList.childNodes[2], d1);
// Insert in middle
nodeList = createTestDiv();
elementList = new FilteredElementList(nodeList);
elementList.insert(1, i);
expect(nodeList.childNodes[2], t2);
expect(nodeList.childNodes[3], i);
expect(nodeList.childNodes[4], d2);
// Insert before last element
nodeList = createTestDiv();
elementList = new FilteredElementList(nodeList);
elementList.insert(2, i);
expect(nodeList.childNodes[4], t3);
expect(nodeList.childNodes[5], i);
expect(nodeList.childNodes[6], d3);
});
test('FilteredElementList.insertAll test', () {
var i1 = new DivElement(), i2 = new DivElement();
var it = [i1, i2];
// Insert before first element
var nodeList = createTestDiv();
var elementList = new FilteredElementList(nodeList);
elementList.insertAll(0, it);
expect(nodeList.childNodes[0], t1);
expect(nodeList.childNodes[1], i1);
expect(nodeList.childNodes[2], i2);
expect(nodeList.childNodes[3], d1);
// Insert in middle
nodeList = createTestDiv();
elementList = new FilteredElementList(nodeList);
elementList.insertAll(1, it);
expect(nodeList.childNodes[2], t2);
expect(nodeList.childNodes[3], i1);
expect(nodeList.childNodes[4], i2);
expect(nodeList.childNodes[5], d2);
// Insert before last element
nodeList = createTestDiv();
elementList = new FilteredElementList(nodeList);
elementList.insertAll(2, it);
expect(nodeList.childNodes[4], t3);
expect(nodeList.childNodes[5], i1);
expect(nodeList.childNodes[6], i2);
expect(nodeList.childNodes[7], d3);
});
test('FilteredElementList.insertAndRemove', () {
var emptyDiv = new DivElement();
var elementList = new FilteredElementList(emptyDiv);
expect(() => elementList[0], throwsRangeError);
expect(() => elementList.insert(2, new BRElement()), throwsRangeError);
var br = new BRElement();
elementList.insert(0, br);
expect(elementList.removeLast(), br);
elementList.add(br);
expect(elementList.remove(br), isTrue);
var br2 = new BRElement();
elementList.add(br);
expect(elementList.remove(br2), isFalse);
expect(elementList[0], br);
expect(() => elementList[1], throwsRangeError);
});
}