| <meta charset="UTF-8"> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="test"></div> |
| <script> |
| if (window.internals) |
| internals.setContinuousSpellCheckingEnabled(false); // For performance. |
| |
| description("This test checks that we have simple caret motion up to a certain limit"); |
| |
| function hasSimpleCaretMovement(charCode) { |
| var testString = "aaaaa" + String.fromCharCode(charCode) + "bbbb"; |
| element.textContent = testString; |
| var selection = window.getSelection(); |
| selection.setPosition(element, 0); |
| for (var i = 0; i < testString.length; ++i) { |
| selection.modify("move", "forward", "character"); |
| if (selection.baseOffset != i + 1) |
| return false; |
| } |
| return true; |
| } |
| |
| function toHex(i) { |
| var hex = i.toString(16); |
| while (hex.length < 4) |
| hex = "0" + hex; |
| return hex; |
| } |
| |
| var element = document.getElementById("test"); |
| |
| debug("Positive control:"); |
| shouldBeTrue("hasSimpleCaretMovement(0x0041)"); |
| debug(""); |
| |
| debug("Negative control:"); |
| shouldBeFalse("hasSimpleCaretMovement(0x0300)"); |
| debug(""); |
| |
| debug("Brute force:"); |
| for (var i = 1; i < 1024; ++i) { |
| if (i >= 0x0300 && i <= 0x036F) |
| shouldBeFalse("hasSimpleCaretMovement(i) // i = U+" + toHex(i)); |
| else |
| shouldBeTrue("hasSimpleCaretMovement(i) // i = U+" + toHex(i)); |
| } |
| |
| element.textContent = ""; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |