<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
const isMac = navigator.platform.indexOf('Mac') === 0;
const kBehaviors = window.internals ? ['mac', 'win'] : isMac ? ['mac'] : ['win'];
for (const behavior of kBehaviors) {
  if (window.internals) {
    internals.settings.setEditingBehavior(behavior);
    internals.settings.setSelectTrailingWhitespaceEnabled(behavior !== 'mac');
  }

selection_test(
  '<div contenteditable dir="ltr">|car means \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">|car means \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-0 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">c|ar means \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">|c^ar means \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-1 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">ca|r means \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">|ca^r means \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-2 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car| means \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">|car^ means \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-3 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car |means \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">|car ^means \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-4 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car m|eans \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |m^eans \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-5 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car me|ans \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |me^ans \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-6 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car mea|ns \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |mea^ns \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-7 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car mean|s \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |mean^s \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-8 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car means| \u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |means^ \u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-9 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car means |\u05D0\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car |means ^\u05D0\u05D1\u05D2.</div>',
  `${behavior} 16-10 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car means \u05D0|\u05D1\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car means |\u05D0^\u05D1\u05D2.</div>',
  `${behavior} 16-11 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car means \u05D0\u05D1|\u05D2.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car means |\u05D0\u05D1^\u05D2.</div>',
  `${behavior} 16-12 ltr left word`);

selection_test(
  '<div contenteditable dir="ltr">car means \u05D0\u05D1\u05D2|.</div>',
  selection => selection.modify('extend', 'left', 'word'),
  '<div contenteditable dir="ltr">car means |\u05D0\u05D1\u05D2^.</div>',
  `${behavior} 16-13 ltr left word`);
}
</script>
