
PASS Set up range 0 []
PASS Set up range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0]
PASS Set up range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1]
PASS Set up range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8]
PASS Set up range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9]
PASS Set up range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0]
PASS Set up range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1]
PASS Set up range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8]
PASS Set up range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9]
PASS Set up range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]
PASS Set up range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]
PASS Set up range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]
PASS Set up range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]
PASS Set up range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]
PASS Set up range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]
FAIL collapse() on [] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [paras[0].firstChild, 0]
PASS setPosition() on [] to [paras[0].firstChild, 0]
FAIL collapse() on [] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [] to [paras[0].firstChild, 2]
PASS setPosition() on [] to [paras[0].firstChild, 2]
PASS collapse() on [] to [paras[0].firstChild, 8]
PASS setPosition() on [] to [paras[0].firstChild, 8]
FAIL collapse() on [] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [] to [paras[0].firstChild, 10]
PASS setPosition() on [] to [paras[0].firstChild, 10]
FAIL collapse() on [] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [detachedPara1.firstChild, 0]
PASS setPosition() on [] to [detachedPara1.firstChild, 0]
PASS collapse() on [] to [detachedPara1.firstChild, 1]
PASS setPosition() on [] to [detachedPara1.firstChild, 1]
PASS collapse() on [] to [detachedPara1.firstChild, 8]
PASS setPosition() on [] to [detachedPara1.firstChild, 8]
FAIL collapse() on [] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [foreignPara1.firstChild, 0]
PASS setPosition() on [] to [foreignPara1.firstChild, 0]
PASS collapse() on [] to [foreignPara1.firstChild, 1]
PASS setPosition() on [] to [foreignPara1.firstChild, 1]
PASS collapse() on [] to [foreignPara1.firstChild, 8]
PASS setPosition() on [] to [foreignPara1.firstChild, 8]
FAIL collapse() on [] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [] to [foreignDoc.documentElement, 0]
PASS setPosition() on [] to [foreignDoc.documentElement, 0]
PASS collapse() on [] to [foreignDoc.documentElement, 1]
PASS setPosition() on [] to [foreignDoc.documentElement, 1]
PASS collapse() on [] to [foreignDoc.head, 0]
PASS setPosition() on [] to [foreignDoc.head, 0]
PASS collapse() on [] to [foreignDoc.body, 1]
PASS setPosition() on [] to [foreignDoc.body, 1]
FAIL collapse() on [] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [detachedPara1, 0]
PASS setPosition() on [] to [detachedPara1, 0]
PASS collapse() on [] to [detachedPara1, 1]
PASS setPosition() on [] to [detachedPara1, 1]
FAIL collapse() on [] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [foreignDoc, 0]
PASS setPosition() on [] to [foreignDoc, 0]
PASS collapse() on [] to [foreignDoc, 1]
PASS setPosition() on [] to [foreignDoc, 1]
PASS collapse() on [] to [foreignComment, 2]
PASS setPosition() on [] to [foreignComment, 2]
PASS collapse() on [] to [foreignTextNode, 0]
PASS setPosition() on [] to [foreignTextNode, 0]
PASS collapse() on [] to [foreignTextNode, 36]
PASS setPosition() on [] to [foreignTextNode, 36]
FAIL collapse() on [] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [xmlDoc, 0]
PASS setPosition() on [] to [xmlDoc, 0]
PASS collapse() on [] to [xmlDoc, 1]
PASS setPosition() on [] to [xmlDoc, 1]
FAIL collapse() on [] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [] to [xmlComment, 0]
PASS setPosition() on [] to [xmlComment, 0]
PASS collapse() on [] to [xmlComment, 4]
PASS setPosition() on [] to [xmlComment, 4]
PASS collapse() on [] to [processingInstruction, 0]
PASS setPosition() on [] to [processingInstruction, 0]
PASS collapse() on [] to [processingInstruction, 5]
PASS setPosition() on [] to [processingInstruction, 5]
PASS collapse() on [] to [processingInstruction, 9]
PASS setPosition() on [] to [processingInstruction, 9]
PASS collapse() on [] to [detachedTextNode, 0]
PASS setPosition() on [] to [detachedTextNode, 0]
PASS collapse() on [] to [detachedTextNode, 8]
PASS setPosition() on [] to [detachedTextNode, 8]
PASS collapse() on [] to [detachedForeignTextNode, 0]
PASS setPosition() on [] to [detachedForeignTextNode, 0]
PASS collapse() on [] to [detachedForeignTextNode, 8]
PASS setPosition() on [] to [detachedForeignTextNode, 8]
PASS collapse() on [] to [detachedXmlTextNode, 0]
PASS setPosition() on [] to [detachedXmlTextNode, 0]
PASS collapse() on [] to [detachedXmlTextNode, 8]
PASS setPosition() on [] to [detachedXmlTextNode, 8]
PASS collapse() on [] to [detachedProcessingInstruction, 12]
PASS setPosition() on [] to [detachedProcessingInstruction, 12]
PASS collapse() on [] to [detachedComment, 3]
PASS setPosition() on [] to [detachedComment, 3]
PASS collapse() on [] to [detachedComment, 5]
PASS setPosition() on [] to [detachedComment, 5]
PASS collapse() on [] to [detachedForeignComment, 0]
PASS setPosition() on [] to [detachedForeignComment, 0]
PASS collapse() on [] to [detachedForeignComment, 4]
PASS setPosition() on [] to [detachedForeignComment, 4]
PASS collapse() on [] to [detachedXmlComment, 2]
PASS setPosition() on [] to [detachedXmlComment, 2]
PASS collapse() on [] to [docfrag, 0]
PASS setPosition() on [] to [docfrag, 0]
PASS collapse() on [] to [foreignDocfrag, 0]
PASS setPosition() on [] to [foreignDocfrag, 0]
PASS collapse() on [] to [xmlDocfrag, 0]
PASS setPosition() on [] to [xmlDocfrag, 0]
FAIL collapse() on [] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 2]
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 2]
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Ä" but got object "Ä"
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 0, paras[0].firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 2]
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈" but got object "b̈c̈d̈"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 2]
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "b̈c̈d̈ë" but got object "b̈c̈d̈ë"
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[0].firstChild, 2, paras[0].firstChild, 9] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 2]
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 2]
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 0, paras[1].firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 2]
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 2]
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [paras[1].firstChild, 2, paras[1].firstChild, 9] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.documentElement, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.documentElement, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.documentElement, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.documentElement, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.head, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.head, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.body, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc.body, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedPara1, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoc, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignComment, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignTextNode, 36]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignTextNode, 36]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlComment, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlComment, 4]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 5]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 5]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 9]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [processingInstruction, 9]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedProcessingInstruction, 12]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedProcessingInstruction, 12]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedComment, 3]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedComment, 3]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedComment, 5]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedComment, 5]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignComment, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedForeignComment, 4]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [detachedXmlComment, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [docfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [docfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDocfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDocfrag, 0]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 0]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 10]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 10]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.documentElement, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.documentElement, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.documentElement, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.documentElement, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.head, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.head, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.body, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc.body, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedPara1, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoc, 1]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignComment, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignTextNode, 36]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignTextNode, 36]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 1]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlComment, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlComment, 4]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 5]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 5]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 9]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [processingInstruction, 9]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedProcessingInstruction, 12]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedProcessingInstruction, 12]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedComment, 3]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedComment, 3]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedComment, 5]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedComment, 5]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignComment, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedForeignComment, 4]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [detachedXmlComment, 2]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [docfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [docfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDocfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDocfrag, 0]
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 0]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 2]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 2]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 10]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 10]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 1]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 8]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.documentElement, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.documentElement, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.documentElement, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.documentElement, 1]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.head, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.head, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.body, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc.body, 1]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedPara1, 1]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoc, 1]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignComment, 2]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignTextNode, 36]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignTextNode, 36]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 1]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 1]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlComment, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlComment, 4]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 5]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 5]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 9]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [processingInstruction, 9]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlTextNode, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlTextNode, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlTextNode, 8]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlTextNode, 8]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedProcessingInstruction, 12]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedProcessingInstruction, 12]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedComment, 3]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedComment, 3]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedComment, 5]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedComment, 5]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignComment, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignComment, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignComment, 4]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedForeignComment, 4]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlComment, 2]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [detachedXmlComment, 2]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [docfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [docfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDocfrag, 0]
PASS collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDocfrag, 0]
PASS setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDocfrag, 0]
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.head, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.head, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.body, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc.body, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedPara1, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoc, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignComment, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignTextNode, 36]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignTextNode, 36]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlComment, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlComment, 4]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 5]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 5]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 9]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [processingInstruction, 9]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedComment, 3]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedComment, 3]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedComment, 5]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedComment, 5]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignComment, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedForeignComment, 4]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [detachedXmlComment, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [docfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [docfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDocfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDocfrag, 0]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.head, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.head, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.body, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc.body, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedPara1, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoc, 1]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignComment, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignTextNode, 36]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignTextNode, 36]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 1]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlComment, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlComment, 4]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 5]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 5]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 9]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [processingInstruction, 9]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedComment, 3]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedComment, 3]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedComment, 5]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedComment, 5]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignComment, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedForeignComment, 4]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [detachedXmlComment, 2]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [docfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [docfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDocfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDocfrag, 0]
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 2]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 8] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we collapse()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 9] assert_equals: focusNode must equal the node we setPosition()d to expected Text node "Ijklmnop
" but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 10] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1].firstChild, 65535] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignPara1.firstChild, 9] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we collapse()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <html><head><title>Selection.collapse()/setPosition() tes... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.documentElement, 7] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.head, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <head><title>Selection.collapse()/setPosition() tests</ti... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document.body, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id... but got Text node "Qrstuvwx"
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.head, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.head, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.body, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc.body, 1]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[0], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we collapse()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 1] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <p id="b" style="display:none">Ijklmnop
</p> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [paras[1], 2] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedPara1, 1]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [testDiv, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we collapse()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [testDiv, 3] assert_equals: focusNode must equal the node we setPosition()d to expected Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
</p><p id="b" s... but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 1] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we collapse()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 2] assert_equals: focusNode must equal the node we setPosition()d to expected Document node with 2 children but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [document, 3] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 0] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we collapse()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 4] assert_equals: focusNode must equal the node we setPosition()d to expected Comment node <!--Alphabet soup?--> but got Text node "Qrstuvwx"
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [comment, 96] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoc, 1]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignComment, 2]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignTextNode, 36]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignTextNode, 36]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, -1] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 1]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 1]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when collapse()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoc, 5] assert_throws_dom: Must throw INDEX_SIZE_ERR when setPosition()ing if the offset is negative or greater than the node's length function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlComment, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlComment, 4]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 5]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 5]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 9]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [processingInstruction, 9]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedComment, 3]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedComment, 3]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedComment, 5]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedComment, 5]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignComment, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignComment, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignComment, 4]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedForeignComment, 4]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlComment, 2]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [detachedXmlComment, 2]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [docfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [docfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDocfrag, 0]
PASS collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDocfrag, 0]
PASS setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDocfrag, 0]
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, -17] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [doctype, 1] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [foreignDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL collapse() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw
FAIL setPosition() on [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] to [xmlDoctype, 0] assert_throws_dom: Must throw INVALID_NODE_TYPE_ERR when setPosition()ing if the node is a DocumentType function "function () {
            selection[method](point[0], point[1]);
        }" did not throw

