blob: deafe73d3875fefdcbd6a8c3ec745a52ec73de4c [file] [log] [blame]
<!DOCTYPE HTML>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
// Thai word selection misbehaves for the last sentence in the document.
// rdar://problem/6764359
const isMac = navigator.platform.indexOf('Mac') === 0;
const kSegment0 = '\u0E04\u0E27\u0E32\u0E21';
const kSegment1 = '\u0E2B\u0E21\u0E32\u0E22';
const kSegment2 = '\u0E02\u0E2D\u0E07';
const kSegment3 = '\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D\u0E1E\u0E34\u0E21\u0E1E\u0E4C';
const kSegment4 = '\u0E41\u0E25\u0E30';
const kSegment5 = '\u0E01\u0E49\u0E32\u0E27';
const kSegment6 = `\u0E43\u0E2B\u0E21\u0E48${kSegment2}`;
const kSegment7 = '\u0E2D\u0E34\u0E19\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E44\u0E17\u0E22';
const kSentence0 = `${kSegment0}${kSegment1}${kSegment2}${kSegment3}`;
const kSentence1 = `${kSegment4}${kSegment5}${kSegment6}${kSegment7}`;
// End with period
selection_test(
`<div conntenteditable>|${kSentence0} ${kSentence1}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}|${kSegment1}${kSegment2}${kSegment3} ${kSentence1}.</div>`,
'1 Move forward word with period');
selection_test(
`<div conntenteditable>${kSegment0}|${kSegment1}${kSegment2}${kSegment3} ${kSentence1}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}${kSegment1}|${kSegment2}${kSegment3} ${kSentence1}.</div>`,
'2 Move forward word with period');
selection_test(
`<div conntenteditable>${kSegment0}${kSegment1}|${kSegment2}${kSegment3} ${kSentence1}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}${kSegment1}${kSegment2}|${kSegment3} ${kSentence1}.</div>`,
'3 Move forward word with period');
selection_test(
`<div conntenteditable>${kSegment0}${kSegment1}${kSegment2}|${kSegment3} ${kSentence1}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
isMac
? `<div conntenteditable>${kSentence0} ${kSegment4}|${kSegment5}${kSegment6}${kSegment7}.</div>`
: `<div conntenteditable>${kSentence0} |${kSegment4}${kSegment5}${kSegment6}${kSegment7}.</div>`,
'4 Move forward word with period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}|${kSegment5}${kSegment6}${kSegment7}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}|${kSegment6}${kSegment7}.</div>`,
'5 Move forward word with period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}|${kSegment6}${kSegment7}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}${kSegment6}|${kSegment7}.</div>`,
'6 Move forward word with period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}${kSegment6}|${kSegment7}.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSentence1}|.</div>`,
'7 Move forward word with period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSentence1}|.</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSentence1}.|</div>`,
'8 Move forward word with period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSentence1}.|</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSentence1}.|</div>`,
'9 Move forward word with period');
// End withoutout period
selection_test(
`<div conntenteditable>|${kSentence0} ${kSentence1}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}|${kSegment1}${kSegment2}${kSegment3} ${kSentence1}</div>`,
'1 Move forward word without period');
selection_test(
`<div conntenteditable>${kSegment0}|${kSegment1}${kSegment2}${kSegment3} ${kSentence1}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}${kSegment1}|${kSegment2}${kSegment3} ${kSentence1}</div>`,
'2 Move forward word without period');
selection_test(
`<div conntenteditable>${kSegment0}${kSegment1}|${kSegment2}${kSegment3} ${kSentence1}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSegment0}${kSegment1}${kSegment2}|${kSegment3} ${kSentence1}</div>`,
'3 Move forward word without period');
selection_test(
`<div conntenteditable>${kSegment0}${kSegment1}${kSegment2}|${kSegment3} ${kSentence1}</div>`,
selection => selection.modify('move', 'forward', 'word'),
isMac
? `<div conntenteditable>${kSentence0} ${kSegment4}|${kSegment5}${kSegment6}${kSegment7}</div>`
: `<div conntenteditable>${kSentence0} |${kSegment4}${kSegment5}${kSegment6}${kSegment7}</div>`,
'4 Move forward word without period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}|${kSegment5}${kSegment6}${kSegment7}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}|${kSegment6}${kSegment7}</div>`,
'5 Move forward word without period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}|${kSegment6}${kSegment7}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}${kSegment6}|${kSegment7}</div>`,
'6 Move forward word without period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSegment4}${kSegment5}${kSegment6}|${kSegment7}</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSentence1}|</div>`,
'7 Move forward word without period');
selection_test(
`<div conntenteditable>${kSentence0} ${kSentence1}|</div>`,
selection => selection.modify('move', 'forward', 'word'),
`<div conntenteditable>${kSentence0} ${kSentence1}|</div>`,
'8 Move forward word without period');
</script>