Commit c17fd457 authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

Utilize assert_selection to move-left-right.html #4

This patch adds assert_selection tests converted from
editing/selection/move-left-right.html.
Here is generator: crrev.com/c/1032319

This patch includes #31-#43 tests in original 43 tests.

Bug: 679977
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: Ic4a9f93f275d8d6466984440564230f9636d729b
Reviewed-on: https://chromium-review.googlesource.com/1063511Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561429}
parent 272f0cea
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>|c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
'31-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
'31-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
'31-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
'31-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
'31-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
'31-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
'31-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
'31-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>|c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
'31-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
'31-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
'31-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
'31-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
'31-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
'31-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
'31-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
'31-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>|\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
'32-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
'32-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
'32-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
'32-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
'32-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
'32-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
'32-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
'32-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>|\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
'32-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
'32-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
'32-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
'32-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
'32-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
'32-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
'32-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
'32-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
'32-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
'33-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
'33-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
'33-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
'33-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
'33-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
'33-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
'33-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
'33-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
'33-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
'33-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
'33-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
'33-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
'33-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
'33-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
'33-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
'33-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
'33-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
'33-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
'33-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
'33-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
'34-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
'34-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
'34-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
'34-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
'34-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
'34-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
'34-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
'34-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
'34-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
'34-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
'34-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
'34-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
'34-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
'34-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
'34-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0def</div>',
'35-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0def</div>',
'35-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0def</div>',
'35-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0def</div>',
'35-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0def</div>',
'35-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0d|ef</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|def</div>',
'35-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0de|f</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0d|ef</div>',
'35-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0def|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0de|f</div>',
'35-7 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0def</div>',
'35-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0def</div>',
'35-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0def</div>',
'35-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|def</div>',
'35-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0de|f</div>',
'35-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0d|ef</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0def|</div>',
'35-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0de|f</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0d|ef</div>',
'35-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0def|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0def|</div>',
'35-7 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
'36-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
'36-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
'36-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
'36-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
'36-7 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
'36-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
'36-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
'36-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
'36-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
'36-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
'36-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
'36-7 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
'37-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
'37-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
'37-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
'37-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
'37-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
'37-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
'37-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
'37-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
'37-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
'37-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
'37-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
'37-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
'37-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
'37-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
'38-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
'38-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
'38-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
'38-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
'38-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
'38-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
'38-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
'38-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
'38-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
'38-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
'39-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
'39-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
'39-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
'39-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
'39-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
'39-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
'39-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
'39-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
'39-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
'39-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
'39-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
'39-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
'39-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
'39-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
'39-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
'39-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
'40-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
'40-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
'40-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
'40-11 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
'40-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
'40-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
'40-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
'40-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
'40-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
'40-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
'40-11 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">|abc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">|abc \n def</div>',
'41-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">a|bc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">|abc \n def</div>',
'41-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">ab|c<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">a|bc \n def</div>',
'41-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc|<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">ab|c \n def</div>',
'41-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->|\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">ab|c \n def</div>',
'41-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n|<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc| \n def</div>',
'41-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->|def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc| \n def</div>',
'41-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->d|ef</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n |def</div>',
'41-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->de|f</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n d|ef</div>',
'41-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->def|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n de|f</div>',
'41-9 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">|abc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">ab|c \n def</div>',
'41-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">a|bc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc| \n def</div>',
'41-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">ab|c<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">a|bc \n def</div>',
'41-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc|<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n |def</div>',
'41-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->|\n<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n |def</div>',
'41-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n|<!-- -->def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n de|f</div>',
'41-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->|def</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n de|f</div>',
'41-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->d|ef</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n def|</div>',
'41-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->de|f</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n d|ef</div>',
'41-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->def|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n def|</div>',
'41-9 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">|\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">|\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0|\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1|\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1|\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">|\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2|<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0|\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->|\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0|\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n|<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4|\u05D5</div>',
'42-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3|\u05D4\u05D5</div>',
'42-9 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">|\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0|\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0|\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1|\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1|\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2|<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->|\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n|<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3|\u05D4\u05D5</div>',
'42-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3|\u05D4\u05D5</div>',
'42-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4|\u05D5</div>',
'42-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5|</div>',
'42-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5|</div>',
'42-9 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-0 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-1 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-2 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-3 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-4 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-5 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
'43-6 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
'43-7 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
'43-8 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
'43-9 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
'43-10 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
'43-11 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
'43-12 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
'43-13 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-14 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-15 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-16 ltr left character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-17 ltr left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-0 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-1 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-2 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-3 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-4 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-5 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
'43-6 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
'43-7 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
'43-8 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
'43-9 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
'43-10 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
'43-11 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
'43-12 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
'43-13 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
'43-14 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-15 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
'43-16 rtl left character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
selection => selection.modify('move', 'left', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
'43-17 rtl left character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
'31-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>|c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
'31-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
'31-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
'31-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
'31-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
'31-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
'31-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
'31-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
'31-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
'31-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab|<span>c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>|c\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|ab<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|b<span>c\u05D0\u05D1\u05D2def</span></div>',
'31-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c|\u05D0\u05D1\u05D2def</span></div>',
'31-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0|\u05D1\u05D2def</span></div>',
'31-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1|\u05D2def</span></div>',
'31-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
'31-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2|def</span></div>',
'31-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
'31-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab<span>c\u05D0\u05D1\u05D2d|ef</span></div>',
'31-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
'32-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>|\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
'32-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
'32-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
'32-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
'32-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
'32-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
'32-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
'32-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
'32-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>|\u05D2abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|<span>\u05D2abc\u05D3\u05D4\u05D5</span></div>',
'32-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
'32-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2|abc\u05D3\u05D4\u05D5</span></div>',
'32-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2a|bc\u05D3\u05D4\u05D5</span></div>',
'32-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc|\u05D3\u05D4\u05D5</span></div>',
'32-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3|\u05D4\u05D5</span></div>',
'32-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
'32-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1<span>\u05D2abc\u05D3\u05D4|\u05D5</span></div>',
'32-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
'33-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
'33-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
'33-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
'33-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
'33-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
'33-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
'33-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
'33-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
'33-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
'33-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
'33-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
'33-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab|c<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>|\u05D0\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|bc<span>\u05D0\u05D1\u05D2def</span></div>',
'33-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc|<span>\u05D0\u05D1\u05D2def</span></div>',
'33-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0|\u05D1\u05D2def</span></div>',
'33-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1|\u05D2def</span></div>',
'33-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
'33-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2|def</span></div>',
'33-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
'33-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc<span>\u05D0\u05D1\u05D2d|ef</span></div>',
'33-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
'34-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
'34-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
'34-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
'34-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
'34-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
'34-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
'34-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
'34-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
'34-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>|abc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
'34-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>ab|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|<span>abc\u05D3\u05D4\u05D5</span></div>',
'34-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>a|bc\u05D3\u05D4\u05D5</span></div>',
'34-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc|\u05D3\u05D4\u05D5</span></div>',
'34-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3|\u05D4\u05D5</span></div>',
'34-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
'34-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2<span>abc\u05D3\u05D4|\u05D5</span></div>',
'34-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0def</div>',
'35-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0def</div>',
'35-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0def</div>',
'35-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|def</div>',
'35-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0d|ef</div>',
'35-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0d|ef</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0de|f</div>',
'35-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0de|f</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0def|</div>',
'35-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0def|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0def|</div>',
'35-7 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0def</div>',
'35-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0def</div>',
'35-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0def</div>',
'35-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0def</div>',
'35-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0def</div>',
'35-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0d|ef</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0de|f</div>',
'35-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0de|f</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|def</div>',
'35-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0def|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0d|ef</div>',
'35-7 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
'36-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
'36-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
'36-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
'36-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
'36-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
'36-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
'36-7 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a\u05D3\u05D4\u05D5</div>',
'36-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a\u05D3\u05D4\u05D5</div>',
'36-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a\u05D3\u05D4\u05D5</div>',
'36-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|\u05D3\u05D4\u05D5</div>',
'36-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3|\u05D4\u05D5</div>',
'36-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a\u05D3\u05D4|\u05D5</div>',
'36-7 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
'37-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
'37-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
'37-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
'37-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
'37-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
'37-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
'37-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
'37-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
'37-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0\u05D1\u05D2<span>def</span></div>',
'37-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0\u05D1\u05D2<span>def</span></div>',
'37-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|\u05D1\u05D2<span>def</span></div>',
'37-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
'37-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1|\u05D2<span>def</span></div>',
'37-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
'37-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2|<span>def</span></div>',
'37-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0\u05D1\u05D2<span>d|ef</span></div>',
'37-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
'38-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
'38-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
'38-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
'38-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
'38-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
'38-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
'38-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2ab|c<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|abc<span>\u05D3\u05D4\u05D5</span></div>',
'38-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
'38-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|bc<span>\u05D3\u05D4\u05D5</span></div>',
'38-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc|<span>\u05D3\u05D4\u05D5</span></div>',
'38-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3|\u05D4\u05D5</span></div>',
'38-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2abc<span>\u05D3\u05D4|\u05D5</span></div>',
'38-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
'39-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
'39-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
'39-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
'39-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
'39-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
'39-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
'39-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
'39-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
'39-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
'39-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
'39-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">ab|c\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|abc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">a|bc\u05D0<span>\u05D1\u05D2def</span></div>',
'39-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
'39-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>|\u05D1\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc|\u05D0<span>\u05D1\u05D2def</span></div>',
'39-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0|<span>\u05D1\u05D2def</span></div>',
'39-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1|\u05D2def</span></div>',
'39-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
'39-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2|def</span></div>',
'39-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
'39-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">abc\u05D0<span>\u05D1\u05D2d|ef</span></div>',
'39-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
'40-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
'40-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
'40-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
'40-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
'40-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
'40-11 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0|\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1|\u05D2a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>|bc\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
'40-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>b|c\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2|a<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a|<span>bc\u05D3\u05D4\u05D5</span></div>',
'40-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc|\u05D3\u05D4\u05D5</span></div>',
'40-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3|\u05D4\u05D5</span></div>',
'40-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
'40-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4\u05D5</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">\u05D0\u05D1\u05D2a<span>bc\u05D3\u05D4|\u05D5</span></div>',
'40-11 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">|abc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">a|bc \n def</div>',
'41-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">a|bc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">ab|c \n def</div>',
'41-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">ab|c<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc| \n def</div>',
'41-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc|<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n |def</div>',
'41-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->|\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n |def</div>',
'41-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n|<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n d|ef</div>',
'41-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->|def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n d|ef</div>',
'41-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->d|ef</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n de|f</div>',
'41-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->de|f</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n def|</div>',
'41-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">abc<!-- -->\n<!-- -->def|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">abc \n def|</div>',
'41-9 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">|abc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">|abc \n def</div>',
'41-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">a|bc<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">ab|c \n def</div>',
'41-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">ab|c<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">|abc \n def</div>',
'41-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc|<!-- -->\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">a|bc \n def</div>',
'41-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->|\n<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">a|bc \n def</div>',
'41-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n|<!-- -->def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc| \n def</div>',
'41-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->|def</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc| \n def</div>',
'41-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->d|ef</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n de|f</div>',
'41-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->de|f</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n |def</div>',
'41-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">abc<!-- -->\n<!-- -->def|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">abc \n d|ef</div>',
'41-9 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">|\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1|\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0|\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1|\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0|\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2|<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->|\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n|<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4|\u05D5</div>',
'42-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4|\u05D5</div>',
'42-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5|</div>',
'42-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3|\u05D4\u05D5</div>',
'42-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5|</div>',
'42-9 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">|\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">|\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0|\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">|\u05D0\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1|\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0|\u05D1\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2|<!-- -->\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1|\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->|\n<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1|\u05D2 \n \u05D3\u05D4\u05D5</div>',
'42-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n|<!-- -->\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->|\u05D3\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2| \n \u05D3\u05D4\u05D5</div>',
'42-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3|\u05D4\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n |\u05D3\u05D4\u05D5</div>',
'42-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4|\u05D5</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3|\u05D4\u05D5</div>',
'42-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2<!-- -->\n<!-- -->\u05D3\u05D4\u05D5|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl" style="white-space: pre;">\u05D0\u05D1\u05D2 \n \u05D3\u05D4|\u05D5</div>',
'42-9 rtl right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="ltr">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-0 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-1 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-2 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
'43-3 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-4 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-5 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-6 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
'43-7 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
'43-8 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
'43-9 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-10 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
'43-11 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
'43-12 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-13 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
'43-14 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
'43-15 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
'43-16 ltr right character');
selection_test(
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="ltr"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
'43-17 ltr right character');
</script>
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
selection_test(
'<div contenteditable dir="rtl">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl">|<span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-0 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-1 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-2 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">ab|c\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">|abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-3 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">a|bc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-4 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc|\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-5 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7|\u05E7\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-6 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7|\u05E7123\u05E0\u05E0\u05E0def</span></div>',
'43-7 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
'43-8 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E712|3\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7|123\u05E0\u05E0\u05E0def</span></div>',
'43-9 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E71|23\u05E0\u05E0\u05E0def</span></div>',
'43-10 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123|\u05E0\u05E0\u05E0def</span></div>',
'43-11 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0|\u05E0\u05E0def</span></div>',
'43-12 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0|\u05E0def</span></div>',
'43-13 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
'43-14 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0de|f</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0|def</span></div>',
'43-15 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def|</span></div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-16 rtl right character');
selection_test(
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0def</span>|</div>',
selection => selection.modify('move', 'right', 'character'),
'<div contenteditable dir="rtl"><span dir="rtl">abc\u05E7\u05E7\u05E7123\u05E0\u05E0\u05E0d|ef</span></div>',
'43-17 rtl right character');
</script>
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