<!doctype html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div style="display:none">

  <!-- Direct matching, no need to backtrack. -->
  <div></div>
  <table></table>
  <h1></h1>
  <blockquote>
    <p></p>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <ul>
      <li><p id="target1">Target 1</p></li>
    </ul>
  </blockquote>

  <!-- A first block lacks the <p>. -->
  <div></div>
  <table></table>
  <h1></h1>
  <blockquote>
    <p></p>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <ul>
      <li><p id="target2">Target 2</p></li>
    </ul>
  </blockquote>

  <!-- A second block lacks the <h1>. -->
  <div></div>
  <table></table>
  <h1></h1>
  <blockquote>
    <p></p>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <ul>
      <li>

        <h2></h2>
        <blockquote>
          <p id="target3">Target 3</p>
          <div></div>
          <blockquote></blockquote>
          <table></table>
          <ul>
            <li><p id="target4">Target 4</p></li>
          </ul>
        </blockquote>

      </li>
    </ul>
  </blockquote>

  <!-- A second block lacks the <div>. -->
  <div></div>
  <table></table>
  <h1></h1>
  <blockquote>
    <p></p>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <ul>
      <li>

        <table></table>
        <h1></h1>
        <blockquote>
          <p id="target5">Target 5</p>
          <div></div>
          <blockquote></blockquote>
          <table></table>
          <ul>
            <li><p id="target6">Target 6</p></li>
          </ul>
        </blockquote>

      </li>
    </ul>
  </blockquote>

  <!-- A third block lacks the div. -->
  <div></div>
  <table></table>
  <h1></h1>
  <blockquote>
    <p></p>
    <div></div>
    <blockquote></blockquote>
    <table></table>
    <ul>
      <li>

        <div></div>
        <table></table>
        <h1></h1>
        <blockquote>
          <p id="target7">Target 7</p>
          <div></div>
          <blockquote></blockquote>
          <table></table>
          <ul>
            <li><p id="target8">Target 8</p></li>
          </ul>
        </blockquote>

      </li>
    </ul>
  </blockquote>

</div>
</body>
<script>
description('Test backtracking of adjacent and child relation mixed together.');

shouldBe('document.querySelectorAll("html>head+body div>div~h1+blockquote>p+div+blockquote~ul p").length', '8');
for (var i = 0; i < document.querySelectorAll("html>head+body div>div~h1+blockquote>p+div+blockquote~ul p").length; ++i)
  shouldBeEqualToString('document.querySelectorAll("html>head+body div>div~h1+blockquote>p+div+blockquote~ul p")[' + i +'].id', 'target' + (i + 1));
</script>

<script src="../../resources/js-test-post.js"></script>
</html>
