Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt

Issue 2700673005: selection: Do not run invalid sub-tests with unselectable Range. (Closed)
Patch Set: . Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
index da4e16841442edebc437c1e3464a567d5356cf91..0184bd0cc1e03ad01a46f9452644132798226d85 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
@@ -1,102 +1,102 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
This is a testharness.js-based test.
-Found 2784 tests; 1904 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -208,78 +208,42 @@ PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firs
PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -414,39 +378,21 @@ PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.docume
PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -483,26 +429,14 @@ PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0,
PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -614,13 +548,7 @@ PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.docume
PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -767,234 +695,126 @@ PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, fo
PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -1106,78 +926,42 @@ PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstC
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -1312,39 +1096,21 @@ PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.document
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -1381,26 +1147,14 @@ PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, d
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -1512,13 +1266,7 @@ PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.document
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -1665,234 +1413,126 @@ PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, fore
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2004,78 +1644,42 @@ PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detached
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2210,39 +1814,21 @@ PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreign
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2279,26 +1865,14 @@ PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detache
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2410,13 +1984,7 @@ PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreign
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2563,234 +2131,126 @@ PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreign
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -2902,78 +2362,42 @@ PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.first
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -3108,39 +2532,21 @@ PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documen
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -3177,26 +2583,14 @@ PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0,
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints
@@ -3308,13 +2702,7 @@ PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documen
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints
@@ -3461,233 +2849,125 @@ PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, for
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range
PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing
Harness: the test ran to completion.

Powered by Google App Engine
This is Rietveld 408576698