| <html> |
| <head> |
| <script> |
| function nodeAsString(node) |
| { |
| if (node && node.nodeType == Node.TEXT_NODE) |
| return "text in " + nodeAsString(node.parentNode); |
| if (node && node.nodeType == Node.ELEMENT_NODE) { |
| var id; |
| if (id = node.getAttribute("id")) |
| return id; |
| } |
| return node; |
| } |
| function selectionAsString() |
| { |
| return "(" + nodeAsString(getSelection().anchorNode) |
| + ", " + getSelection().anchorOffset |
| + "), (" + nodeAsString(getSelection().focusNode) |
| + ", " + getSelection().focusOffset + ")"; |
| } |
| function checkSelection(step, expected) |
| { |
| if (selectionAsString() !== expected) { |
| document.getElementById("result").innerHTML = "FAIL: After step " + step + " selection was " + selectionAsString(); |
| return true; |
| } |
| return false; |
| } |
| function runTest() |
| { |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| getSelection().setPosition(document.getElementById("first").firstChild, 4); |
| if (checkSelection(1, "(text in first, 4), (text in first, 4)")) |
| return; |
| getSelection().modify("extend", "backward", "line"); |
| if (checkSelection(2, "(text in first, 4), (text in first, 0)")) |
| return; |
| getSelection().setPosition(document.getElementById("last").firstChild, 4); |
| if (checkSelection(3, "(text in last, 4), (text in last, 4)")) |
| return; |
| getSelection().modify("extend", "forward", "line"); |
| if (checkSelection(4, "(text in last, 4), (text in last, 61)")) |
| return; |
| getSelection().setPosition(document.getElementById("first").firstChild, 4); |
| if (checkSelection(5, "(text in first, 4), (text in first, 4)")) |
| return; |
| getSelection().modify("extend", "backward", "paragraph"); |
| if (checkSelection(6, "(text in first, 4), (text in first, 0)")) |
| return; |
| getSelection().setPosition(document.getElementById("last").firstChild, 4); |
| if (checkSelection(7, "(text in last, 4), (text in last, 4)")) |
| return; |
| getSelection().modify("extend", "forward", "paragraph"); |
| if (checkSelection(8, "(text in last, 4), (text in last, 61)")) |
| return; |
| document.getElementById("result").innerHTML = "SUCCESS"; |
| } |
| </script> |
| </head> |
| <body onload="runTest()"><p id="first">This is the first paragraph, used for the moving-backward test.</p> |
| <p>This tests for a problem with selections at document edges.</p> |
| <p id="result">TEST HAS NOT YET RUN.</p> |
| <p id="last">This is the last paragraph, used for the moving-forward test.</p> |
| </body> |
| </html> |