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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
div.test {
-webkit-user-modify: read-write;
padding: 4px;
border: 1px dashed lightblue;
margin: 4px 4px 4px 24px;
outline: none;
font-family: Lucida Grande;
counter-increment: test-number;
}
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; }
div.test img + img { background-color: lightblue; }
div.test div { border: 1px dashed pink; padding: 3px; height: 2em; }
</style>
<script>
function log(message)
{
document.getElementById("console").appendChild(document.createTextNode(message));
}
function positionsMovingInDirection(sel, direction)
{
var positions = [];
positions.push({ node: sel.anchorNode, offset: sel.focusOffset});
sel.modify("move", direction, "lineBoundary");
positions.push({ node: sel.anchorNode, offset: sel.focusOffset});
return positions;
}
function fold(string)
{
var result = "";
for (var i = 0; i < string.length; ++i) {
var char = string.charCodeAt(i);
if (char >= 0x05d0)
char -= 0x058f;
else if (char == 10) {
result += "\\n";
continue;
}
result += String.fromCharCode(char);
}
return result;
}
function logPositions(positions)
{
for (var i = 0; i < positions.length; ++i) {
if (i) {
if (positions[i].node != positions[i - 1].node)
log("]");
log(", ");
}
if (!i || positions[i].node != positions[i - 1].node)
log((positions[i].node instanceof Text ? '"' + fold(positions[i].node.data) + '"' : "<" + positions[i].node.tagName + ">") + "[");
log(positions[i].offset);
}
log("]");
}
onload = function()
{
if (!window.testRunner)
return;
testRunner.dumpAsText();
var tests = document.getElementsByClassName("test");
var sel = getSelection();
log("Test Moving forward/backward\n");
for (var i = 0; i < tests.length; ++i) {
var positionsMovingForward;
var positionsMovingBackward;
log("Test " + (i + 1) + ", LTR:\n Moving forward: ");
sel.collapse(tests[i], 0);
positionsMovingForward = positionsMovingInDirection(sel, "forward");
logPositions(positionsMovingForward);
log("\n");
log(" Moving backward: ");
positionsMovingBackward = positionsMovingInDirection(sel, "backward");
logPositions(positionsMovingBackward);
log("\n");
tests[i].style.direction = "rtl";
log("Test " + (i + 1) + ", RTL:\n Moving forward: ");
sel.collapse(tests[i], 0);
positionsMovingForward = positionsMovingInDirection(sel, "forward");
logPositions(positionsMovingForward);
log("\n");
log(" Moving backward: ");
positionsMovingBackward = positionsMovingInDirection(sel, "backward");
logPositions(positionsMovingBackward);
log("\n");
}
log("Test Moving right/left\n");
for (var i = 0; i < tests.length; ++i) {
var positionsMovingRight;
var positionsMovingLeft;
tests[i].style.direction = "ltr";
log("Test " + (i + 1) + ", LTR:\n Moving right: ");
sel.collapse(tests[i], 0);
positionsMovingRight = positionsMovingInDirection(sel, "right");
logPositions(positionsMovingRight);
log("\n");
log(" Moving left: ");
positionsMovingLeft = positionsMovingInDirection(sel, "left");
logPositions(positionsMovingLeft);
log("\n");
tests[i].style.direction = "rtl";
log("Test " + (i + 1) + ", RTL:\n Moving left: ");
sel.collapse(tests[i], 0);
positionsMovingLeft = positionsMovingInDirection(sel, "left");
logPositions(positionsMovingLeft);
log("\n");
log(" Moving right: ");
positionsMovingRight = positionsMovingInDirection(sel, "right");
logPositions(positionsMovingRight);
log("\n");
tests[i].style.display = "none";
}
}
</script>
</head>
<body>
<div contenteditable class="test">
abc &#1488;&#1489;&#1490; xyz &#1491;&#1492;&#1493; def
</div>
<div contenteditable class="test">
&#1488;&#1489;&#1490; xyz &#1491;&#1492;&#1493; def &#1494;&#1495;&#1496;
</div>
<div contenteditable class="test">
&#1488;&#1489;&#1490; &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;
</div>
<div contenteditable class="test">
abc efd dabeb
</div>
<div contenteditable class="test">Lorem <span style="direction: rtl">ipsum dolor sit</span> amet</div>
<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>
<div contenteditable class="test">Lorem <div dir="rtl">ipsum dolor sit</div> amet</div>
<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>
<div contenteditable class="test">Lorem <span dir="ltr">ipsum dolor sit</span> amet</div>
<div contenteditable class="test">Lorem <div dir="ltr">ipsum dolor sit</div> amet</div>
<div class="test" style="direction: ltr;" contenteditable>
Just
<span>testing רק</span>
בודק
</div>
<div class="test" style="direction: ltr;" contenteditable>
Just
<span>testing what</span>
ever
</div>
<div class="test" contenteditable>car means &#1488;&#1489;&#1490;.</div>
<div class="test" contenteditable>&#x202B;car &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;.&#x202c;</div>
<div class="test" contenteditable>they said "&#x202B;car &#1491;&#1492;&#1493; &#1488;&#1489;&#1490;&#x202c;."</div>
<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>
<div class="test" contenteditable>&#1488;&#1489;&#1490; abc &#1491;&#1492;&#1493;<br />edf &#1494;&#1495;&#1496; abrebg</div>
<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>
<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>
</body>
<!doctype HTML>
<script src="../../resources/ahem.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
function line_boundary_test(id, dir, input, output, direction) {
selection_test(
`<div contenteditable style="direction:${dir}">${input}</div>`,
selection => selection.modify('move', direction, 'lineBoundary'),
`<div contenteditable style="direction:${dir}">${output}</div>`,
`${id}-${dir.toUpperCase()} ${direction}`);
}
const kSample01 = [
'|abc \u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def',
'abc \u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def|',
];
line_boundary_test(1, 'ltr', kSample01[0], kSample01[1], 'forward');
line_boundary_test(1, 'ltr', kSample01[1], kSample01[0], 'backward');
line_boundary_test(1, 'ltr', kSample01[0], kSample01[1], 'right');
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');
line_boundary_test(1, 'rtl', kSample01[0], kSample01[0], 'right');
line_boundary_test(1, 'rtl', kSample01[0], kSample01[1], 'left');
const kSample02 = [
'|\u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def \u05D6\u05D7\u05D8',
'\u05D0\u05D1\u05D2 xyz \u05D3\u05D4\u05D5 def \u05D6\u05D7\u05D8|',
];
line_boundary_test(2, 'ltr', kSample02[0], kSample02[1], 'forward');
line_boundary_test(2, 'ltr', kSample02[1], kSample02[0], 'backward');
line_boundary_test(2, 'ltr', kSample02[0], kSample02[1], 'right');
line_boundary_test(2, 'ltr', kSample02[1], kSample02[0], 'left');
line_boundary_test(2, 'rtl', kSample02[0], kSample02[1], 'forward');
line_boundary_test(2, 'rtl', kSample02[1], kSample02[0], 'backward');
line_boundary_test(2, 'rtl', kSample02[0], kSample02[0], 'right');
line_boundary_test(2, 'rtl', kSample02[0], kSample02[1], 'left');
const kSample03 = [
'|\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2',
'\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5 \u05D0\u05D1\u05D2|',
];
line_boundary_test(3, 'ltr', kSample03[0], kSample03[1], 'forward');
line_boundary_test(3, 'ltr', kSample03[1], kSample03[0], 'backward');
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');
line_boundary_test(3, 'rtl', kSample03[1], kSample03[0], 'backward');
line_boundary_test(3, 'rtl', kSample03[0], kSample03[0], 'right');
line_boundary_test(3, 'rtl', kSample03[0], kSample03[1], 'left');
const kSample04 = [
'|abc efd dabeb',
'abc efd dabeb|',
];
line_boundary_test(4, 'ltr', kSample04[0], kSample04[1], 'forward');
line_boundary_test(4, 'ltr', kSample04[1], kSample04[0], 'backward');
line_boundary_test(4, 'ltr', kSample04[0], kSample04[1], 'right');
line_boundary_test(4, 'ltr', kSample04[1], kSample04[0], 'left');
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');
line_boundary_test(4, 'rtl', kSample04[0], kSample04[1], 'left');
const kSample05 = [
'|abc <span style="direction:rtl">def ghi jkl</span> mno',
'abc <span style="direction:rtl">def ghi jkl</span> mno|',
];
line_boundary_test(5, 'ltr', kSample05[0], kSample05[1], 'forward');
line_boundary_test(5, 'ltr', kSample05[1], kSample05[0], 'backward');
line_boundary_test(5, 'ltr', kSample05[0], kSample05[1], 'right');
line_boundary_test(5, 'ltr', kSample05[1], kSample05[0], 'left');
line_boundary_test(5, 'rtl', kSample05[0], kSample05[1], 'forward');
line_boundary_test(5, 'rtl', kSample05[1], kSample05[0], 'backward');
line_boundary_test(5, 'rtl', kSample05[0], kSample05[0], 'right');
line_boundary_test(5, 'rtl', kSample05[0], kSample05[1], 'left');
const kSample06 = [
'|abc <span style="direction:rtl">def ghi<div> just a test</div> jkl</span> mno',
'abc <span style="direction:rtl">def ghi|<div> just a test</div> jkl</span> mno',
];
line_boundary_test(6, 'ltr', kSample06[0], kSample06[1], 'forward');
line_boundary_test(6, 'ltr', kSample06[1], kSample06[0], 'backward');
line_boundary_test(6, 'ltr', kSample06[0], kSample06[1], 'right');
line_boundary_test(6, 'ltr', kSample06[1], kSample06[0], 'left');
line_boundary_test(6, 'rtl', kSample06[0], kSample06[1], 'forward');
line_boundary_test(6, 'rtl', kSample06[1], kSample06[0], 'backward');
line_boundary_test(6, 'rtl', kSample06[0], kSample06[0], 'right');
line_boundary_test(6, 'rtl', kSample06[0], kSample06[1], 'left');
const kSample07 = [
'|abc <span dir="rtl">def ghi jkl</span> mno',
'abc <span dir="rtl">def ghi jkl</span> mno|',
];
line_boundary_test(7, 'ltr', kSample07[0], kSample07[1], 'forward');
line_boundary_test(7, 'ltr', kSample07[1], kSample07[0], 'backward');
line_boundary_test(7, 'ltr', kSample07[0], kSample07[1], 'right');
line_boundary_test(7, 'ltr', kSample07[1], kSample07[0], 'left');
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');
line_boundary_test(7, 'rtl', kSample07[0], kSample07[1], 'left');
const kSample08 = [
'|abc <div dir="rtl">def ghi jkl</div> mno',
'abc| <div dir="rtl">def ghi jkl</div> mno',
];
line_boundary_test(8, 'ltr', kSample08[0], kSample08[1], 'forward');
line_boundary_test(8, 'ltr', kSample08[1], kSample08[0], 'backward');
line_boundary_test(8, 'ltr', kSample08[0], kSample08[1], 'right');
line_boundary_test(8, 'ltr', kSample08[1], kSample08[0], 'left');
line_boundary_test(8, 'rtl', kSample08[0], kSample08[1], 'forward');
line_boundary_test(8, 'rtl', kSample08[1], kSample08[0], 'backward');
line_boundary_test(8, 'rtl', kSample08[0], kSample08[0], 'right');
line_boundary_test(8, 'rtl', kSample08[0], kSample08[1], 'left');
const kSample09 = [
'|abc <span style="direction:ltr">def ghi jkl</span> mno',
'abc <span style="direction:ltr">def ghi jkl</span> mno|',
];
line_boundary_test(9, 'ltr', kSample09[0], kSample09[1], 'forward');
line_boundary_test(9, 'ltr', kSample09[1], kSample09[0], 'backward');
line_boundary_test(9, 'ltr', kSample09[0], kSample09[1], 'right');
line_boundary_test(9, 'ltr', kSample09[1], kSample09[0], 'left');
line_boundary_test(9, 'rtl', kSample09[0], kSample09[1], 'forward');
line_boundary_test(9, 'rtl', kSample09[1], kSample09[0], 'backward');
line_boundary_test(9, 'rtl', kSample09[0], kSample09[0], 'right');
line_boundary_test(9, 'rtl', kSample09[0], kSample09[1], 'left');
const kSample10 = [
'|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',
];
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');
line_boundary_test(10, 'ltr', kSample10[1], kSample10[0], 'left');
line_boundary_test(10, 'rtl', kSample10[0], kSample10[1], 'forward');
line_boundary_test(10, 'rtl', kSample10[1], kSample10[0], 'backward');
line_boundary_test(10, 'rtl', kSample10[0], kSample10[0], 'right');
line_boundary_test(10, 'rtl', kSample10[0], kSample10[1], 'left');
const kSample11 = [
'|abc <span dir="ltr">def ghi jkl</span> mno',
'abc <span dir="ltr">def ghi jkl</span> mno|',
];
line_boundary_test(11, 'ltr', kSample11[0], kSample11[1], 'forward');
line_boundary_test(11, 'ltr', kSample11[1], kSample11[0], 'backward');
line_boundary_test(11, 'ltr', kSample11[0], kSample11[1], 'right');
line_boundary_test(11, 'ltr', kSample11[1], kSample11[0], 'left');
line_boundary_test(11, 'rtl', kSample11[0], kSample11[1], 'forward');
line_boundary_test(11, 'rtl', kSample11[1], kSample11[0], 'backward');
line_boundary_test(11, 'rtl', kSample11[0], kSample11[0], 'right');
line_boundary_test(11, 'rtl', kSample11[0], kSample11[1], 'left');
const kSample12 = [
'|abc <div dir="ltr">def ghi jkl</div> mno',
'abc| <div dir="ltr">def ghi jkl</div> mno',
];
line_boundary_test(12, 'ltr', kSample12[0], kSample12[1], 'forward');
line_boundary_test(12, 'ltr', kSample12[1], kSample12[0], 'backward');
line_boundary_test(12, 'ltr', kSample12[0], kSample12[1], 'right');
line_boundary_test(12, 'ltr', kSample12[1], kSample12[0], 'left');
line_boundary_test(12, 'rtl', kSample12[0], kSample12[1], 'forward');
line_boundary_test(12, 'rtl', kSample12[1], kSample12[0], 'backward');
line_boundary_test(12, 'rtl', kSample12[0], kSample12[0], 'right');
line_boundary_test(12, 'rtl', kSample12[0], kSample12[1], 'left');
const kSample13 = [
'|abc <span>def \u05E8\u05E7</span> \u05D1\u05D5\u05D3\u05E7',
'abc <span>def \u05E8\u05E7</span> \u05D1\u05D5\u05D3\u05E7|',
];
line_boundary_test(13, 'ltr', kSample13[0], kSample13[1], 'forward');
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');
line_boundary_test(13, 'rtl', kSample13[0], kSample13[1], 'forward');
line_boundary_test(13, 'rtl', kSample13[1], kSample13[0], 'backward');
line_boundary_test(13, 'rtl', kSample13[0], kSample13[0], 'right');
line_boundary_test(13, 'rtl', kSample13[0], kSample13[1], 'left');
const kSample14 = [
'|abc <span>def ghi</span> jkl',
'abc <span>def ghi</span> jkl|',
];
line_boundary_test(14, 'ltr', kSample14[0], kSample14[1], 'forward');
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