|  | <!doctype html> | 
|  | <title>Range.commonAncestorContainer</title> | 
|  | <script src=/resources/testharness.js></script> | 
|  | <script src=/resources/testharnessreport.js></script> | 
|  | <div id=log></div> | 
|  | <script> | 
|  | test(function() { | 
|  | var range = document.createRange(); | 
|  | range.detach(); | 
|  | assert_equals(range.commonAncestorContainer, document); | 
|  | }, "Detached Range") | 
|  | test(function() { | 
|  | var df = document.createDocumentFragment(); | 
|  | var foo = df.appendChild(document.createElement("foo")); | 
|  | foo.appendChild(document.createTextNode("Foo")); | 
|  | var bar = df.appendChild(document.createElement("bar")); | 
|  | bar.appendChild(document.createComment("Bar")); | 
|  | [ | 
|  | // start node, start offset, end node, end offset, expected cAC | 
|  | [foo, 0, bar, 0, df], | 
|  | [foo, 0, foo.firstChild, 3, foo], | 
|  | [foo.firstChild, 0, bar, 0, df], | 
|  | [foo.firstChild, 3, bar.firstChild, 2, df] | 
|  | ].forEach(function(t) { | 
|  | test(function() { | 
|  | var range = document.createRange(); | 
|  | range.setStart(t[0], t[1]); | 
|  | range.setEnd(t[2], t[3]); | 
|  | assert_equals(range.commonAncestorContainer, t[4]); | 
|  | }) | 
|  | }); | 
|  | }, "Normal Ranges") | 
|  | </script> |