Bug 357450. Unit tests for getElementsByClassName. r=jst, sr=peterv

This commit is contained in:
sayrer%gmail.com 2007-02-01 22:49:09 +00:00
Родитель 92d48575ec
Коммит c5be689b2c
6 изменённых файлов: 258 добавлений и 0 удалений

Просмотреть файл

@ -46,6 +46,11 @@ include $(topsrcdir)/config/rules.mk
_TEST_FILES = test_bug5141.html \
test_bug51034.html \
test_bug357450.js \
test_bug357450.html \
test_bug357450.xhtml \
test_bug357450.xul \
test_bug357450_svg.xhtml \
$(NULL)
libs:: $(_TEST_FILES)

Просмотреть файл

@ -0,0 +1,42 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=357450
-->
<head>
<title>Test for Bug 357450</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="test_bug357450.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<style type="text/css">
</style>
</head>
<body>
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=357450"
target="_blank" >Mozilla Bug 357450</a>
<p id="display"></p>
<span class="classtest">hmm</span>
<span class="classtest">hmm</span>
<div id="content" style="display: block">
<a name="nametest">hmm</a>
<b class="foo">hmm</b>
<b id="test1" class="test1">hmm</b>
<b id="test2" class="test2">hmm</b>
<b id="int-class" class="1">hmm</b>
<span class="classtest">hmm</span>
<div id="example">
<p id="p1" class="aaa bbb"/>
<p id="p2" class="aaa ccc"/>
<p id="p3" class="bbb ccc"/>
</div>
</div>
<pre id="test">
</pre>
</body>
</html>

Просмотреть файл

@ -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);

Просмотреть файл

@ -0,0 +1,41 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=357450
-->
<head>
<title>Test for Bug 357450</title>
<script type="text/javascript" src="/MochiKit/packed.js"></script>
<script type="text/javascript"
src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="test_bug357450.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=357450"
target="_blank">Mozilla Bug 357450</a>
<p id="display"></p>
<span class="classtest">hmm</span>
<span class="classtest">hmm</span>
<div id="content" style="display: block">
<a name="nametest">hmm</a>
<b class="foo">hmm</b>
<b id="test1" class="test1">hmm</b>
<b id="test2" class="test2">hmm</b>
<b id="int-class" class="1">hmm</b>
<span class="classtest">hmm</span>
<div id="example">
<p id="p1" class="aaa bbb"/>
<p id="p2" class="aaa ccc"/>
<p id="p3" class="bbb ccc"/>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=357450
-->
<window title="Mozilla Bug 357450"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<title>Test for Bug 357450</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript"
src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="test_bug357450.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=357450"
target="_blank">Mozilla Bug 357450</a>
<p id="display"></p>
<div id="content" style="display: block">
<a class="classtest" name="nametest">hmm</a>
<b class="foo">hmm</b>
<b id="test1" class="test1">hmm</b>
<b id="test2" class="test2">hmm</b>
<b id="int-class" class="1">hmm</b>
<div id="example">
<p id="p1" class="aaa bbb"/>
<p id="p2" class="aaa ccc"/>
<p id="p3" class="bbb ccc"/>
</div>
</div>
<pre id="test">
</pre>
</body>
<svg xmlns="http://www.w3.org/2000/svg"
height="100" width="100" style="float:left">
<path d="M38,38c0-12,24-15,23-2c0,9-16,13-16,23v7h11v-4c0-9,17-12,17-27c-2-22-45-22-45,3zM45,70h11v11h-11z" fill="#371"/>
<circle cx="50" cy="50" r="45" class="classtest"
fill="none" stroke="#371" stroke-width="10"/>
</svg>
<xul:label class="classtest"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
hmm
</xul:label>
</window>

Просмотреть файл

@ -0,0 +1,48 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=357450
-->
<head>
<title>Test for Bug 357450</title>
<script type="text/javascript" src="/MochiKit/packed.js"></script>
<script type="text/javascript"
src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="test_bug357450.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=357450"
target="_blank">Mozilla Bug 357450</a>
<p id="display"></p>
<span class="classtest">hmm</span>
<span class="classtest">hmm</span>
<div id="content" style="display: block">
<a name="nametest">hmm</a>
<b class="foo">hmm</b>
<b id="test1" class="test1">hmm</b>
<b id="test2" class="test2">hmm</b>
<b id="int-class" class="1">hmm</b>
<svg xmlns="http://www.w3.org/2000/svg"
height="100" width="100" style="float:left">
<path d="M38,38c0-12,24-15,23-2c0,9-16,13-16,23v7h11v-4c0-9,17-12,17-27c-2-22-45-22-45,3zM45,70h11v11h-11z" fill="#371"/>
<circle cx="50" cy="50" r="45" class="classtest"
fill="none" stroke="#371" stroke-width="10"/>
</svg>
<div id="example">
<p id="p1" class="aaa bbb"/>
<p id="p2" class="aaa ccc"/>
<p id="p3" class="bbb ccc"/>
</div>
</div>
</body>
</html>