Commit f9499ac6 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Convert editing/selection/home-end.html to utilize selection_test()

This patch changes "home-end.html" to utilize |selection_test()| for ease of
maintenance.

Bug: 679977
Change-Id: Ibb6aae18dfe753dda4eb15b6b2287b2a2c9cb03e
Reviewed-on: https://chromium-review.googlesource.com/c/1345683
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611422}
parent 1dc62042
Test Moving forward/backward
Test 1, LTR:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 8, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 9, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 12, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 13, LTR:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 15, RTL:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 16, LTR:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 20, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test Moving right/left
Test 1, LTR:
Moving right: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving left: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving left: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving right: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving right: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving left: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving left: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving right: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving right: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving left: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving left: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving right: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving right: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving left: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving left: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving right: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 8, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 9, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 12, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 13, LTR:
Moving right: <DIV>[0], "\n BFDX\n"[6]
Moving left: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving left: <DIV>[0], "\n BFDX\n"[6]
Moving right: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving right: <DIV>[0], "\n ever\n"[6]
Moving left: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving left: <DIV>[0], "\n ever\n"[6]
Moving right: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving right: <DIV>[0], "car means ABC."[14]
Moving left: "car means ABC."[14, 0]
Test 15, RTL:
Moving left: <DIV>[0], "car means ABC."[14]
Moving right: "car means ABC."[14, 0]
Test 16, LTR:
Moving right: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving left: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving left: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving right: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving right: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving left: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving left: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving right: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving right: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving left: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving left: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving right: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving right: <DIV>[0], "ABC abc DEF"[11]
Moving left: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving left: <DIV>[0], "ABC abc DEF"[11]
Moving right: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 20, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
<head> <!doctype HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="../../resources/ahem.js"></script>
<style> <script src="../../resources/testharness.js"></script>
div.test { <script src="../../resources/testharnessreport.js"></script>
-webkit-user-modify: read-write; <script src="../assert_selection.js"></script>
padding: 4px; <script>
border: 1px dashed lightblue; function line_boundary_test(id, dir, input, output, direction) {
margin: 4px 4px 4px 24px; selection_test(
outline: none; `<div contenteditable style="direction:${dir}">${input}</div>`,
font-family: Lucida Grande; selection => selection.modify('move', direction, 'lineBoundary'),
counter-increment: test-number; `<div contenteditable style="direction:${dir}">${output}</div>`,
} `${id}-${dir.toUpperCase()} ${direction}`);
div.test:before { content: counter(test-number); position: absolute; left: 8px; font-size: x-small; text-align: right; width: 20px; } }
div.test span { background-color: #def; }
div.test img { width: 1em; height: 1em; background-color: lightgreen; } const kSample01 = [
div.test img + img { background-color: lightblue; } '|abc \u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def',
div.test div { border: 1px dashed pink; padding: 3px; height: 2em; } 'abc \u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def|',
</style> ];
<script> line_boundary_test(1, 'ltr', kSample01[0], kSample01[1], 'forward');
function log(message) line_boundary_test(1, 'ltr', kSample01[1], kSample01[0], 'backward');
{ line_boundary_test(1, 'ltr', kSample01[0], kSample01[1], 'right');
document.getElementById("console").appendChild(document.createTextNode(message)); line_boundary_test(1, 'ltr', kSample01[1], kSample01[0], 'left');
} line_boundary_test(1, 'rtl', kSample01[0], kSample01[1], 'forward');
line_boundary_test(1, 'rtl', kSample01[1], kSample01[0], 'backward');
function positionsMovingInDirection(sel, direction) line_boundary_test(1, 'rtl', kSample01[0], kSample01[0], 'right');
{ line_boundary_test(1, 'rtl', kSample01[0], kSample01[1], 'left');
var positions = [];
positions.push({ node: sel.anchorNode, offset: sel.focusOffset}); const kSample02 = [
sel.modify("move", direction, "lineBoundary"); '|\u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def \u05D6\u05D7\u05D8',
positions.push({ node: sel.anchorNode, offset: sel.focusOffset}); '\u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def \u05D6\u05D7\u05D8|',
return positions; ];
} line_boundary_test(2, 'ltr', kSample02[0], kSample02[1], 'forward');
line_boundary_test(2, 'ltr', kSample02[1], kSample02[0], 'backward');
function fold(string) line_boundary_test(2, 'ltr', kSample02[0], kSample02[1], 'right');
{ line_boundary_test(2, 'ltr', kSample02[1], kSample02[0], 'left');
var result = ""; line_boundary_test(2, 'rtl', kSample02[0], kSample02[1], 'forward');
for (var i = 0; i < string.length; ++i) { line_boundary_test(2, 'rtl', kSample02[1], kSample02[0], 'backward');
var char = string.charCodeAt(i); line_boundary_test(2, 'rtl', kSample02[0], kSample02[0], 'right');
if (char >= 0x05d0) line_boundary_test(2, 'rtl', kSample02[0], kSample02[1], 'left');
char -= 0x058f;
else if (char == 10) { const kSample03 = [
result += "\\n"; '|\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2',
continue; '\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2|',
} ];
result += String.fromCharCode(char); line_boundary_test(3, 'ltr', kSample03[0], kSample03[1], 'forward');
} line_boundary_test(3, 'ltr', kSample03[1], kSample03[0], 'backward');
return result; line_boundary_test(3, 'ltr', kSample03[0], kSample03[1], 'right');
} line_boundary_test(3, 'ltr', kSample03[1], kSample03[0], 'left');
line_boundary_test(3, 'rtl', kSample03[0], kSample03[1], 'forward');
function logPositions(positions) line_boundary_test(3, 'rtl', kSample03[1], kSample03[0], 'backward');
{ line_boundary_test(3, 'rtl', kSample03[0], kSample03[0], 'right');
for (var i = 0; i < positions.length; ++i) { line_boundary_test(3, 'rtl', kSample03[0], kSample03[1], 'left');
if (i) {
if (positions[i].node != positions[i - 1].node) const kSample04 = [
log("]"); '|abc efd dabeb',
log(", "); 'abc efd dabeb|',
} ];
if (!i || positions[i].node != positions[i - 1].node) line_boundary_test(4, 'ltr', kSample04[0], kSample04[1], 'forward');
log((positions[i].node instanceof Text ? '"' + fold(positions[i].node.data) + '"' : "<" + positions[i].node.tagName + ">") + "["); line_boundary_test(4, 'ltr', kSample04[1], kSample04[0], 'backward');
log(positions[i].offset); line_boundary_test(4, 'ltr', kSample04[0], kSample04[1], 'right');
} line_boundary_test(4, 'ltr', kSample04[1], kSample04[0], 'left');
log("]"); line_boundary_test(4, 'rtl', kSample04[0], kSample04[1], 'forward');
} line_boundary_test(4, 'rtl', kSample04[1], kSample04[0], 'backward');
line_boundary_test(4, 'rtl', kSample04[0], kSample04[0], 'right');
onload = function() line_boundary_test(4, 'rtl', kSample04[0], kSample04[1], 'left');
{
if (!window.testRunner) const kSample05 = [
return; '|abc <span style="direction:rtl">def ghi jkl</span> mno',
'abc <span style="direction:rtl">def ghi jkl</span> mno|',
testRunner.dumpAsText(); ];
line_boundary_test(5, 'ltr', kSample05[0], kSample05[1], 'forward');
var tests = document.getElementsByClassName("test"); line_boundary_test(5, 'ltr', kSample05[1], kSample05[0], 'backward');
var sel = getSelection(); line_boundary_test(5, 'ltr', kSample05[0], kSample05[1], 'right');
log("Test Moving forward/backward\n"); line_boundary_test(5, 'ltr', kSample05[1], kSample05[0], 'left');
for (var i = 0; i < tests.length; ++i) { line_boundary_test(5, 'rtl', kSample05[0], kSample05[1], 'forward');
var positionsMovingForward; line_boundary_test(5, 'rtl', kSample05[1], kSample05[0], 'backward');
var positionsMovingBackward; line_boundary_test(5, 'rtl', kSample05[0], kSample05[0], 'right');
line_boundary_test(5, 'rtl', kSample05[0], kSample05[1], 'left');
log("Test " + (i + 1) + ", LTR:\n Moving forward: ");
sel.collapse(tests[i], 0); const kSample06 = [
positionsMovingForward = positionsMovingInDirection(sel, "forward"); '|abc <span style="direction:rtl">def ghi<div> just a test</div> jkl</span> mno',
logPositions(positionsMovingForward); 'abc <span style="direction:rtl">def ghi|<div> just a test</div> jkl</span> mno',
log("\n"); ];
line_boundary_test(6, 'ltr', kSample06[0], kSample06[1], 'forward');
log(" Moving backward: "); line_boundary_test(6, 'ltr', kSample06[1], kSample06[0], 'backward');
positionsMovingBackward = positionsMovingInDirection(sel, "backward"); line_boundary_test(6, 'ltr', kSample06[0], kSample06[1], 'right');
logPositions(positionsMovingBackward); line_boundary_test(6, 'ltr', kSample06[1], kSample06[0], 'left');
log("\n"); line_boundary_test(6, 'rtl', kSample06[0], kSample06[1], 'forward');
line_boundary_test(6, 'rtl', kSample06[1], kSample06[0], 'backward');
tests[i].style.direction = "rtl"; line_boundary_test(6, 'rtl', kSample06[0], kSample06[0], 'right');
line_boundary_test(6, 'rtl', kSample06[0], kSample06[1], 'left');
log("Test " + (i + 1) + ", RTL:\n Moving forward: ");
sel.collapse(tests[i], 0); const kSample07 = [
positionsMovingForward = positionsMovingInDirection(sel, "forward"); '|abc <span dir="rtl">def ghi jkl</span> mno',
logPositions(positionsMovingForward); 'abc <span dir="rtl">def ghi jkl</span> mno|',
log("\n"); ];
line_boundary_test(7, 'ltr', kSample07[0], kSample07[1], 'forward');
log(" Moving backward: "); line_boundary_test(7, 'ltr', kSample07[1], kSample07[0], 'backward');
positionsMovingBackward = positionsMovingInDirection(sel, "backward"); line_boundary_test(7, 'ltr', kSample07[0], kSample07[1], 'right');
logPositions(positionsMovingBackward); line_boundary_test(7, 'ltr', kSample07[1], kSample07[0], 'left');
log("\n"); line_boundary_test(7, 'rtl', kSample07[0], kSample07[1], 'forward');
line_boundary_test(7, 'rtl', kSample07[1], kSample07[0], 'backward');
} line_boundary_test(7, 'rtl', kSample07[0], kSample07[0], 'right');
log("Test Moving right/left\n"); line_boundary_test(7, 'rtl', kSample07[0], kSample07[1], 'left');
for (var i = 0; i < tests.length; ++i) {
var positionsMovingRight; const kSample08 = [
var positionsMovingLeft; '|abc <div dir="rtl">def ghi jkl</div> mno',
'abc| <div dir="rtl">def ghi jkl</div> mno',
tests[i].style.direction = "ltr"; ];
line_boundary_test(8, 'ltr', kSample08[0], kSample08[1], 'forward');
log("Test " + (i + 1) + ", LTR:\n Moving right: "); line_boundary_test(8, 'ltr', kSample08[1], kSample08[0], 'backward');
sel.collapse(tests[i], 0); line_boundary_test(8, 'ltr', kSample08[0], kSample08[1], 'right');
positionsMovingRight = positionsMovingInDirection(sel, "right"); line_boundary_test(8, 'ltr', kSample08[1], kSample08[0], 'left');
logPositions(positionsMovingRight); line_boundary_test(8, 'rtl', kSample08[0], kSample08[1], 'forward');
log("\n"); line_boundary_test(8, 'rtl', kSample08[1], kSample08[0], 'backward');
line_boundary_test(8, 'rtl', kSample08[0], kSample08[0], 'right');
log(" Moving left: "); line_boundary_test(8, 'rtl', kSample08[0], kSample08[1], 'left');
positionsMovingLeft = positionsMovingInDirection(sel, "left");
logPositions(positionsMovingLeft); const kSample09 = [
log("\n"); '|abc <span style="direction:ltr">def ghi jkl</span> mno',
'abc <span style="direction:ltr">def ghi jkl</span> mno|',
tests[i].style.direction = "rtl"; ];
line_boundary_test(9, 'ltr', kSample09[0], kSample09[1], 'forward');
log("Test " + (i + 1) + ", RTL:\n Moving left: "); line_boundary_test(9, 'ltr', kSample09[1], kSample09[0], 'backward');
sel.collapse(tests[i], 0); line_boundary_test(9, 'ltr', kSample09[0], kSample09[1], 'right');
positionsMovingLeft = positionsMovingInDirection(sel, "left"); line_boundary_test(9, 'ltr', kSample09[1], kSample09[0], 'left');
logPositions(positionsMovingLeft); line_boundary_test(9, 'rtl', kSample09[0], kSample09[1], 'forward');
log("\n"); line_boundary_test(9, 'rtl', kSample09[1], kSample09[0], 'backward');
line_boundary_test(9, 'rtl', kSample09[0], kSample09[0], 'right');
log(" Moving right: "); line_boundary_test(9, 'rtl', kSample09[0], kSample09[1], 'left');
positionsMovingRight = positionsMovingInDirection(sel, "right");
logPositions(positionsMovingRight); const kSample10 = [
log("\n"); '|abc <span style="direction:ltr">def ghi<div> just a test</div> jkl</span> mno',
'abc <span style="direction:ltr">def ghi|<div> just a test</div> jkl</span> mno',
tests[i].style.display = "none"; ];
} line_boundary_test(10, 'ltr', kSample10[0], kSample10[1], 'forward');
} line_boundary_test(10, 'ltr', kSample10[1], kSample10[0], 'backward');
line_boundary_test(10, 'ltr', kSample10[0], kSample10[1], 'right');
</script> line_boundary_test(10, 'ltr', kSample10[1], kSample10[0], 'left');
</head> line_boundary_test(10, 'rtl', kSample10[0], kSample10[1], 'forward');
<body> line_boundary_test(10, 'rtl', kSample10[1], kSample10[0], 'backward');
line_boundary_test(10, 'rtl', kSample10[0], kSample10[0], 'right');
<div contenteditable class="test"> line_boundary_test(10, 'rtl', kSample10[0], kSample10[1], 'left');
abc &#1488;&#1489;&#1490; xyz &#1491;&#1492;&#1493; def
</div> const kSample11 = [
<div contenteditable class="test"> '|abc <span dir="ltr">def ghi jkl</span> mno',
&#1488;&#1489;&#1490; xyz &#1491;&#1492;&#1493; def &#1494;&#1495;&#1496; 'abc <span dir="ltr">def ghi jkl</span> mno|',
</div> ];
<div contenteditable class="test"> line_boundary_test(11, 'ltr', kSample11[0], kSample11[1], 'forward');
&#1488;&#1489;&#1490; &#1491;&#1492;&#1493; &#1488;&#1489;&#1490; line_boundary_test(11, 'ltr', kSample11[1], kSample11[0], 'backward');
</div> line_boundary_test(11, 'ltr', kSample11[0], kSample11[1], 'right');
<div contenteditable class="test"> line_boundary_test(11, 'ltr', kSample11[1], kSample11[0], 'left');
abc efd dabeb line_boundary_test(11, 'rtl', kSample11[0], kSample11[1], 'forward');
</div> line_boundary_test(11, 'rtl', kSample11[1], kSample11[0], 'backward');
line_boundary_test(11, 'rtl', kSample11[0], kSample11[0], 'right');
<div contenteditable class="test">Lorem <span style="direction: rtl">ipsum dolor sit</span> amet</div> line_boundary_test(11, 'rtl', kSample11[0], kSample11[1], 'left');
<div contenteditable class="test">Lorem <span style="direction: rtl">ipsum dolor<div > just a test</div> sit</span> amet</div>
<div contenteditable class="test">Lorem <span dir="rtl">ipsum dolor sit</span> amet</div> const kSample12 = [
<div contenteditable class="test">Lorem <div dir="rtl">ipsum dolor sit</div> amet</div> '|abc <div dir="ltr">def ghi jkl</div> mno',
'abc| <div dir="ltr">def ghi jkl</div> mno',
<div contenteditable class="test">Lorem <span style="direction: ltr">ipsum dolor sit</span> amet</div> ];
<div contenteditable class="test">Lorem <span style="direction: ltr">ipsum dolor<div > just a test</div> sit</span> amet</div> line_boundary_test(12, 'ltr', kSample12[0], kSample12[1], 'forward');
<div contenteditable class="test">Lorem <span dir="ltr">ipsum dolor sit</span> amet</div> line_boundary_test(12, 'ltr', kSample12[1], kSample12[0], 'backward');
<div contenteditable class="test">Lorem <div dir="ltr">ipsum dolor sit</div> amet</div> line_boundary_test(12, 'ltr', kSample12[0], kSample12[1], 'right');
line_boundary_test(12, 'ltr', kSample12[1], kSample12[0], 'left');
<div class="test" style="direction: ltr;" contenteditable> line_boundary_test(12, 'rtl', kSample12[0], kSample12[1], 'forward');
Just line_boundary_test(12, 'rtl', kSample12[1], kSample12[0], 'backward');
<span>testing רק</span> line_boundary_test(12, 'rtl', kSample12[0], kSample12[0], 'right');
בודק line_boundary_test(12, 'rtl', kSample12[0], kSample12[1], 'left');
</div>
const kSample13 = [
<div class="test" style="direction: ltr;" contenteditable> '|abc <span>def \u05E8\u05E7</span> \u05D1\u05D5\u05D3\u05E7',
Just 'abc <span>def \u05E8\u05E7</span> \u05D1\u05D5\u05D3\u05E7|',
<span>testing what</span> ];
ever line_boundary_test(13, 'ltr', kSample13[0], kSample13[1], 'forward');
</div> line_boundary_test(13, 'ltr', kSample13[1], kSample13[0], 'backward');
line_boundary_test(13, 'ltr', kSample13[0], kSample13[1], 'right');
line_boundary_test(13, 'ltr', kSample13[1], kSample13[0], 'left');
<div class="test" contenteditable>car means &#1488;&#1489;&#1490;.</div> line_boundary_test(13, 'rtl', kSample13[0], kSample13[1], 'forward');
<div class="test" contenteditable>&#x202B;car &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;.&#x202c;</div> line_boundary_test(13, 'rtl', kSample13[1], kSample13[0], 'backward');
<div class="test" contenteditable>they said "&#x202B;car &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;&#x202c;."</div> line_boundary_test(13, 'rtl', kSample13[0], kSample13[0], 'right');
<div class="test" contenteditable>&#1494;&#1495;&#1496; &#1497;&#1498;&#1499; &#1500;&#1501;&#1502; '&#x202a;they said "&#x202B;car &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;&#x202c;"&#x202c;'?</div> line_boundary_test(13, 'rtl', kSample13[0], kSample13[1], 'left');
const kSample14 = [
<div class="test" contenteditable>&#1488;&#1489;&#1490; abc &#1491;&#1492;&#1493;<br />edf &#1494;&#1495;&#1496; abrebg</div> '|abc <span>def ghi</span> jkl',
<div class="test" contenteditable style="line-break:before-white-space; width:100px">abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg </div> 'abc <span>def ghi</span> jkl|',
<div class="test" contenteditable style="line-break:after-white-space; width:100px">abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg </div> ];
<pre id="console"></pre> line_boundary_test(14, 'ltr', kSample14[0], kSample14[1], 'forward');
</body> line_boundary_test(14, 'ltr', kSample14[1], kSample14[0], 'backward');
line_boundary_test(14, 'ltr', kSample14[0], kSample14[1], 'right');
line_boundary_test(14, 'ltr', kSample14[1], kSample14[0], 'left');
line_boundary_test(14, 'rtl', kSample14[0], kSample14[1], 'forward');
line_boundary_test(14, 'rtl', kSample14[1], kSample14[0], 'backward');
line_boundary_test(14, 'rtl', kSample14[0], kSample14[0], 'right');
line_boundary_test(14, 'rtl', kSample14[0], kSample14[1], 'left');
const kSample15 = [
'|abc def \u05D0\u05D1\u05D2.',
'abc def \u05D0\u05D1\u05D2.|',
];
line_boundary_test(15, 'ltr', kSample15[0], kSample15[1], 'forward');
line_boundary_test(15, 'ltr', kSample15[1], kSample15[0], 'backward');
line_boundary_test(15, 'ltr', kSample15[0], kSample15[1], 'right');
line_boundary_test(15, 'ltr', kSample15[1], kSample15[0], 'left');
line_boundary_test(15, 'rtl', kSample15[0], kSample15[1], 'forward');
line_boundary_test(15, 'rtl', kSample15[1], kSample15[0], 'backward');
line_boundary_test(15, 'rtl', kSample15[0], kSample15[0], 'right');
line_boundary_test(15, 'rtl', kSample15[0], kSample15[1], 'left');
const kSample16 = [
'|\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2.\u202C',
'\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2.\u202C|',
];
line_boundary_test(16, 'ltr', kSample16[0], kSample16[1], 'forward');
line_boundary_test(16, 'ltr', kSample16[1], kSample16[0], 'backward');
line_boundary_test(16, 'ltr', kSample16[0], kSample16[1], 'right');
line_boundary_test(16, 'ltr', kSample16[1], kSample16[0], 'left');
line_boundary_test(16, 'rtl', kSample16[0], kSample16[1], 'forward');
line_boundary_test(16, 'rtl', kSample16[1], kSample16[0], 'backward');
line_boundary_test(16, 'rtl', kSample16[0], kSample16[0], 'right');
line_boundary_test(16, 'rtl', kSample16[0], kSample16[1], 'left');
const kSample17 = [
'|abc "\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2\u202C."',
'abc "\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2\u202C."|',
];
line_boundary_test(17, 'ltr', kSample17[0], kSample17[1], 'forward');
line_boundary_test(17, 'ltr', kSample17[1], kSample17[0], 'backward');
line_boundary_test(17, 'ltr', kSample17[0], kSample17[1], 'right');
line_boundary_test(17, 'ltr', kSample17[1], kSample17[0], 'left');
line_boundary_test(17, 'rtl', kSample17[0], kSample17[1], 'forward');
line_boundary_test(17, 'rtl', kSample17[1], kSample17[0], 'backward');
line_boundary_test(17, 'rtl', kSample17[0], kSample17[0], 'right');
line_boundary_test(17, 'rtl', kSample17[0], kSample17[1], 'left');
const kSample18 = [
'|\u05D6\u05D7\u05D8 \'\u202Axyz abc "\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2\u202C"\u202C\'?',
'\u05D6\u05D7\u05D8 \'\u202Axyz abc "\u202Bxyz \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2\u202C"\u202C\'?|',
];
line_boundary_test(18, 'ltr', kSample18[0], kSample18[1], 'forward');
line_boundary_test(18, 'ltr', kSample18[1], kSample18[0], 'backward');
line_boundary_test(18, 'ltr', kSample18[0], kSample18[1], 'right');
line_boundary_test(18, 'ltr', kSample18[1], kSample18[0], 'left');
line_boundary_test(18, 'rtl', kSample18[0], kSample18[1], 'forward');
line_boundary_test(18, 'rtl', kSample18[1], kSample18[0], 'backward');
line_boundary_test(18, 'rtl', kSample18[0], kSample18[0], 'right');
line_boundary_test(18, 'rtl', kSample18[0], kSample18[1], 'left');
const kSample19 = [
'|\u05D0\u05D1\u05D2 abc \u05D3\u05D4\u05D5<br>def \u05D6\u05D7\u05D8 ghi',
'\u05D0\u05D1\u05D2 abc \u05D3\u05D4\u05D5|<br>def \u05D6\u05D7\u05D8 ghi',
];
line_boundary_test(19, 'ltr', kSample19[0], kSample19[1], 'forward');
line_boundary_test(19, 'ltr', kSample19[1], kSample19[0], 'backward');
line_boundary_test(19, 'ltr', kSample19[0], kSample19[1], 'right');
line_boundary_test(19, 'ltr', kSample19[1], kSample19[0], 'left');
line_boundary_test(19, 'rtl', kSample19[0], kSample19[1], 'forward');
line_boundary_test(19, 'rtl', kSample19[1], kSample19[0], 'backward');
line_boundary_test(19, 'rtl', kSample19[0], kSample19[0], 'right');
line_boundary_test(19, 'rtl', kSample19[0], kSample19[1], 'left');
const kSample20 = [
'<div style="font-family:Ahem; line-break:before-white-space; width:8ch">|abcdefg hijklm opqrstu v wxyz</div>',
'<div style="font-family:Ahem; line-break:before-white-space; width:8ch">abcdefg |hijklm opqrstu v wxyz</div>',
];
line_boundary_test(20, 'ltr', kSample20[0], kSample20[1], 'forward');
// TODO(yosin): output should be kSample20[0].
line_boundary_test(20, 'ltr', kSample20[1], kSample20[1], 'backward');
line_boundary_test(20, 'ltr', kSample20[0], kSample20[1], 'right');
line_boundary_test(20, 'ltr', kSample20[1], kSample20[1], 'left');
line_boundary_test(20, 'rtl', kSample20[0], kSample20[1], 'forward');
// TODO(yosin): output should be kSample20[0].
line_boundary_test(20, 'rtl', kSample20[1], kSample20[1], 'backward');
line_boundary_test(20, 'rtl', kSample20[0], kSample20[0], 'right');
line_boundary_test(20, 'rtl', kSample20[0], kSample20[1], 'left');
const kSample21 = [
'<div style="font-family:Ahem; line-break:after-white-space; width:8ch">|abcdefg hijklm opqrstu v wxyz</div>',
'<div style="font-family:Ahem; line-break:after-white-space; width:8ch">abcdefg |hijklm opqrstu v wxyz</div>',
];
line_boundary_test(21, 'ltr', kSample21[0], kSample21[1], 'forward');
// TODO(yosin): output should be kSample21[0].
line_boundary_test(21, 'ltr', kSample21[1], kSample21[1], 'backward');
line_boundary_test(21, 'ltr', kSample21[0], kSample21[1], 'right');
line_boundary_test(21, 'ltr', kSample21[1], kSample21[1], 'left');
line_boundary_test(21, 'rtl', kSample21[0], kSample21[1], 'forward');
// TODO(yosin): output should be kSample21[0].
line_boundary_test(21, 'rtl', kSample21[1], kSample21[1], 'backward');
line_boundary_test(21, 'rtl', kSample21[0], kSample21[0], 'right');
line_boundary_test(21, 'rtl', kSample21[0], kSample21[1], 'left');
</script>
Test Moving forward/backward
Test 1, LTR:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 8, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 9, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 12, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 13, LTR:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 15, RTL:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 16, LTR:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 20, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test Moving right/left
Test 1, LTR:
Moving right: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving left: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving left: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving right: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving right: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving left: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving left: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving right: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving right: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving left: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving left: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving right: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving right: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving left: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving left: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving right: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 8, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 9, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 12, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 13, LTR:
Moving right: <DIV>[0], "\n BFDX\n"[6]
Moving left: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving left: <DIV>[0], "\n BFDX\n"[6]
Moving right: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving right: <DIV>[0], "\n ever\n"[6]
Moving left: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving left: <DIV>[0], "\n ever\n"[6]
Moving right: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving right: <DIV>[0], "car means ABC."[14]
Moving left: "car means ABC."[14, 0]
Test 15, RTL:
Moving left: <DIV>[0], "car means ABC."[14]
Moving right: "car means ABC."[14, 0]
Test 16, LTR:
Moving right: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving left: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving left: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving right: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving right: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving left: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving left: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving right: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving right: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving left: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving left: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving right: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving right: <DIV>[0], "ABC abc DEF"[11]
Moving left: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving left: <DIV>[0], "ABC abc DEF"[11]
Moving right: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 20, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test 21, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[8, 0]
Test Moving forward/backward
Test 1, LTR:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving forward: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving backward: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving forward: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving backward: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving forward: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving backward: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving forward: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving backward: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 8, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 9, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving forward: <DIV>[0], "ipsum dolor"[11]
Moving backward: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving forward: <DIV>[0], " amet"[5]
Moving backward: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 12, RTL:
Moving forward: <DIV>[0], "Lorem "[5]
Moving backward: "Lorem "[5, 0]
Test 13, LTR:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving forward: <DIV>[0], "\n BFDX\n"[6]
Moving backward: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving forward: <DIV>[0], "\n ever\n"[6]
Moving backward: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 15, RTL:
Moving forward: <DIV>[0], "car means ABC."[14]
Moving backward: "car means ABC."[14, 0]
Test 16, LTR:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving forward: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving backward: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving forward: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving backward: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving forward: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving backward: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving forward: <DIV>[0], "ABC abc DEF"[11]
Moving backward: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 20, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 21, LTR:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 21, RTL:
Moving forward: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving backward: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test Moving right/left
Test 1, LTR:
Moving right: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving left: "\nabc ABC xyz DEF def\n"[20, 1]
Test 1, RTL:
Moving left: <DIV>[0], "\nabc ABC xyz DEF def\n"[20]
Moving right: "\nabc ABC xyz DEF def\n"[20, 1]
Test 2, LTR:
Moving right: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving left: "\nABC xyz DEF def GHI\n"[20, 1]
Test 2, RTL:
Moving left: <DIV>[0], "\nABC xyz DEF def GHI\n"[20]
Moving right: "\nABC xyz DEF def GHI\n"[20, 1]
Test 3, LTR:
Moving right: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving left: "\nABC DEF ABC\n"[12, 1]
Test 3, RTL:
Moving left: <DIV>[0], "\nABC DEF ABC\n"[12]
Moving right: "\nABC DEF ABC\n"[12, 1]
Test 4, LTR:
Moving right: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving left: "\nabc efd dabeb\n"[14, 1]
Test 4, RTL:
Moving left: <DIV>[0], "\nabc efd dabeb\n"[14]
Moving right: "\nabc efd dabeb\n"[14, 1]
Test 5, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 5, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 6, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 6, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 7, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 7, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 8, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 8, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 9, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 9, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 10, LTR:
Moving right: <DIV>[0], "ipsum dolor"[11]
Moving left: "ipsum dolor"[11], "Lorem "[0]
Test 10, RTL:
Moving left: <DIV>[0], "ipsum dolor"[11]
Moving right: "ipsum dolor"[11], "Lorem "[0]
Test 11, LTR:
Moving right: <DIV>[0], " amet"[5]
Moving left: " amet"[5], "Lorem "[0]
Test 11, RTL:
Moving left: <DIV>[0], " amet"[5]
Moving right: " amet"[5], "Lorem "[0]
Test 12, LTR:
Moving right: <DIV>[0], "Lorem "[5]
Moving left: "Lorem "[5, 0]
Test 12, RTL:
Moving left: <DIV>[0], "Lorem "[5]
Moving right: "Lorem "[5, 0]
Test 13, LTR:
Moving right: <DIV>[0], "\n BFDX\n"[6]
Moving left: "\n BFDX\n"[6], "\n Just\n "[2]
Test 13, RTL:
Moving left: <DIV>[0], "\n BFDX\n"[6]
Moving right: "\n BFDX\n"[6], "\n Just\n "[2]
Test 14, LTR:
Moving right: <DIV>[0], "\n ever\n"[6]
Moving left: "\n ever\n"[6], "\n Just\n "[2]
Test 14, RTL:
Moving left: <DIV>[0], "\n ever\n"[6]
Moving right: "\n ever\n"[6], "\n Just\n "[2]
Test 15, LTR:
Moving right: <DIV>[0], "car means ABC."[14]
Moving left: "car means ABC."[14, 0]
Test 15, RTL:
Moving left: <DIV>[0], "car means ABC."[14]
Moving right: "car means ABC."[14, 0]
Test 16, LTR:
Moving right: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving left: "᪜car DEF ABC.᪝"[14, 0]
Test 16, RTL:
Moving left: <DIV>[0], "᪜car DEF ABC.᪝"[14]
Moving right: "᪜car DEF ABC.᪝"[14, 0]
Test 17, LTR:
Moving right: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving left: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 17, RTL:
Moving left: <DIV>[0], "they said "᪜car DEF ABC᪝.""[26]
Moving right: "they said "᪜car DEF ABC᪝.""[26, 0]
Test 18, LTR:
Moving right: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving left: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 18, RTL:
Moving left: <DIV>[0], "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42]
Moving right: "GHI JKL MNO '᪛they said "᪜car DEF ABC᪝"᪝'?"[42, 0]
Test 19, LTR:
Moving right: <DIV>[0], "ABC abc DEF"[11]
Moving left: "ABC abc DEF"[11, 0]
Test 19, RTL:
Moving left: <DIV>[0], "ABC abc DEF"[11]
Moving right: "ABC abc DEF"[11, 0]
Test 20, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 20, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 21, LTR:
Moving right: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving left: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Test 21, RTL:
Moving left: <DIV>[0], "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16]
Moving right: "abcdefg abcdefg abcdefg a abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg "[16, 0]
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment