diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /layout/generic/test/test_movement_by_words.html | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'layout/generic/test/test_movement_by_words.html')
-rw-r--r-- | layout/generic/test/test_movement_by_words.html | 624 |
1 files changed, 624 insertions, 0 deletions
diff --git a/layout/generic/test/test_movement_by_words.html b/layout/generic/test/test_movement_by_words.html new file mode 100644 index 0000000000..f3d7ab4a12 --- /dev/null +++ b/layout/generic/test/test_movement_by_words.html @@ -0,0 +1,624 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test Word Movement (including nsTextFrame::PeekOffsetWord)</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/EventUtils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<p id="display"></p> +<div id="content" style="display: block"> +<div contentEditable id="editor"></div> +</div> +<p id="catch">Catch-all +<pre id="test"><script class="testbody" type="text/javascript"> + +/** Tests for bugs 384147, 981281, 1066756 **/ + +const kIsMac = navigator.platform.includes("Mac"); + +SimpleTest.waitForExplicitFinish(); + +SimpleTest.waitForFocus(function(){setTimeout(focusing, 0)}); + +function focusing() { + document.getElementById("editor").focus(); + // This seems to be necessary because the selection is not set up properly otherwise + setTimeout(test, 0); +} + +var eatSpace; +var stopAtPunctuation; +var sel = window.getSelection(); +var editor = document.getElementById("editor"); + +function setPrefs(eat_space, stop_at_punctuation, callback) { + eatSpace = eat_space; + stopAtPunctuation = stop_at_punctuation; + SpecialPowers.pushPrefEnv({"set": [["layout.word_select.eat_space_to_next_word", eat_space], ["layout.word_select.stop_at_punctuation", stop_at_punctuation]]}, callback); +} + +function errString(dir) { + return dir + " movement broken with eatSpace=" + eatSpace + + ", stopAtPunctuation=" + stopAtPunctuation + " in \"" + editor.innerHTML + + "\"; sel.anchorNode.parentNode=" + sel.anchorNode.parentNode; +} + +function testRight(node, offset) { + if (!kIsMac) { + synthesizeKey("KEY_ArrowRight", { ctrlKey: true }); + } else { + // macOS does not have default shortcut key to move caret per word. + SpecialPowers.doCommand(window, "cmd_wordNext"); + } + is(sel.anchorNode, node, errString("Right")); + is(sel.anchorOffset, offset, errString("Right")); +} + +function testLeft(node, offset) { + if (!kIsMac) { + synthesizeKey("KEY_ArrowLeft", { ctrlKey: true }); + } else { + // macOS does not have default shortcut key to move caret per word. + SpecialPowers.doCommand(window, "cmd_wordPrevious"); + } + is(sel.anchorNode, node, errString("Left")); + is(sel.anchorOffset, offset, errString("Left")); +} + +var afterEditorNode = document.getElementById("catch").firstChild; + +var ChineseChars = "漢字"; +var HiraganaChars = "ひらがな"; +var KatakanaChars = "カタカナ"; +var JapaneseFullStop = "。"; +var JapaneseComma = "、"; +var ModifierColon = "꞉"; +var Symbol = "⛅"; // "sun behind cloud" (weather symbol) +var Emoji = "🐀"; // rat emoji +var DeseretChars = "𐑀𐑁"; +var ChineseCharsPlane2 = "𠀋𠀿"; + +function test() { + setPrefs(false, true, test1); +} + +function test1() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 5); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 3); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + // In the next test, we expect to be at the end of the + // space that is not collapsed away + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 11); + testRight(editor.firstChild, 19); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 10); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild.nextSibling.firstChild, 1); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "layout.word_select.stop_at_punctuation"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 19); + testRight(editor.firstChild, 38); + testLeft(editor.firstChild, 19); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 3); + testLeft(editor.firstChild, 0); + + // test for bug 1066756 + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // test word selection in Deseret (alphabet in Plane 1) + editor.innerHTML = DeseretChars + " " + DeseretChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 9); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + // Latin words separated by a pictographic symbol + editor.innerHTML = "hello" + Symbol + "world"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + // Latin words separated by an emoji symbol + editor.innerHTML = "hello" + Emoji + "world"; + sel.collapse(editor.firstChild, 0); +// testRight(editor.firstChild, 7); + testRight(editor.firstChild, 12); +// testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // Emoji and Chinese + editor.innerHTML = Emoji + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 4); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + // test that word selection stops at Latin/Chinese boundary + editor.innerHTML = "hello" + ChineseChars + "world"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + // similar, but with Deseret (alphabet in Plane 1) in place of Latin + editor.innerHTML = DeseretChars + ChineseChars + DeseretChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 10); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + // with Plane 2 Chinese characters + editor.innerHTML = "hello" + ChineseCharsPlane2 + "world"; + sel.collapse(editor.firstChild, 0); +// testRight(editor.firstChild, 5); +// testRight(editor.firstChild, 9); + testRight(editor.firstChild, 14); +// testLeft(editor.firstChild, 9); +// testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + // Plane 1 Deseret and Plane 2 Chinese characters + editor.innerHTML = DeseretChars + ChineseCharsPlane2 + DeseretChars; + sel.collapse(editor.firstChild, 0); +// testRight(editor.firstChild, 4); +// testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); +// testLeft(editor.firstChild, 8); +// testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + // test basic word movement with eat_space_next_to_word true. + setPrefs(true, true, test2); +} + +function test2() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 1); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 4); + testRight(editor.firstChild.nextSibling, 2); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 11); + testRight(editor.firstChild, 19); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild.nextSibling.firstChild, 0); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild.nextSibling.firstChild, 1); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "layout.word_select.stop_at_punctuation"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 19); + testRight(editor.firstChild, 38); + testLeft(editor.firstChild, 19); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 3); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // Test basic word movement with stop_at_punctuation false (bug 981281). + setPrefs(false, false, test3); +} + +function test3() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 5); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 3); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 22); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 10); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "layout.word_select.stop_at_punctuation"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 38); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // And again with eat_space_next_to_word true. + setPrefs(true, false, test4); +} + +function test4() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 1); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 4); + testRight(editor.firstChild.nextSibling, 2); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 22); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild.nextSibling.firstChild, 0); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "layout.word_select.stop_at_punctuation"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 38); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + SimpleTest.finish(); +} + + +</script></pre> +</body> +</html> |