mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 23:23:28 +00:00
wpt: add all dom/nodes tests
This commit is contained in:
87
tests/wpt/dom/nodes/Node-compareDocumentPosition.html
Normal file
87
tests/wpt/dom/nodes/Node-compareDocumentPosition.html
Normal file
@@ -0,0 +1,87 @@
|
||||
<!doctype html>
|
||||
<title>Node.compareDocumentPosition() tests</title>
|
||||
<link rel=author title="Aryeh Gregor" href=ayg@aryeh.name>
|
||||
<div id=log></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=../common.js></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
testNodes.forEach(function(referenceName) {
|
||||
var reference = eval(referenceName);
|
||||
testNodes.forEach(function(otherName) {
|
||||
var other = eval(otherName);
|
||||
test(function() {
|
||||
var result = reference.compareDocumentPosition(other);
|
||||
|
||||
// "If other and reference are the same object, return zero and
|
||||
// terminate these steps."
|
||||
if (other === reference) {
|
||||
assert_equals(result, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
// "If other and reference are not in the same tree, return the result of
|
||||
// adding DOCUMENT_POSITION_DISCONNECTED,
|
||||
// DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either
|
||||
// DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING, with the
|
||||
// constraint that this is to be consistent, together and terminate these
|
||||
// steps."
|
||||
if (furthestAncestor(reference) !== furthestAncestor(other)) {
|
||||
// TODO: Test that it's consistent.
|
||||
assert_in_array(result, [Node.DOCUMENT_POSITION_DISCONNECTED +
|
||||
Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC +
|
||||
Node.DOCUMENT_POSITION_PRECEDING,
|
||||
Node.DOCUMENT_POSITION_DISCONNECTED +
|
||||
Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC +
|
||||
Node.DOCUMENT_POSITION_FOLLOWING]);
|
||||
return;
|
||||
}
|
||||
|
||||
// "If other is an ancestor of reference, return the result of
|
||||
// adding DOCUMENT_POSITION_CONTAINS to DOCUMENT_POSITION_PRECEDING
|
||||
// and terminate these steps."
|
||||
var ancestor = reference.parentNode;
|
||||
while (ancestor && ancestor !== other) {
|
||||
ancestor = ancestor.parentNode;
|
||||
}
|
||||
if (ancestor === other) {
|
||||
assert_equals(result, Node.DOCUMENT_POSITION_CONTAINS +
|
||||
Node.DOCUMENT_POSITION_PRECEDING);
|
||||
return;
|
||||
}
|
||||
|
||||
// "If other is a descendant of reference, return the result of adding
|
||||
// DOCUMENT_POSITION_CONTAINED_BY to DOCUMENT_POSITION_FOLLOWING and
|
||||
// terminate these steps."
|
||||
ancestor = other.parentNode;
|
||||
while (ancestor && ancestor !== reference) {
|
||||
ancestor = ancestor.parentNode;
|
||||
}
|
||||
if (ancestor === reference) {
|
||||
assert_equals(result, Node.DOCUMENT_POSITION_CONTAINED_BY +
|
||||
Node.DOCUMENT_POSITION_FOLLOWING);
|
||||
return;
|
||||
}
|
||||
|
||||
// "If other is preceding reference return DOCUMENT_POSITION_PRECEDING
|
||||
// and terminate these steps."
|
||||
var prev = previousNode(reference);
|
||||
while (prev && prev !== other) {
|
||||
prev = previousNode(prev);
|
||||
}
|
||||
if (prev === other) {
|
||||
assert_equals(result, Node.DOCUMENT_POSITION_PRECEDING);
|
||||
return;
|
||||
}
|
||||
|
||||
// "Return DOCUMENT_POSITION_FOLLOWING."
|
||||
assert_equals(result, Node.DOCUMENT_POSITION_FOLLOWING);
|
||||
}, referenceName + ".compareDocumentPosition(" + otherName + ")");
|
||||
});
|
||||
});
|
||||
|
||||
testDiv.parentNode.removeChild(testDiv);
|
||||
</script>
|
||||
<!-- vim: set expandtab tabstop=2 shiftwidth=2: -->
|
||||
Reference in New Issue
Block a user