mirror of
				https://github.com/lightpanda-io/browser.git
				synced 2025-10-30 15:41:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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: -->
 | 
