Blame dom/base/test/test_elementTraversal.html

Packit f0b94e
Packit f0b94e
<html>
Packit f0b94e
Packit f0b94e
https://bugzilla.mozilla.org/show_bug.cgi?id=444722
Packit f0b94e
-->
Packit f0b94e
<head>
Packit f0b94e
  <title>Test for the ElementTraversal spec</title>
Packit f0b94e
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
Packit f0b94e
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
Packit f0b94e
</head>
Packit f0b94e
<body>
Packit f0b94e
ElementTraversal
Packit f0b94e
Packit f0b94e
span
div
Packit f0b94e
Packit f0b94e

p1

Packit f0b94e
text here
Packit f0b94e

p2

Packit f0b94e
abcde
Packit f0b94e
Packit f0b94e
Packit f0b94e
<script class="testbody" type="text/javascript">
Packit f0b94e
Packit f0b94e
var c = document.getElementById('content');
Packit f0b94e
var cc = c.children;
Packit f0b94e
Packit f0b94e
var contents = ["span", "div", "p1", "p2", "abcde"];
Packit f0b94e
function testContent() {
Packit f0b94e
  for(i = 0, e = c.firstElementChild; e; e = e.nextElementSibling, i++) {
Packit f0b94e
    is(e.textContent, contents[i], "wrong element contents");
Packit f0b94e
    is(e, c.children[i], "wrong element");
Packit f0b94e
    is(e, c.children.item(i), "wrong element");
Packit f0b94e
  }
Packit f0b94e
  is(i, contents.length, "wrong number of element siblings");
Packit f0b94e
  is(i, c.childElementCount, "wrong number of child elements");
Packit f0b94e
  is(i, c.children.length, "wrong number of child elements");
Packit f0b94e
Packit f0b94e
  // Nuke all elements to retest the child list.
Packit f0b94e
  c.innerHTML = c.innerHTML;
Packit f0b94e
Packit f0b94e
  for(i--, e = c.lastElementChild; e; e = e.previousElementSibling, i--) {
Packit f0b94e
    is(e.textContent, contents[i], "g element contents");
Packit f0b94e
    is(e, c.children[i], "wrong element");
Packit f0b94e
    is(e, c.children.item(i), "wrong element");
Packit f0b94e
  }
Packit f0b94e
  is(i, -1, "wrong number of element siblings");
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
testContent();
Packit f0b94e
Packit f0b94e
is(cc.length, 5, "wrong number of child elements");
Packit f0b94e
is(c.childElementCount, 5, "wrong number of child elements");
Packit f0b94e
Packit f0b94e
var p1 = document.getElementById('p1');
Packit f0b94e
var p2 = document.getElementById('p2');
Packit f0b94e
is(p1.nextElementSibling, p2, "wrong sibling");
Packit f0b94e
is(p2.previousElementSibling, p1, "wrong sibling");
Packit f0b94e
Packit f0b94e
u = document.createElement('u');
Packit f0b94e
u.textContent = 'u';
Packit f0b94e
c.insertBefore(u, p2);
Packit f0b94e
is(cc.length, 6, "wrong number of child elements");
Packit f0b94e
is(c.childElementCount, 6, "wrong number of child elements");
Packit f0b94e
is(p1.nextElementSibling, u, "wrong sibling");
Packit f0b94e
is(p2.previousElementSibling, u, "wrong sibling");
Packit f0b94e
Packit f0b94e
contents.splice(3, 0, "u");
Packit f0b94e
testContent();
Packit f0b94e
Packit f0b94e
var p1 = document.getElementById('p1');
Packit f0b94e
var p2 = document.getElementById('p2');
Packit f0b94e
c.removeChild(p1);
Packit f0b94e
c.removeChild(p2);
Packit f0b94e
is(cc.length, 4, "wrong number of child elements");
Packit f0b94e
is(c.childElementCount, 4, "wrong number of child elements");
Packit f0b94e
Packit f0b94e
contents.splice(2, 1);
Packit f0b94e
contents.splice(3, 1);
Packit f0b94e
testContent();
Packit f0b94e
Packit f0b94e
tw = document.createTreeWalker(document.documentElement,
Packit f0b94e
                               NodeFilter.SHOW_ELEMENT,
Packit f0b94e
                               null);
Packit f0b94e
e = document.documentElement;
Packit f0b94e
Packit f0b94e
elemsTested = 0;
Packit f0b94e
done = false;
Packit f0b94e
while(!done) {
Packit f0b94e
  is(tw.currentNode, e, "wrong element:" + tw.currentNode + " != " + e);
Packit f0b94e
  elemsTested++;
Packit f0b94e
  
Packit f0b94e
  if(tw.firstChild()) {
Packit f0b94e
    e = e.firstElementChild;
Packit f0b94e
  }
Packit f0b94e
  else {
Packit f0b94e
    while (!tw.nextSibling()) {
Packit f0b94e
      if (!tw.parentNode()) {
Packit f0b94e
        done = true;
Packit f0b94e
        break;
Packit f0b94e
      }
Packit f0b94e
      e = e.parentNode;
Packit f0b94e
    }
Packit f0b94e
    e = e.nextElementSibling;
Packit f0b94e
  }
Packit f0b94e
}
Packit f0b94e
is(elemsTested, document.getElementsByTagName("*").length,
Packit f0b94e
   "wrong number of elements");
Packit f0b94e
</script>
Packit f0b94e
Packit f0b94e
</body>
Packit f0b94e
</html>