Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7404)

Unified Diff: client/tests/client/html/NodeTests.dart

Issue 9199002: Support various range methods on NodeList. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge with HEAD Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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]));

Powered by Google App Engine
This is Rietveld 408576698