зеркало из https://github.com/mozilla/pjs.git
Tests for bug 628938; r=smaug a=test-only
This commit is contained in:
Родитель
c0f6d411d8
Коммит
d492fc5ee1
|
@ -468,6 +468,7 @@ _TEST_FILES2 = \
|
|||
test_bug558431.html \
|
||||
file_bug558431.html \
|
||||
file_bug558431.html^headers^ \
|
||||
test_bug628938.html \
|
||||
$(NULL)
|
||||
|
||||
# This test fails on the Mac for some reason
|
||||
|
|
|
@ -0,0 +1,240 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=628938
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 628938</title>
|
||||
<script type="application/javascript" src="/MochiKit/packed.js"></script>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=628938">Mozilla Bug 628938</a>
|
||||
<p id="display"></p>
|
||||
<foo id="content" style="display: none">
|
||||
<div><div>foo</div></div>
|
||||
<span> bar </span>
|
||||
<div>tulip<span>bar</span></div>
|
||||
<span></span>
|
||||
<div>foo</div>
|
||||
<span></span>
|
||||
<div>bar</div>
|
||||
<span></span>
|
||||
<div>foobar</div>
|
||||
</foo>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 628938 **/
|
||||
|
||||
var gResults = [];
|
||||
var gIdx = 0;
|
||||
|
||||
function walkTree(walker)
|
||||
{
|
||||
if(walker.firstChild()) {
|
||||
do {
|
||||
if (walker.currentNode.nodeType == Node.ELEMENT_NODE) {
|
||||
ok(gResults[gIdx][0], "current node should be an element");
|
||||
is(walker.currentNode.nodeName, gResults[gIdx][1],
|
||||
"current node name should be " + gResults[gIdx][1]);
|
||||
} else {
|
||||
ok(!gResults[gIdx][0], "current node shouldn't be an element");
|
||||
is(walker.currentNode.nodeValue, gResults[gIdx][1],
|
||||
"current node value should be " + gResults[gIdx][1]);
|
||||
}
|
||||
gIdx++;
|
||||
// Recursively walk the rest of the sub-tree.
|
||||
walkTree(walker);
|
||||
} while(walker.nextSibling());
|
||||
|
||||
// don't forget to return the treewalker to it's previous state
|
||||
// before exiting the function
|
||||
walker.parentNode();
|
||||
}
|
||||
}
|
||||
|
||||
function regularWalk()
|
||||
{
|
||||
gResults = [
|
||||
[ false, "\n " ],
|
||||
[ true, "DIV" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, " bar " ],
|
||||
[ false, "\n " ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "tulip" ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "bar" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "bar" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "\n " ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foobar" ],
|
||||
[ false, "\n" ],
|
||||
];
|
||||
var walker = document.createTreeWalker(document.getElementById('content'),
|
||||
NodeFilter.SHOW_ALL, null, true);
|
||||
|
||||
walkTree(walker);
|
||||
|
||||
gIdx = 0;
|
||||
}
|
||||
|
||||
function noWhiteSpaceWalk()
|
||||
{
|
||||
gResults = [
|
||||
[ true, "DIV" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, " bar " ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "tulip" ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "bar" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "bar" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foobar" ],
|
||||
];
|
||||
var walker = document.createTreeWalker(document.getElementById('content'),
|
||||
NodeFilter.SHOW_ALL,
|
||||
{
|
||||
acceptNode : function(node) {
|
||||
if (node.nodeType == Node.TEXT_NODE &&
|
||||
!(/[^\t\n\r ]/.test(node.nodeValue)))
|
||||
return NodeFilter.FILTER_REJECT;
|
||||
return NodeFilter.FILTER_ACCEPT;
|
||||
}
|
||||
}, true);
|
||||
|
||||
walkTree(walker);
|
||||
|
||||
gIdx = 0;
|
||||
}
|
||||
|
||||
function onlyElementsWalk()
|
||||
{
|
||||
gResults = [
|
||||
[ true, "DIV" ],
|
||||
[ true, "DIV" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
];
|
||||
var walker = document.createTreeWalker(document.getElementById('content'),
|
||||
NodeFilter.SHOW_ELEMENT, null, true);
|
||||
|
||||
walkTree(walker);
|
||||
|
||||
gIdx = 0;
|
||||
}
|
||||
|
||||
function onlyDivSubTreeWalk()
|
||||
{
|
||||
gResults = [
|
||||
[ true, "DIV" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "tulip" ],
|
||||
[ true, "SPAN" ],
|
||||
[ false, "bar" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "bar" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foobar" ],
|
||||
];
|
||||
var walker = document.createTreeWalker(document.getElementById('content'),
|
||||
NodeFilter.SHOW_ALL,
|
||||
{
|
||||
acceptNode : function(node) {
|
||||
if (node.nodeType == Node.TEXT_NODE &&
|
||||
!(/[^\t\n\r ]/.test(node.nodeValue)))
|
||||
return NodeFilter.FILTER_REJECT;
|
||||
|
||||
while (node) {
|
||||
if (node.nodeName == "DIV")
|
||||
return NodeFilter.FILTER_ACCEPT;
|
||||
node = node.parentNode;
|
||||
}
|
||||
return NodeFilter.FILTER_SKIP;
|
||||
}
|
||||
}, true);
|
||||
|
||||
walkTree(walker);
|
||||
|
||||
gIdx = 0;
|
||||
}
|
||||
|
||||
function onlyDivDataWalk()
|
||||
{
|
||||
gResults = [
|
||||
[ true, "DIV" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "tulip" ],
|
||||
[ true, "SPAN" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foo" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "bar" ],
|
||||
[ true, "DIV" ],
|
||||
[ false, "foobar" ],
|
||||
];
|
||||
var walker = document.createTreeWalker(document.getElementById('content'),
|
||||
NodeFilter.SHOW_ALL,
|
||||
{
|
||||
acceptNode : function(node) {
|
||||
if (node.nodeName == "DIV" ||
|
||||
(node.parentNode &&
|
||||
node.parentNode.nodeName == "DIV"))
|
||||
return NodeFilter.FILTER_ACCEPT;
|
||||
return NodeFilter.FILTER_SKIP;
|
||||
}
|
||||
}, true);
|
||||
|
||||
walkTree(walker);
|
||||
|
||||
gIdx = 0;
|
||||
}
|
||||
|
||||
regularWalk();
|
||||
noWhiteSpaceWalk();
|
||||
onlyElementsWalk();
|
||||
onlyDivSubTreeWalk();
|
||||
onlyDivDataWalk();
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче