| <!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> |