| Aryeh Gregor | cee936a | 2011-10-24 20:28:53 | [diff] [blame] | 1 | <!doctype html> | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 2 | <title>Selection.removeAllRanges()/empty() tests</title> | 
| Aryeh Gregor | cee936a | 2011-10-24 20:28:53 | [diff] [blame] | 3 | <div id=log></div> | 
| Aryeh Gregor | 33fcf01 | 2015-08-09 12:21:10 | [diff] [blame] | 4 | <script src=/resources/testharness.js></script> | 
|  | 5 | <script src=/resources/testharnessreport.js></script> | 
| Aryeh Gregor | cee936a | 2011-10-24 20:28:53 | [diff] [blame] | 6 | <script src=common.js></script> | 
|  | 7 | <script> | 
|  | 8 | "use strict"; | 
|  | 9 |  | 
|  | 10 | // Also test a selection with no ranges | 
|  | 11 | testRanges.unshift("[]"); | 
|  | 12 |  | 
|  | 13 | var range = rangeFromEndpoints([paras[0].firstChild, 0, paras[0].firstChild, 1]); | 
|  | 14 |  | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 15 | function testRange(rangeDesc, method) { | 
| Aryeh Gregor | bc06911 | 2017-08-31 15:55:20 | [diff] [blame] | 16 | var endpoints = eval(testRanges[i]); | 
|  | 17 | if (endpoints.length && (!isSelectableNode(endpoints[0]) || | 
|  | 18 | !isSelectableNode(endpoints[2]))) { | 
|  | 19 | return; | 
|  | 20 | } | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 21 | test(function() { | 
| Aryeh Gregor | bc06911 | 2017-08-31 15:55:20 | [diff] [blame] | 22 | setSelectionForwards(endpoints); | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 23 | selection[method](); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 24 | assert_equals(selection.rangeCount, 0, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 25 | "After " + method + "(), rangeCount must be 0"); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 26 | // Test that it's forwards | 
|  | 27 | selection.addRange(range); | 
|  | 28 | assert_equals(selection.anchorOffset, selection.getRangeAt(0).startOffset, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 29 | "After " + method + "(), addRange() must be forwards, so anchorOffset must equal startOffset rather than endOffset"); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 30 | assert_equals(selection.focusOffset, selection.getRangeAt(0).endOffset, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 31 | "After " + method + "(), addRange() must be forwards, so focusOffset must equal endOffset rather than startOffset"); | 
|  | 32 | }, method + " on " + rangeDesc + " forwards"); | 
| Aryeh Gregor | cee936a | 2011-10-24 20:28:53 | [diff] [blame] | 33 |  | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 34 | // Copy-pasted from above | 
|  | 35 | test(function() { | 
| Aryeh Gregor | bc06911 | 2017-08-31 15:55:20 | [diff] [blame] | 36 | setSelectionBackwards(endpoints); | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 37 | selection[method](); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 38 | assert_equals(selection.rangeCount, 0, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 39 | "After " + method + "(), rangeCount must be 0"); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 40 | // Test that it's forwards | 
|  | 41 | selection.addRange(range); | 
|  | 42 | assert_equals(selection.anchorOffset, selection.getRangeAt(0).startOffset, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 43 | "After " + method + "(), addRange() must be forwards, so anchorOffset must equal startOffset rather than endOffset"); | 
| Aryeh Gregor | 01a1172 | 2015-08-09 13:04:25 | [diff] [blame] | 44 | assert_equals(selection.focusOffset, selection.getRangeAt(0).endOffset, | 
| Aryeh Gregor | 270dbb6 | 2017-04-25 12:42:19 | [diff] [blame] | 45 | "After " + method + "(), addRange() must be forwards, so focusOffset must equal endOffset rather than startOffset"); | 
|  | 46 | }, method + " on " + rangeDesc + " backwards"); | 
|  | 47 | } | 
|  | 48 |  | 
|  | 49 | for (var i = 0; i < testRanges.length; i++) { | 
|  | 50 | testRange(testRanges[i], "removeAllRanges"); | 
|  | 51 | testRange(testRanges[i], "empty"); | 
| Aryeh Gregor | cee936a | 2011-10-24 20:28:53 | [diff] [blame] | 52 | } | 
|  | 53 |  | 
|  | 54 | testDiv.style.display = "none"; | 
|  | 55 | </script> |