1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_elementTraversal.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,111 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=444722 1.8 +--> 1.9 +<head> 1.10 + <title>Test for the ElementTraversal spec</title> 1.11 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.13 +</head> 1.14 +<body> 1.15 +<a target="_blank" href="http://dev.w3.org/2006/webapi/ElementTraversal/publish/ElementTraversal.html">ElementTraversal</a> 1.16 +<div id="content" style="display: none"> 1.17 +<span>span</span><div>div</div> 1.18 +<!--comment goes here--> 1.19 +<p id="p1">p1</p> 1.20 +text here 1.21 +<p id="p2">p2</p> 1.22 +<span>a<span>b</span>c<span>d</span>e</span> 1.23 +</div> 1.24 +<pre id="test"> 1.25 +<script class="testbody" type="text/javascript"> 1.26 + 1.27 +var c = document.getElementById('content'); 1.28 +var cc = c.children; 1.29 + 1.30 +var contents = ["span", "div", "p1", "p2", "abcde"]; 1.31 +function testContent() { 1.32 + for(i = 0, e = c.firstElementChild; e; e = e.nextElementSibling, i++) { 1.33 + is(e.textContent, contents[i], "wrong element contents"); 1.34 + is(e, c.children[i], "wrong element"); 1.35 + is(e, c.children.item(i), "wrong element"); 1.36 + } 1.37 + is(i, contents.length, "wrong number of element siblings"); 1.38 + is(i, c.childElementCount, "wrong number of child elements"); 1.39 + is(i, c.children.length, "wrong number of child elements"); 1.40 + 1.41 + // Nuke all elements to retest the child list. 1.42 + c.innerHTML = c.innerHTML; 1.43 + 1.44 + for(i--, e = c.lastElementChild; e; e = e.previousElementSibling, i--) { 1.45 + is(e.textContent, contents[i], "g element contents"); 1.46 + is(e, c.children[i], "wrong element"); 1.47 + is(e, c.children.item(i), "wrong element"); 1.48 + } 1.49 + is(i, -1, "wrong number of element siblings"); 1.50 +} 1.51 + 1.52 +testContent(); 1.53 + 1.54 +is(cc.length, 5, "wrong number of child elements"); 1.55 +is(c.childElementCount, 5, "wrong number of child elements"); 1.56 + 1.57 +var p1 = document.getElementById('p1'); 1.58 +var p2 = document.getElementById('p2'); 1.59 +is(p1.nextElementSibling, p2, "wrong sibling"); 1.60 +is(p2.previousElementSibling, p1, "wrong sibling"); 1.61 + 1.62 +u = document.createElement('u'); 1.63 +u.textContent = 'u'; 1.64 +c.insertBefore(u, p2); 1.65 +is(cc.length, 6, "wrong number of child elements"); 1.66 +is(c.childElementCount, 6, "wrong number of child elements"); 1.67 +is(p1.nextElementSibling, u, "wrong sibling"); 1.68 +is(p2.previousElementSibling, u, "wrong sibling"); 1.69 + 1.70 +contents.splice(3, 0, "u"); 1.71 +testContent(); 1.72 + 1.73 +var p1 = document.getElementById('p1'); 1.74 +var p2 = document.getElementById('p2'); 1.75 +c.removeChild(p1); 1.76 +c.removeChild(p2); 1.77 +is(cc.length, 4, "wrong number of child elements"); 1.78 +is(c.childElementCount, 4, "wrong number of child elements"); 1.79 + 1.80 +contents.splice(2, 1); 1.81 +contents.splice(3, 1); 1.82 +testContent(); 1.83 + 1.84 +tw = document.createTreeWalker(document.documentElement, 1.85 + NodeFilter.SHOW_ELEMENT, 1.86 + null); 1.87 +e = document.documentElement; 1.88 + 1.89 +elemsTested = 0; 1.90 +done = false; 1.91 +while(!done) { 1.92 + is(tw.currentNode, e, "wrong element:" + tw.currentNode + " != " + e); 1.93 + elemsTested++; 1.94 + 1.95 + if(tw.firstChild()) { 1.96 + e = e.firstElementChild; 1.97 + } 1.98 + else { 1.99 + while (!tw.nextSibling()) { 1.100 + if (!tw.parentNode()) { 1.101 + done = true; 1.102 + break; 1.103 + } 1.104 + e = e.parentNode; 1.105 + } 1.106 + e = e.nextElementSibling; 1.107 + } 1.108 +} 1.109 +is(elemsTested, document.getElementsByTagName("*").length, 1.110 + "wrong number of elements"); 1.111 +</script> 1.112 +</pre> 1.113 +</body> 1.114 +</html>