Index: client/tests/client/html/NodeTests.dart |
diff --git a/client/tests/client/html/NodeTests.dart b/client/tests/client/html/NodeTests.dart |
index ced2616c82961392eb992c7e34d1d206ea14480f..0389d83e2c4bc51953daa46f31f3e811a8c1563d 100644 |
--- a/client/tests/client/html/NodeTests.dart |
+++ b/client/tests/client/html/NodeTests.dart |
@@ -109,6 +109,176 @@ void testNode() { |
Expect.isTrue(node.nodes[5] is InputElement); |
}); |
+ group('setRange', () { |
+ test('one node', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.setRange(1, 1, [new Element.tag('hr')]); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ Expect.isTrue(node.nodes[1] is HRElement); |
+ Expect.isTrue(node.nodes[2] is Comment); |
+ }); |
+ |
+ test('several nodes', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.setRange(1, 2, [ |
+ new Element.tag('hr'), new Element.tag('img')]); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ Expect.isTrue(node.nodes[1] is HRElement); |
+ Expect.isTrue(node.nodes[2] is ImageElement); |
+ }); |
+ |
+ test('fewer than all source nodes', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.setRange(1, 1, [ |
+ new Element.tag('hr'), new Element.tag('img')]); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ Expect.isTrue(node.nodes[1] is HRElement); |
+ Expect.isTrue(node.nodes[2] is Comment); |
+ }); |
+ |
+ test('startFrom', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.setRange(1, 1, [ |
+ new Element.tag('hr'), new Element.tag('img')], 1); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ Expect.isTrue(node.nodes[1] is ImageElement); |
+ Expect.isTrue(node.nodes[2] is Comment); |
+ }); |
+ |
+ test('negative length', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.setRange(1, -1, [new Element.tag('hr')]), |
+ (e) => e is IllegalArgumentException); |
+ }); |
+ |
+ test('off the end of dest', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws(() { |
+ node.nodes.setRange(2, 2, [ |
+ new Element.tag('hr'), new Element.tag('img')]); |
+ }, (e) => e is IndexOutOfRangeException); |
+ }); |
+ |
+ test('off the beginning of dest', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.setRange(-1, 1, [new Element.tag('hr')]), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ |
+ test('off the end of source', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.setRange(1, 2, [new Element.tag('hr')]), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ |
+ test('off the beginning of source', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.setRange(1, 1, [new Element.tag('hr')], -1), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ }); |
+ |
+ group('removeRange', () { |
+ test('one node', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.removeRange(1, 1); |
+ Expect.equals(2, node.nodes.length); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ Expect.isTrue(node.nodes[1] is Comment); |
+ }); |
+ |
+ test('two nodes', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.removeRange(1, 2); |
+ Expect.equals(1, node.nodes.length); |
+ Expect.isTrue(node.nodes[0] is Text); |
+ }); |
+ |
+ test('all nodes', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes.removeRange(0, 3); |
+ Expect.isTrue(node.nodes.isEmpty()); |
+ }); |
+ |
+ test('negative length', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.removeRange(2, -1), |
+ (e) => e is IllegalArgumentException); |
+ }); |
+ |
+ test('off the end', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.removeRange(2, 3), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ |
+ test('off the beginning', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.throws( |
+ () => node.nodes.removeRange(-1, 1), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ }); |
+ |
+ group('getRange', () { |
+ test('one node', () { |
+ var range = makeNodeWithChildren().nodes.getRange(2, 1); |
+ Expect.equals(1, range.length); |
+ Expect.isTrue(range[0] is Comment); |
+ }); |
+ |
+ test('two nodes', () { |
+ var range = makeNodeWithChildren().nodes.getRange(1, 2); |
+ Expect.equals(2, range.length); |
+ Expect.isTrue(range[0] is BRElement); |
+ Expect.isTrue(range[1] is Comment); |
+ }); |
+ |
+ test('negative length', () { |
+ Expect.throws( |
+ () => makeNodeWithChildren().nodes.getRange(2, -1), |
+ (e) => e is IllegalArgumentException); |
+ }); |
+ |
+ test('off the end', () { |
+ Expect.throws( |
+ () => makeNodeWithChildren().nodes.getRange(2, 2), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ |
+ test('off the beginning', () { |
+ Expect.throws( |
+ () => makeNodeWithChildren().nodes.getRange(-1, 2), |
+ (e) => e is IndexOutOfRangeException); |
+ }); |
+ }); |
+ |
+ test('indexOf', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.equals(0, node.nodes.indexOf(node.nodes[0])); |
+ Expect.equals(1, node.nodes.indexOf(node.nodes[1])); |
+ Expect.equals(2, node.nodes.indexOf(node.nodes[2])); |
+ Expect.equals(-1, node.nodes.indexOf(new Element.tag('br'))); |
+ Expect.equals(1, node.nodes.indexOf(node.nodes[1], 1)); |
+ Expect.equals(-1, node.nodes.indexOf(node.nodes[1], 2)); |
+ }); |
+ |
+ test('lastIndexOf', () { |
+ var node = makeNodeWithChildren(); |
+ Expect.equals(0, node.nodes.lastIndexOf(node.nodes[0])); |
+ Expect.equals(1, node.nodes.lastIndexOf(node.nodes[1])); |
+ Expect.equals(2, node.nodes.lastIndexOf(node.nodes[2])); |
+ Expect.equals(-1, node.nodes.lastIndexOf(new Element.tag('br'))); |
+ Expect.equals(1, node.nodes.lastIndexOf(node.nodes[1], 1)); |
+ Expect.equals(-1, node.nodes.lastIndexOf(node.nodes[1], 0)); |
+ }); |
+ |
test('clear', () { |
var node = makeNodeWithChildren(); |
node.nodes.clear(); |