diff options
Diffstat (limited to 'dom/base/test/file_bug357450.js')
-rw-r--r-- | dom/base/test/file_bug357450.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/dom/base/test/file_bug357450.js b/dom/base/test/file_bug357450.js new file mode 100644 index 000000000..c432052b8 --- /dev/null +++ b/dom/base/test/file_bug357450.js @@ -0,0 +1,64 @@ +/** 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); |