<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../xpath-test-pre.js"></script>
</head>
<body>
<div id="console"></div>

<script>
var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1" />' +
        '<div id="2" />' +
        '<para id="3" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]);
test(doc, doc.documentElement, 'child::*', [doc.documentElement.firstChild, doc.documentElement.firstChild.nextSibling, doc.documentElement.lastChild]);

var doc = (new DOMParser).parseFromString(
    '<doc>This is <i>some</i> text.</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::text()', [doc.documentElement.firstChild, doc.documentElement.lastChild]);
test(doc, doc.documentElement, 'child::node()', [doc.documentElement.firstChild, doc.documentElement.firstChild.nextSibling, doc.documentElement.lastChild]);

var doc = (new DOMParser).parseFromString(
    '<doc name="foo" value="bar" />',
    'application/xml');
test(doc, doc.documentElement, 'attribute::name', [doc.documentElement.getAttributeNode("name")]);
test(doc, doc.documentElement, 'attribute::*', [doc.documentElement.getAttributeNode("name"), doc.documentElement.getAttributeNode("value")]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1">' +
            '<div id="2" />' +
            '<para id="3" />' +
        '</para>' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<div id="1">' +
            '<div id="2">' +
                '<context />' +
            '</div>' +
            '<div id="3" />' +
        '</div>' +
        '<div id="4" />' +
   '</doc>',
    'application/xml');
test(doc, '//context', 'ancestor::div', [doc.getElementsByTagName("div")[0], doc.getElementsByTagName("div")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<div id="1">' +
            '<div id="2" />' +
            '<div id="3" />' +
        '</div>' +
        '<div id="4" />' +
   '</doc>',
    'application/xml');
test(doc, '//div[@id="3"]', 'ancestor-or-self::div', [doc.getElementsByTagName("div")[0], doc.getElementsByTagName("div")[2]]);

var doc = (new DOMParser).parseFromString(
    '<para id="0">' +
        '<div id="1" />' +
        '<para id="2">' +
            '<para id="3" />' +
        '</para>' +
   '</para>',
    'application/xml');
test(doc, doc.documentElement, 'descendant-or-self::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'self::para', []);
test(doc, 'para', 'self::para', [doc.documentElement.firstChild]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter><para id="1" /><para id="2" /></chapter>' +
        '<chapter><section><para id="3" /></section></chapter>' +
        '<para id="4" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::chapter/descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter><para id="1" /><para id="2" /></chapter>' +
        '<section><para id="3" /><sub><para id="4" /></sub></section>' +
        '<para id="4" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::*/child::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc><a><b><context /></b></a></doc>',
    'application/xml');
test(doc, '//context', '/', [doc]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1"><context /></para>' +
        '<para id="2" />' +
   '</doc>',
    'application/xml');
test(doc, '//context', '/descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<item id="1">' +
            '<context />' +
            '<olist><item id="2" /></olist>' +
        '</item>' +
        '<olist><item id="3" /></olist>' +
   '</doc>',
    'application/xml');
test(doc, '//context', '/descendant::olist/child::item', [doc.getElementsByTagName("item")[1], doc.getElementsByTagName("item")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<div id="1" />' +
        '<para id="2" />' +
        '<para id="3" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para[position()=1]', [doc.getElementsByTagName("para")[0]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1" />' +
        '<para id="2" />' +
        '<div id="3" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para[position()=last()]', [doc.getElementsByTagName("para")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1" />' +
        '<para id="2" />' +
        '<para id="3" />' +
        '<div id="4" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para[position()=last()-1]', [doc.getElementsByTagName("para")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<div id="1" /><para id="2" />' +
        '<div id="3" /><para id="4" />' +
        '<div id="5" /><para id="6" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para[position()>1]', [doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" /><chapter id="2" />' +
        '<context />' +
        '<chapter id="3" /><chapter id="4" />' +
   '</doc>',
    'application/xml');
test(doc, '//context', 'following-sibling::chapter[position()=1]', [doc.getElementsByTagName("chapter")[2]]);
test(doc, '//context', 'preceding-sibling::chapter[position()=1]', [doc.getElementsByTagName("chapter")[1]]);

var xml = "<doc>"
for (i = 1; i <= 10; ++i) {
    for (j = 1; j <= 10; ++j)
        xml += '<figure id="' + ((i*10)+j) + '%d">';
    for (j = 1; j <= 10; ++j)
        xml += '</figure>';
}
xml += "</doc>"
var doc = (new DOMParser).parseFromString(xml, 'application/xml');
test(doc, doc.documentElement, '/descendant::figure[position()=42]', [doc.getElementsByTagName("figure")[41]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" /><chapter id="2" /><chapter id="3" />' +
        '<chapter id="4">' +
          '<section id="4.1" /><section id="4.2" /><section id="4.3" />' +
        '</chapter>' +
        '<chapter id="5">' +
          '<section id="5.1" /><section id="5.2" /><section id="5.3" />' +
        '</chapter>' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, '/child::doc/child::chapter[position()=5]/child::section[position()=2]', [doc.getElementsByTagName("section")[4]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<para id="1" type="info" />' +
        '<para id="2" type="warning" />' +
        '<para id="3" type="warning" />' +
        '<para id="4" type="warning" />' +
        '<para id="5" type="error" />' +
        '<para id="6" type="warning" />' +
        '<para id="7" type="warning" />' +
   '</doc>',
    'application/xml');
test(doc, doc.documentElement, 'child::para[attribute::type="warning"][position()=5]', [doc.getElementsByTagName("para")[6]]);
test(doc, doc.documentElement, 'child::para[position()=5][attribute::type="warning"]', []);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" />' +
        '<chapter id="2"><title>Introduction</title></chapter>' +
        '<chapter id="3"><title>Body</title></chapter>' +
        '<chapter id="4">' +
            '<title>Another</title>' +
            '<title>Introduction</title>' +
        '</chapter>' +
    '</doc>',
    'application/xml');
test(doc, doc.documentElement, "child::chapter[child::title='Introduction']", [doc.getElementsByTagName("chapter")[1], doc.getElementsByTagName("chapter")[3]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" />' +
        '<chapter id="2"><title /></chapter>' +
        '<chapter id="3"><title /><title /></chapter>' +
    '</doc>',
    'application/xml');
test(doc, doc.documentElement, "child::chapter[child::title]", [doc.getElementsByTagName("chapter")[1], doc.getElementsByTagName("chapter")[2]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" />' +
        '<appendix id="2" />' +
        '<para id="3" />' +
        '<chapter id="4" />' +
    '</doc>',
    'application/xml');
test(doc, doc.documentElement, "child::*[self::chapter or self::appendix]", [doc.getElementsByTagName("chapter")[0], doc.getElementsByTagName("appendix")[0], doc.getElementsByTagName("chapter")[1]]);

var doc = (new DOMParser).parseFromString(
    '<doc>' +
        '<chapter id="1" />' +
        '<appendix id="2" />' +
        '<para id="3" />' +
        '<chapter id="4" />' +
        '<para id="5" />' +
    '</doc>',
    'application/xml');
test(doc, doc.documentElement, "child::*[self::chapter or self::appendix][position()=last()]", [doc.getElementsByTagName("chapter")[1]]);

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