diff options
Diffstat (limited to 'layout/generic/test/test_bug288789.html')
-rw-r--r-- | layout/generic/test/test_bug288789.html | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/layout/generic/test/test_bug288789.html b/layout/generic/test/test_bug288789.html new file mode 100644 index 0000000000..1d52bed70d --- /dev/null +++ b/layout/generic/test/test_bug288789.html @@ -0,0 +1,117 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=288789 +--> +<head> + <title>Test for Bug 288789</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/EventUtils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=288789">Mozilla Bug 288789</a> +<p id="display"></p> +<div id="content"> +<textarea id="ta" dir="rtl"> + +אaב + +</textarea> +<textarea id="tb"> + +abc + +</textarea> +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> + +/** Test for Bug 288789 **/ + +SimpleTest.waitForExplicitFinish(); + +// This seems to be necessary because the selection is not set up properly otherwise +setTimeout(test, 0); + +function test() { + var textarea = $("ta"); + + function collapse(offset) { + textarea.selectionStart = offset; + textarea.selectionEnd = offset; + } + + function testRight(offset) { + synthesizeKey("KEY_ArrowRight"); + is(textarea.selectionStart, offset, "Right movement broken"); + } + + function testLeft(offset) { + synthesizeKey("KEY_ArrowLeft"); + is(textarea.selectionStart, offset, "Left movement broken"); + } + + textarea.focus(); + collapse(0); + ok(true, "Testing forward movement in RTL mode"); + for (var i = 0; i < textarea.textContent.length; ++i) { + if (i == 0) { + testRight(i); + } + if (textarea.textContent[i] == 'a') { + testLeft(i); + } else { + testLeft(i + 1); + } + if (i == textarea.textContent.length - 1) { + testLeft(i + 1); + } + } + ok(true, "Testing backward movement in RTL mode"); + for (var i = textarea.textContent.length; i > 0; --i) { + if (i == textarea.textContent.length) { + testLeft(i); + } + if (i > 0 && textarea.textContent[i - 1] == 'a') { + testRight(i); + } else { + testRight(i - 1); + } + if (i == 1) { + testRight(i - 1); + } + } + + textarea = $("tb"); + textarea.focus(); + collapse(0); + ok(true, "Testing forward movement in LTR mode"); + for (var i = 0; i < textarea.textContent.length; ++i) { + if (i == 0) { + testLeft(i); + } + testRight(i + 1); + if (i == textarea.textContent.length - 1) { + testRight(i + 1); + } + } + ok(true, "Testing backward movement in LTR mode"); + for (var i = textarea.textContent.length; i > 0; --i) { + if (i == textarea.textContent.length) { + testRight(i); + } + testLeft(i - 1); + if (i == 1) { + testLeft(i - 1); + } + } + + SimpleTest.finish(); +} + +</script> +</pre> +</body> +</html> + |