summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/domxpath/001.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/domxpath/001.html')
-rw-r--r--testing/web-platform/tests/domxpath/001.html60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/web-platform/tests/domxpath/001.html b/testing/web-platform/tests/domxpath/001.html
new file mode 100644
index 000000000..c26795a31
--- /dev/null
+++ b/testing/web-platform/tests/domxpath/001.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<meta charset="utf8">
+<title>XPath in text/html: elements</title>
+<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#Interfaces">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<div id="log"><span></span></div>
+<div><span></span></div>
+<dØdd></dØdd>
+<svg>
+<path />
+<path />
+</svg>
+
+<script>
+function test_xpath_succeeds(path, expected, resolver) {
+ resolver = resolver ? resolver : null;
+ var res = document.evaluate(path, document, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ actual = [];
+ for (var i=0;;i++) {
+ var node = res.snapshotItem(i);
+ if (node === null) {
+ break;
+ }
+ actual.push(node);
+ }
+ assert_array_equals(actual, expected);
+}
+
+function test_xpath_throws(path, error_code, resolver) {
+ resolver = resolver ? resolver : null;
+ assert_throws(error_code, function() {document.evaluate(path, document, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)})
+}
+
+function ns_resolver(x) {
+ map = {"html":"http://www.w3.org/1999/xhtml",
+ "svg":"http://www.w3.org/2000/svg",
+ "math":"http://www.w3.org/1998/Math/MathML"};
+ var rv = map.hasOwnProperty(x) ? map[x] : null;
+ return rv;
+}
+
+generate_tests(test_xpath_succeeds,[
+ ["HTML elements no namespace prefix", "//div", document.getElementsByTagName("div")],
+ ["HTML elements namespace prefix", "//html:div", document.getElementsByTagName("div"), ns_resolver],
+ ["HTML elements mixed use of prefix", "//html:div/span", document.getElementsByTagName("span"), ns_resolver],
+ ["SVG elements no namespace prefix", "//path", []],
+ ["SVG elements namespace prefix", "//svg:path", document.getElementsByTagName("path"), ns_resolver],
+ ["HTML elements mixed case", "//DiV", document.getElementsByTagName("div")],
+ ["SVG elements mixed case selector", "//svg:PatH", [], ns_resolver],
+ ["Non-ascii HTML element", "//dØdd", document.getElementsByTagName("dØdd"), ns_resolver],
+ ["Non-ascii HTML element2", "//dødd", [], ns_resolver],
+ ["Non-ascii HTML element3", "//DØDD", document.getElementsByTagName("dØdd"), ns_resolver]
+])
+
+generate_tests(test_xpath_throws, [
+ ["Throw with invalid prefix", "//invalid:path", "NAMESPACE_ERR"],
+])
+</script>