summaryrefslogtreecommitdiffstats
path: root/dom/base/test/file_bug357450.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/test/file_bug357450.js')
-rw-r--r--dom/base/test/file_bug357450.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/dom/base/test/file_bug357450.js b/dom/base/test/file_bug357450.js
new file mode 100644
index 0000000000..116ef2ac1c
--- /dev/null
+++ b/dom/base/test/file_bug357450.js
@@ -0,0 +1,74 @@
+/** Test for Bug 357450 **/
+
+SimpleTest.waitForExplicitFinish();
+
+function testGetElements(root, classtestCount) {
+ ok(root.getElementsByClassName, "getElementsByClassName exists");
+ is(
+ typeof root.getElementsByClassName,
+ "function",
+ "getElementsByClassName is a function"
+ );
+
+ var nodes = root.getElementsByClassName("f");
+
+ is(typeof nodes.item, "function");
+ is(typeof nodes.length, "number");
+ is(nodes.length, 0, "string with no matching class should get an empty list");
+
+ nodes = root.getElementsByClassName("foo");
+ ok(nodes, "should have nodelist object");
+
+ // HTML5 says ints are allowed in class names
+ // should match int class
+
+ nodes = root.getElementsByClassName("1");
+ is(nodes[0], $("int-class"), "match integer class name");
+ nodes = root.getElementsByClassName([1]);
+ is(nodes[0], $("int-class"), "match integer class name 2");
+ nodes = root.getElementsByClassName(["1 junk"]);
+
+ is(nodes.length, 0, "two classes, but no elements have both");
+
+ nodes = root.getElementsByClassName("test1");
+ is(nodes[0], $("test1"), "Id and class name turn up the same node");
+ nodes = root.getElementsByClassName("test1 test2");
+ is(nodes.length, 0, "two classes, but no elements have both");
+
+ // WHATWG examples
+ nodes = document.getElementById("example").getElementsByClassName("aaa");
+ is(nodes.length, 2, "returns 2 elements");
+
+ nodes = document.getElementById("example").getElementsByClassName("ccc bbb");
+ is(
+ nodes.length,
+ 1,
+ "only match elements that have all the classes specified in that array. tokenize string arg."
+ );
+ is(nodes[0], $("p3"), "matched tokenized string");
+
+ nodes = document.getElementById("example").getElementsByClassName("");
+ is(nodes.length, 0, "class name with empty string shouldn't return nodes");
+
+ nodes = root.getElementsByClassName({});
+ ok(nodes, "bogus arg shouldn't be null");
+ is(typeof nodes.item, "function");
+ is(typeof nodes.length, "number");
+ is(nodes.length, 0, "bogus arg should get an empty nodelist");
+}
+
+addLoadEvent(function() {
+ if (document.getElementsByName) {
+ var anchorNodes = document.getElementsByName("nametest");
+ is(anchorNodes.length, 1, "getElementsByName still works");
+ is(
+ anchorNodes[0].getAttribute("name"),
+ "nametest",
+ "getElementsByName still works"
+ );
+ }
+ testGetElements($("content"), 1);
+ testGetElements(document.documentElement, 3);
+ testGetElements(document, 3);
+});
+addLoadEvent(SimpleTest.finish);