blob: 780844ee7b11ce6ea1ee051d63166f1700cee3bf [file] [log] [blame]
<!doctype html>
<title>XPath tests</title>
<!-- This is a tentative test because there's no real spec for XPath IDL.
The closest thing is: -->
<link rel="help" href="https://wiki.whatwg.org/wiki/DOM_XPath">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='/resources/WebIDLParser.js'></script>
<script src='/resources/idlharness.js'></script>
<script type='text/plain'>
[Constructor] interface XPathEvaluator {
[NewObject] XPathExpression createExpression(DOMString expression,
optional XPathNSResolver? resolver);
Node createNSResolver(Node nodeResolver);
XPathResult evaluate(DOMString expression, Node contextNode,
optional XPathNSResolver? resolver,
optional unsigned short type,
optional object? result);
};
interface XPathExpression {
XPathResult evaluate(Node contextNode,
optional unsigned short type,
optional object? result);
};
callback interface XPathNSResolver {
DOMString? lookupNamespaceURI(DOMString? prefix);
};
interface XPathResult {
const unsigned short ANY_TYPE = 0;
const unsigned short NUMBER_TYPE = 1;
const unsigned short STRING_TYPE = 2;
const unsigned short BOOLEAN_TYPE = 3;
const unsigned short UNORDERED_NODE_ITERATOR_TYPE = 4;
const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5;
const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7;
const unsigned short ANY_UNORDERED_NODE_TYPE = 8;
const unsigned short FIRST_ORDERED_NODE_TYPE = 9;
readonly attribute unsigned short resultType;
readonly attribute double numberValue;
readonly attribute DOMString stringValue;
readonly attribute boolean booleanValue;
readonly attribute Node? singleNodeValue;
readonly attribute boolean invalidIteratorState;
readonly attribute unsigned long snapshotLength;
Node? iterateNext();
Node? snapshotItem(unsigned long index);
};
</script>
<script type='text/plain' class='untested'>
interface Document {};
Document implements XPathEvaluator;
</script>
<script>
"use strict";
var evaluator = document;
var resolver = function() {};
var resolver2 = document.createNSResolver(document.documentElement);
var expression = document.createExpression("//*", resolver);
var result = document.evaluate("//*", document.documentElement, resolver, 0, null);
var idlArray;
setup(function() {
idlArray = new IdlArray();
[].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
if (node.className == "untested") {
idlArray.add_untested_idls(node.textContent);
} else {
idlArray.add_idls(node.textContent);
}
});
idlArray.add_objects({
Document: ["document"],
XPathExpression: ["expression"],
XPathResolver: ["resolver", "resolver2"],
XPathResult: ["result"]
});
});
idlArray.test();
</script>