haikuwebkit/LayoutTests/fast/text/find-russian.html

104 lines
4.2 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta charset="utf-8">
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Tests find for strings with Russian letters й and ё in them.");
function canFind(target, specimen)
{
getSelection().empty();
var textNode = document.createTextNode(specimen);
document.body.appendChild(textNode);
document.execCommand("FindString", false, target);
var result = getSelection().rangeCount != 0;
getSelection().empty();
document.body.removeChild(textNode);
return result;
}
var letterCyrillicI = String.fromCharCode(0x0418);
var letterCyrillicSmallI = String.fromCharCode(0x0438);
var letterCyrillicShortI = String.fromCharCode(0x0419);
var letterCyrillicSmallShortI = String.fromCharCode(0x0439);
var letterCyrillicE = String.fromCharCode(0x0415);
var letterCyrillicSmallE = String.fromCharCode(0x0435);
var letterCyrillicYO = String.fromCharCode(0x0401);
var letterCyrillicSmallYO = String.fromCharCode(0x0451);
var combiningDiaeresis = String.fromCharCode(0x0308);
var combiningBreve = String.fromCharCode(0x0306);
var decomposedCyrillicShortI = letterCyrillicI + combiningBreve;
var decomposedCyrillicSmallShortI = letterCyrillicSmallI + combiningBreve;
var decomposedCyrillicYO = letterCyrillicE + combiningDiaeresis;
var decomposedCyrillicSmallYO = letterCyrillicSmallE + combiningDiaeresis;
debug('Exact matches first as a baseline');
debug('');
shouldBe('canFind(decomposedCyrillicShortI, decomposedCyrillicShortI)', 'true');
shouldBe('canFind(decomposedCyrillicSmallShortI, decomposedCyrillicSmallShortI)', 'true');
shouldBe('canFind(letterCyrillicShortI, letterCyrillicShortI)', 'true');
shouldBe('canFind(letterCyrillicSmallShortI, letterCyrillicSmallShortI)', 'true');
shouldBe('canFind("й", "йод")', 'true');
shouldBe('canFind("ё", "мумиё")', 'true');
debug('');
debug('Composed and decomposed forms: Must be treated as equal');
debug('');
shouldBe('canFind(decomposedCyrillicYO, decomposedCyrillicYO)', 'true');
shouldBe('canFind(decomposedCyrillicSmallYO, decomposedCyrillicSmallYO)', 'true');
shouldBe('canFind(letterCyrillicShortI, decomposedCyrillicShortI)', 'true');
shouldBe('canFind(letterCyrillicSmallShortI, decomposedCyrillicSmallShortI)', 'true');
shouldBe('canFind(letterCyrillicYO, decomposedCyrillicYO)', 'true');
shouldBe('canFind(letterCyrillicSmallYO, decomposedCyrillicSmallYO)', 'true');
shouldBe('canFind(decomposedCyrillicShortI, letterCyrillicShortI)', 'true');
shouldBe('canFind(decomposedCyrillicSmallShortI, letterCyrillicSmallShortI)', 'true');
shouldBe('canFind(decomposedCyrillicYO, letterCyrillicYO)', 'true');
shouldBe('canFind(decomposedCyrillicSmallYO, letterCyrillicSmallYO)', 'true');
debug('');
debug('Small and capital letters: Must be treated as equal');
debug('');
shouldBe('canFind(letterCyrillicSmallI, letterCyrillicI)', 'true');
shouldBe('canFind(letterCyrillicSmallYO, letterCyrillicYO)', 'true');
shouldBe('canFind(letterCyrillicI, letterCyrillicSmallI)', 'true');
shouldBe('canFind(letterCyrillicYO, letterCyrillicSmallYO)', 'true');
shouldBe('canFind(decomposedCyrillicSmallShortI, letterCyrillicI)', 'true');
shouldBe('canFind(decomposedCyrillicSmallYO, letterCyrillicYO)', 'true');
shouldBe('canFind(decomposedCyrillicShortI, letterCyrillicSmallI)', 'true');
shouldBe('canFind(decomposedCyrillicYO, letterCyrillicSmallYO)', 'true');
shouldBe('canFind(letterCyrillicSmallI + letterCyrillicSmallYO, letterCyrillicSmallI + letterCyrillicYO)', 'true');
shouldBe('canFind("й", "Йод")', 'true');
shouldBe('canFind("ё", "МУМИЁ")', 'true');
shouldBe('canFind("Й", "йод")', 'true');
shouldBe('canFind("Ё", "мумиё")', 'true');
debug('');
debug('Е and Ё: Must be treated as equal');
debug('');
shouldBe('canFind("мумие", "мумиё")', 'true');
shouldBe('canFind("МУМИЕ", "МУМИЁ")', 'true');
shouldBe('canFind("мумиё", "мумие")', 'true');
shouldBe('canFind("МУМИЁ", "МУМИЕ")', 'true');
debug('');
debug('Й and и: Must *not* be treated as equal');
debug('');
shouldBe('canFind("зайка", "заика")', 'false');
shouldBe('canFind("заика", "зайка")', 'false');
debug('');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>