diff options
Diffstat (limited to 'dom/base/test/file_bug357450.js')
-rw-r--r-- | dom/base/test/file_bug357450.js | 74 |
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); |