Index: client/tests/client/html/NodeTests.dart |
diff --git a/client/tests/client/html/NodeTests.dart b/client/tests/client/html/NodeTests.dart |
index c5728507a459ace5f874951bc1adc108d9d8fce1..0389d83e2c4bc51953daa46f31f3e811a8c1563d 100644 |
--- a/client/tests/client/html/NodeTests.dart |
+++ b/client/tests/client/html/NodeTests.dart |
@@ -63,14 +63,13 @@ void testNode() { |
Expect.isTrue(node.nodes[2] is Comment); |
}); |
- // TODO(nweiz): make this work |
- // test('[]=', () { |
- // var node = makeNodeWithChildren(); |
- // node.nodes[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('[]=', () { |
+ var node = makeNodeWithChildren(); |
+ node.nodes[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('add', () { |
var node = makeNode(); |
@@ -110,6 +109,156 @@ 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])); |