| Index: LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
|
| diff --git a/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html b/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4de02a0303e35666eed8f7acbfec1cb60aa01eaf
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
|
| @@ -0,0 +1,118 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<title>TreeWalker: Basic test</title>
|
| +<script src="../../../resources/testharness.js"></script>
|
| +<script src="../../../resources/testharnessreport.js"></script>
|
| +<link rel="stylesheet" href="../../../resources/testharness.css">
|
| +</head>
|
| +<body>
|
| +<p>This test checks the basic functionality of TreeWalker.</p>
|
| +<script>
|
| +function createSampleDOM()
|
| +{
|
| + // Tree structure:
|
| + // #a
|
| + // |
|
| + // +----+----+
|
| + // | |
|
| + // "b" #c
|
| + // |
|
| + // +----+----+
|
| + // | |
|
| + // #d <!--j-->
|
| + // |
|
| + // +----+----+
|
| + // | | |
|
| + // "e" #f "i"
|
| + // |
|
| + // +--+--+
|
| + // | |
|
| + // "g" <!--h-->
|
| + var div = document.createElement('div');
|
| + div.id = 'a';
|
| + div.innerHTML = 'b<div id="c"><div id="d">e<span id="f">g<!--h--></span>i</div><!--j--></div>';
|
| + return div;
|
| +}
|
| +
|
| +test(function ()
|
| +{
|
| + var root = createSampleDOM();
|
| + var walker = document.createTreeWalker(root);
|
| + assert_equals(walker.toString(), '[object TreeWalker]');
|
| + assert_equals(walker.root, root);
|
| + assert_equals(walker.whatToShow, 0xFFFFFFFF);
|
| + assert_equals(walker.filter, null);
|
| + assert_equals(walker.currentNode, root);
|
| + assert_readonly(walker, 'root');
|
| + assert_readonly(walker, 'whatToShow');
|
| + assert_readonly(walker, 'filter');
|
| + assert_idl_attribute(walker, 'parentNode');
|
| + assert_idl_attribute(walker, 'firstChild');
|
| + assert_idl_attribute(walker, 'lastChild');
|
| + assert_idl_attribute(walker, 'previousSibling');
|
| + assert_idl_attribute(walker, 'nextSibling');
|
| + assert_idl_attribute(walker, 'previousNode');
|
| + assert_idl_attribute(walker, 'nextNode');
|
| +}, 'Construct a TreeWalker by document.createTreeWalker().');
|
| +
|
| +test(function ()
|
| +{
|
| + assert_throws(new TypeError(), function () { document.createTreeWalker(); });
|
| + assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(null); });
|
| + assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(undefined); });
|
| + assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(new Object()); });
|
| + assert_throws('NOT_SUPPORTED_ERR', function () { document.createTreeWalker(1); });
|
| +}, 'Give an invalid root node to document.createTreeWalker().');
|
| +
|
| +// |expected| should be an object indicating the expected type of node.
|
| +function assert_node(actual, expected)
|
| +{
|
| + if (expected.type === 'element') {
|
| + assert_equals(actual.nodeType, Node.ELEMENT_NODE, '');
|
| + assert_equals(actual.id, expected.id);
|
| + } else if (expected.type == 'text') {
|
| + assert_equals(actual.nodeType, Node.TEXT_NODE);
|
| + assert_equals(actual.nodeValue, expected.content);
|
| + } else if (expected.type == 'comment') {
|
| + assert_equals(actual.nodeType, Node.COMMENT_NODE);
|
| + assert_equals(actual.nodeValue, expected.content);
|
| + } else {
|
| + assert_unreached();
|
| + }
|
| +}
|
| +
|
| +test(function ()
|
| +{
|
| + var root = createSampleDOM();
|
| + var walker = document.createTreeWalker(root);
|
| + var f = root.lastChild.firstChild.childNodes[1]; // An element node: div#f.
|
| + var body = document.body; // An element outside |root|.
|
| +
|
| + assert_node(walker.currentNode, { type: 'element', id: 'a' });
|
| + assert_equals(walker.parentNode(), null);
|
| + assert_node(walker.currentNode, { type: 'element', id: 'a' });
|
| + assert_node(walker.firstChild(), { type: 'text', content: 'b' });
|
| + assert_node(walker.currentNode, { type: 'text', content: 'b' });
|
| + assert_node(walker.nextSibling(), { type: 'element', id: 'c' });
|
| + assert_node(walker.currentNode, { type: 'element', id: 'c' });
|
| + assert_node(walker.lastChild(), { type: 'comment', content: 'j' });
|
| + assert_node(walker.currentNode, { type: 'comment', content: 'j' });
|
| + assert_node(walker.previousSibling(), { type: 'element', id: 'd' });
|
| + assert_node(walker.currentNode, { type: 'element', id: 'd' });
|
| + assert_node(walker.nextNode(), { type: 'text', content: 'e' });
|
| + assert_node(walker.currentNode, { type: 'text', content: 'e' });
|
| + assert_node(walker.parentNode(), { type: 'element', id: 'd' });
|
| + assert_node(walker.currentNode, { type: 'element', id: 'd' });
|
| + assert_node(walker.previousNode(), { type: 'element', id: 'c' });
|
| + assert_node(walker.currentNode, { type: 'element', id: 'c' });
|
| + assert_equals(walker.nextSibling(), null);
|
| + assert_node(walker.currentNode, { type: 'element', id: 'c' });
|
| + walker.currentNode = f;
|
| + assert_equals(walker.currentNode, f);
|
| +}, 'Walk over nodes.');
|
| +
|
| +// FIXME: Add tests that use |whatToShow| argument and/or |filter| argument.
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|