
PASS Set up range 30 [paras[0], 0, paras[0].firstChild, 7]
PASS Set up range 31 [testDiv, 2, paras[4], 1]
PASS Set up range 32 [testDiv, 1, paras[2].firstChild, 5]
PASS Set up range 33 [document.documentElement, 1, document.body, 0]
PASS Set up range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0]
PASS Set up range 35 [document, 0, document, 1]
PASS Set up range 36 [document, 0, document, 2]
PASS Set up range 37 [document, 1, document, 2]
PASS Set up range 38 [testDiv, 0, comment, 5]
PASS Set up range 39 [paras[2].firstChild, 4, comment, 2]
PASS Set up range 40 [paras[3], 1, comment, 8]
PASS Set up range 41 [foreignDoc, 0, foreignDoc, 0]
PASS Set up range 42 [foreignDoc, 1, foreignComment, 2]
PASS Set up range 43 [foreignDoc.body, 0, foreignTextNode, 36]
PASS Set up range 44 [xmlDoc, 0, xmlDoc, 0]
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 2]
PASS collapse() on [paras[0], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL setPosition() on [paras[0], 0, paras[0].firstChild, 7] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈" but got object "Äb̈c̈d̈"
FAIL collapse() on [paras[0], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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], 0, paras[0].firstChild, 7] 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 0]
PASS setPosition() on [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 0]
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 2]
PASS setPosition() on [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 2]
PASS collapse() on [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 8]
PASS setPosition() on [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 8]
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 10]
PASS setPosition() on [testDiv, 2, paras[4], 1] to [paras[0].firstChild, 10]
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 2, paras[4], 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL setPosition() on [testDiv, 2, paras[4], 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstuvwx" but got object "Qrstuvwx"
FAIL collapse() on [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 2, paras[4], 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 0]
PASS setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 0]
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 2]
PASS setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 2]
PASS collapse() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 8]
PASS setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 8]
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 10]
PASS setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [paras[0].firstChild, 10]
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL setPosition() on [testDiv, 1, paras[2].firstChild, 5] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Qrstu" but got object "Qrstu"
FAIL collapse() on [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [testDiv, 1, paras[2].firstChild, 5] 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 2]
PASS collapse() on [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [document.documentElement, 1, document.body, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document.documentElement, 1, document.body, 0] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [document.documentElement, 1, document.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 2]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.head, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.head, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.body, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc.body, 1]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedPara1, 1]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDoc, 1]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignComment, 2]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignComment, 2]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignTextNode, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignTextNode, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignTextNode, 36]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignTextNode, 36]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDoc, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDoc, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDoc, 1]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDoc, 1]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlComment, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlComment, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlComment, 4]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlComment, 4]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 5]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 5]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 9]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [processingInstruction, 9]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedTextNode, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedTextNode, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedTextNode, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedTextNode, 8]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedComment, 3]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedComment, 3]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedComment, 5]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedComment, 5]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignComment, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignComment, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignComment, 4]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedForeignComment, 4]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlComment, 2]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [detachedXmlComment, 2]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [docfrag, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [docfrag, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDocfrag, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [foreignDocfrag, 0]
PASS collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDocfrag, 0]
PASS setPosition() on [foreignDoc.documentElement, 1, foreignDoc.body, 0] to [xmlDocfrag, 0]
FAIL collapse() on [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [foreignDoc.documentElement, 1, foreignDoc.body, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [paras[0].firstChild, 0]
PASS setPosition() on [document, 0, document, 1] to [paras[0].firstChild, 0]
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [paras[0].firstChild, 2]
PASS setPosition() on [document, 0, document, 1] to [paras[0].firstChild, 2]
PASS collapse() on [document, 0, document, 1] to [paras[0].firstChild, 8]
PASS setPosition() on [document, 0, document, 1] to [paras[0].firstChild, 8]
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [paras[0].firstChild, 10]
PASS setPosition() on [document, 0, document, 1] to [paras[0].firstChild, 10]
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 1] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [document, 0, document, 1] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [paras[0].firstChild, 0]
PASS setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 0]
FAIL collapse() on [document, 0, document, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [document, 0, document, 2] to [paras[0].firstChild, 2]
PASS setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 2]
PASS collapse() on [document, 0, document, 2] to [paras[0].firstChild, 8]
PASS setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 8]
FAIL collapse() on [document, 0, document, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [document, 0, document, 2] to [paras[0].firstChild, 10]
PASS setPosition() on [document, 0, document, 2] to [paras[0].firstChild, 10]
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 0, document, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 0, document, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 0, document, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 0, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [paras[0].firstChild, 0]
PASS setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 0]
FAIL collapse() on [document, 1, document, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [document, 1, document, 2] to [paras[0].firstChild, 2]
PASS setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 2]
PASS collapse() on [document, 1, document, 2] to [paras[0].firstChild, 8]
PASS setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 8]
FAIL collapse() on [document, 1, document, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [document, 1, document, 2] to [paras[0].firstChild, 10]
PASS setPosition() on [document, 1, document, 2] to [paras[0].firstChild, 10]
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [document, 1, document, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [document, 1, document, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [document, 1, document, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [document, 1, document, 2] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [paras[0].firstChild, 0]
PASS setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 0]
FAIL collapse() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 2]
PASS setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 2]
PASS collapse() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 8]
PASS setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 8]
FAIL collapse() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 10]
PASS setPosition() on [testDiv, 0, comment, 5] to [paras[0].firstChild, 10]
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [testDiv, 0, comment, 5] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [testDiv, 0, comment, 5] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL setPosition() on [testDiv, 0, comment, 5] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL collapse() on [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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 [testDiv, 0, comment, 5] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 2]
PASS collapse() on [paras[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[2].firstChild, 4, comment, 2] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL setPosition() on [paras[2].firstChild, 4, comment, 2] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "uvwx" but got object "uvwx"
FAIL collapse() on [paras[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[2].firstChild, 4, comment, 2] 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [paras[0].firstChild, 0]
PASS setPosition() on [paras[3], 1, comment, 8] to [paras[0].firstChild, 0]
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [paras[0].firstChild, 2]
PASS setPosition() on [paras[3], 1, comment, 8] to [paras[0].firstChild, 2]
PASS collapse() on [paras[3], 1, comment, 8] to [paras[0].firstChild, 8]
PASS setPosition() on [paras[3], 1, comment, 8] to [paras[0].firstChild, 8]
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [paras[0].firstChild, 10]
PASS setPosition() on [paras[3], 1, comment, 8] to [paras[0].firstChild, 10]
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedPara1.firstChild, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedPara1.firstChild, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedPara1.firstChild, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignPara1.firstChild, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignPara1.firstChild, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignPara1.firstChild, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc.documentElement, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc.documentElement, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc.head, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc.body, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedPara1, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedPara1, 1] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignTextNode, 36] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [xmlDoc, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [xmlDoc, 1] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [xmlComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [xmlComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [processingInstruction, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [processingInstruction, 5] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [processingInstruction, 9] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedTextNode, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedTextNode, 8] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedForeignTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedForeignTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedXmlTextNode, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedXmlTextNode, 8] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedProcessingInstruction, 12] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedComment, 3] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedComment, 5] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedForeignComment, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedForeignComment, 4] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [detachedXmlComment, 2] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL setPosition() on [paras[3], 1, comment, 8] to [docfrag, 0] assert_equals: The operation should not add Range expected 1 but got 0
FAIL collapse() on [paras[3], 1, comment, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [foreignDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL setPosition() on [paras[3], 1, comment, 8] to [xmlDocfrag, 0] assert_equals: The operation should not replace a registered Range expected object "" but got object ""
FAIL collapse() on [paras[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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[3], 1, comment, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 2]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.head, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.head, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.body, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc.body, 1]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [detachedPara1, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedPara1, 1]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [foreignDoc, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDoc, 1]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignComment, 2]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignComment, 2]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignTextNode, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignTextNode, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignTextNode, 36]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignTextNode, 36]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [xmlDoc, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [xmlDoc, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [xmlDoc, 1]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [xmlDoc, 1]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 0] to [xmlComment, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [xmlComment, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [xmlComment, 4]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [xmlComment, 4]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 5]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 5]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 9]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [processingInstruction, 9]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedTextNode, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedTextNode, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedTextNode, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedTextNode, 8]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedComment, 3]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedComment, 3]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedComment, 5]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedComment, 5]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignComment, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignComment, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignComment, 4]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedForeignComment, 4]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlComment, 2]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [detachedXmlComment, 2]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [docfrag, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [docfrag, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [foreignDocfrag, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [foreignDocfrag, 0]
PASS collapse() on [foreignDoc, 0, foreignDoc, 0] to [xmlDocfrag, 0]
PASS setPosition() on [foreignDoc, 0, foreignDoc, 0] to [xmlDocfrag, 0]
FAIL collapse() on [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 0, foreignDoc, 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 2]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.head, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.head, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.body, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc.body, 1]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [detachedPara1, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedPara1, 1]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [foreignDoc, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDoc, 1]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignComment, 2]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignComment, 2]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignTextNode, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignTextNode, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignTextNode, 36]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignTextNode, 36]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [xmlDoc, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [xmlDoc, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [xmlDoc, 1]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [xmlDoc, 1]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] to [xmlComment, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [xmlComment, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [xmlComment, 4]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [xmlComment, 4]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 5]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 5]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 9]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [processingInstruction, 9]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedTextNode, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedTextNode, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedTextNode, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedTextNode, 8]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedComment, 3]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedComment, 3]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedComment, 5]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedComment, 5]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignComment, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignComment, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignComment, 4]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedForeignComment, 4]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlComment, 2]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [detachedXmlComment, 2]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [docfrag, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [docfrag, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [foreignDocfrag, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [foreignDocfrag, 0]
PASS collapse() on [foreignDoc, 1, foreignComment, 2] to [xmlDocfrag, 0]
PASS setPosition() on [foreignDoc, 1, foreignComment, 2] to [xmlDocfrag, 0]
FAIL collapse() on [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc, 1, foreignComment, 2] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 0]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we collapse()d to expected 1 but got 2
FAIL setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 1] assert_equals: focusOffset must equal the offset we setPosition()d to expected 1 but got 2
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 2]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 2]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 8]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we collapse()d to expected 9 but got 10
FAIL setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 9] assert_equals: focusOffset must equal the offset we setPosition()d to expected 9 but got 10
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 10]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [paras[0].firstChild, 10]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 1]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1.firstChild, 8]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 1]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignPara1.firstChild, 8]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.documentElement, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.documentElement, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.documentElement, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.documentElement, 1]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.head, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.head, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.body, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc.body, 1]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedPara1, 1]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDoc, 1]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignComment, 2]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignComment, 2]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignTextNode, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignTextNode, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignTextNode, 36]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignTextNode, 36]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDoc, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDoc, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDoc, 1]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDoc, 1]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] to [xmlComment, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlComment, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlComment, 4]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlComment, 4]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 5]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 5]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 9]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [processingInstruction, 9]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedTextNode, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedTextNode, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedTextNode, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedTextNode, 8]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignTextNode, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignTextNode, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignTextNode, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignTextNode, 8]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlTextNode, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlTextNode, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlTextNode, 8]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlTextNode, 8]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedProcessingInstruction, 12]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedProcessingInstruction, 12]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedComment, 3]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedComment, 3]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedComment, 5]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedComment, 5]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignComment, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignComment, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignComment, 4]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedForeignComment, 4]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlComment, 2]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [detachedXmlComment, 2]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [docfrag, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [docfrag, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDocfrag, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [foreignDocfrag, 0]
PASS collapse() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDocfrag, 0]
PASS setPosition() on [foreignDoc.body, 0, foreignTextNode, 36] to [xmlDocfrag, 0]
FAIL collapse() on [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [foreignDoc.body, 0, foreignTextNode, 36] 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 0]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 2]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 2]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 8]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 10]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [paras[0].firstChild, 10]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 1]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1.firstChild, 8]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 1]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignPara1.firstChild, 8]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.documentElement, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.documentElement, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.documentElement, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.documentElement, 1]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.head, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.head, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.body, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc.body, 1]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [detachedPara1, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedPara1, 1]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [foreignDoc, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDoc, 1]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignComment, 2]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignComment, 2]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignTextNode, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignTextNode, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignTextNode, 36]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignTextNode, 36]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [xmlDoc, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [xmlDoc, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [xmlDoc, 1]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [xmlDoc, 1]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 0] to [xmlComment, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [xmlComment, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [xmlComment, 4]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [xmlComment, 4]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 5]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 5]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 9]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [processingInstruction, 9]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedTextNode, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedTextNode, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedTextNode, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedTextNode, 8]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignTextNode, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignTextNode, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignTextNode, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignTextNode, 8]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlTextNode, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlTextNode, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlTextNode, 8]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlTextNode, 8]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedProcessingInstruction, 12]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedProcessingInstruction, 12]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedComment, 3]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedComment, 3]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedComment, 5]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedComment, 5]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignComment, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignComment, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignComment, 4]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedForeignComment, 4]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlComment, 2]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [detachedXmlComment, 2]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [docfrag, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [docfrag, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [foreignDocfrag, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [foreignDocfrag, 0]
PASS collapse() on [xmlDoc, 0, xmlDoc, 0] to [xmlDocfrag, 0]
PASS setPosition() on [xmlDoc, 0, xmlDoc, 0] to [xmlDocfrag, 0]
FAIL collapse() on [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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 [xmlDoc, 0, xmlDoc, 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

