зеркало из https://github.com/mozilla/gecko-dev.git
b=601756 Tests for TreeWalker.nextSibling, previousSibling, as suggested by Traversal spec r=smaug a=test
--HG-- extra : rebase_source : c0119c7cd025ad199f2a1623843836eace58ea1c
This commit is contained in:
Родитель
cf5ad74ca3
Коммит
afeed87706
|
@ -442,6 +442,7 @@ _TEST_FILES2 = \
|
|||
file_bug604660-5.xml \
|
||||
file_bug604660-6.xsl \
|
||||
test_bug605982.html \
|
||||
test_treewalker_nextsibling.xml \
|
||||
$(NULL)
|
||||
|
||||
# This test fails on the Mac for some reason
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
<?xml-stylesheet type="text/css" href="/tests/SimpleTest/test.css" ?>
|
||||
<root>
|
||||
<script type="text/javascript" src="/MochiKit/packed.js" xmlns="http://www.w3.org/1999/xhtml"/>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js" xmlns="http://www.w3.org/1999/xhtml"/>
|
||||
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none;"></div>
|
||||
<textarea id="test" style="height: 300px; max-width: 800px; overflow: scroll;"
|
||||
rows="10" cols="160" readonly="readonly"/>
|
||||
</body>
|
||||
|
||||
<pre id="test" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<script class="testbody" type="text/javascript" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<![CDATA[
|
||||
function setPass(aNode) {
|
||||
aNode.setUserData("pass", true, null);
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
window.addEventListener("load", function() {
|
||||
const nsIDOMNodeFilter = Components.interfaces.nsIDOMNodeFilter;
|
||||
var walker = document.createTreeWalker(
|
||||
document,
|
||||
nsIDOMNodeFilter.SHOW_TEXT | nsIDOMNodeFilter.SHOW_DOCUMENT,
|
||||
null,
|
||||
true
|
||||
);
|
||||
setPass(walker.firstChild());
|
||||
while (walker.nextSibling()) {
|
||||
setPass(walker.currentNode);
|
||||
}
|
||||
|
||||
/*
|
||||
From http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/traversal.html#Traversal-TreeWalker
|
||||
Omitting nodes from the logical view of a subtree can result in a structure that
|
||||
is substantially different from the same subtree in the complete, unfiltered
|
||||
document. Nodes that are siblings in the TreeWalker view may be children of
|
||||
different, widely separated nodes in the original view. For instance, consider a
|
||||
NodeFilter that skips all nodes except for Text nodes and the root node of a
|
||||
document. In the logical view that results, all text nodes will be siblings and
|
||||
appear as direct children of the root node, no matter how deeply nested the
|
||||
structure of the original document.
|
||||
*/
|
||||
|
||||
walker2 = document.createTreeWalker(document, nsIDOMNodeFilter.SHOW_TEXT, null, true);
|
||||
while (walker2.nextNode()) {
|
||||
var cNode = walker2.currentNode;
|
||||
ok(cNode.getUserData("pass"), "Every text node should appear: " + walker2.currentNode.nodeValue);
|
||||
walker.currentNode = cNode;
|
||||
var parent = walker.parentNode();
|
||||
is(parent, document, "parent of text node should be document");
|
||||
|
||||
// Check nextSibling's previousSibling.
|
||||
walker.currentNode = cNode;
|
||||
if (walker.nextSibling()) {
|
||||
is(cNode, walker.previousSibling(), "nextSibling.previousSibling should be consistent");
|
||||
}
|
||||
|
||||
// Check previousSibling's nextSibling.
|
||||
walker.currentNode = cNode;
|
||||
if (walker.previousSibling()) {
|
||||
is(cNode, walker.nextSibling(), "previousSibling.nextSibling should be consistent");
|
||||
}
|
||||
}
|
||||
SimpleTest.finish();
|
||||
}, true);
|
||||
]]>
|
||||
</script>
|
||||
</pre>
|
||||
|
||||
<test>
|
||||
zero
|
||||
<one>
|
||||
one-A
|
||||
<two>
|
||||
two-A
|
||||
</two>
|
||||
<two>
|
||||
two-B
|
||||
</two>
|
||||
one-B
|
||||
</one>
|
||||
<one>
|
||||
one-C
|
||||
<two>
|
||||
two-D
|
||||
</two>
|
||||
<two>
|
||||
two-E
|
||||
</two>
|
||||
one-F
|
||||
</one>
|
||||
zero
|
||||
</test>
|
||||
</root>
|
||||
|
Загрузка…
Ссылка в новой задаче