<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Tests find for strings with kana letters 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 combiningGraveAccent = String.fromCharCode(0x0300);
var combiningKatakanaHiraganaSemiVoicedSoundMark = String.fromCharCode(0x309A);
var combiningKatakanaHiraganaVoicedSoundMark = String.fromCharCode(0x3099);

var halfwidthKatakanaLetterA = String.fromCharCode(0xFF71);
var halfwidthKatakanaLetterHa = String.fromCharCode(0xFF76);
var halfwidthKatakanaLetterKa = String.fromCharCode(0xFF76);
var halfwidthKatakanaLetterSmallA = String.fromCharCode(0xFF67);
var hiraganaLetterA = String.fromCharCode(0x3042);
var hiraganaLetterBa = String.fromCharCode(0x3070);
var hiraganaLetterGa = String.fromCharCode(0x304C);
var hiraganaLetterHa = String.fromCharCode(0x306F);
var hiraganaLetterKa = String.fromCharCode(0x304B);
var hiraganaLetterPa = String.fromCharCode(0x3071);
var hiraganaLetterSmallA = String.fromCharCode(0x3041);
var katakanaLetterA = String.fromCharCode(0x30A2);
var katakanaLetterGa = String.fromCharCode(0x30AC);
var katakanaLetterKa = String.fromCharCode(0x30AB);
var katakanaLetterSmallA = String.fromCharCode(0x30A1);
var latinCapitalLetterAWithGrave = String.fromCharCode(0x00C0);

var decomposedHalfwidthKatakanaLetterBa = halfwidthKatakanaLetterHa + combiningKatakanaHiraganaVoicedSoundMark;
var decomposedHalfwidthKatakanaLetterPa = halfwidthKatakanaLetterHa + combiningKatakanaHiraganaSemiVoicedSoundMark;
var decomposedHiraganaLetterBa = hiraganaLetterHa + combiningKatakanaHiraganaVoicedSoundMark;
var decomposedHiraganaLetterGa = hiraganaLetterKa + combiningKatakanaHiraganaVoicedSoundMark;
var decomposedHiraganaLetterPa = hiraganaLetterHa + combiningKatakanaHiraganaSemiVoicedSoundMark;
var decomposedKatakanaLetterGa = katakanaLetterKa + combiningKatakanaHiraganaVoicedSoundMark;
var decomposedLatinCapitalLetterAWithGrave = 'A' + combiningGraveAccent;

debug('Exact matches first as a baseline');
debug('');

shouldBe('canFind(decomposedHalfwidthKatakanaLetterBa, decomposedHalfwidthKatakanaLetterBa)', 'true');
shouldBe('canFind(decomposedHalfwidthKatakanaLetterPa, decomposedHalfwidthKatakanaLetterPa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterBa, decomposedHiraganaLetterBa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterGa, decomposedHiraganaLetterGa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterPa, decomposedHiraganaLetterPa)', 'true');
shouldBe('canFind(decomposedKatakanaLetterGa, decomposedKatakanaLetterGa)', 'true');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave, decomposedLatinCapitalLetterAWithGrave)', 'true');
shouldBe('canFind(halfwidthKatakanaLetterA, halfwidthKatakanaLetterA)', 'true');
shouldBe('canFind(halfwidthKatakanaLetterHa, halfwidthKatakanaLetterHa)', 'true');
shouldBe('canFind(halfwidthKatakanaLetterKa, halfwidthKatakanaLetterKa)', 'true');
shouldBe('canFind(halfwidthKatakanaLetterSmallA, halfwidthKatakanaLetterSmallA)', 'true');
shouldBe('canFind(hiraganaLetterA, hiraganaLetterA)', 'true');
shouldBe('canFind(hiraganaLetterBa, hiraganaLetterBa)', 'true');
shouldBe('canFind(hiraganaLetterGa, hiraganaLetterGa)', 'true');
shouldBe('canFind(hiraganaLetterHa, hiraganaLetterHa)', 'true');
shouldBe('canFind(hiraganaLetterKa, hiraganaLetterKa)', 'true');
shouldBe('canFind(hiraganaLetterPa, hiraganaLetterPa)', 'true');
shouldBe('canFind(hiraganaLetterSmallA, hiraganaLetterSmallA)', 'true');
shouldBe('canFind(katakanaLetterA, katakanaLetterA)', 'true');
shouldBe('canFind(katakanaLetterGa, katakanaLetterGa)', 'true');
shouldBe('canFind(katakanaLetterKa, katakanaLetterKa)', 'true');
shouldBe('canFind(katakanaLetterSmallA, katakanaLetterSmallA)', 'true');
shouldBe('canFind(latinCapitalLetterAWithGrave, latinCapitalLetterAWithGrave)', 'true');

debug('');
debug('Hiragana, katakana, and half width katakana: Must be treated as equal');
debug('');

shouldBe('canFind(decomposedHiraganaLetterGa, decomposedKatakanaLetterGa)', 'true');
shouldBe('canFind(decomposedKatakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
shouldBe('canFind(hiraganaLetterA, halfwidthKatakanaLetterA)', 'true');
shouldBe('canFind(hiraganaLetterA, katakanaLetterA)', 'true');
shouldBe('canFind(katakanaLetterSmallA, hiraganaLetterSmallA)', 'true');

debug('');
debug('Composed and decomposed forms: Must be treated as equal');
debug('');

shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterBa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterGa, decomposedKatakanaLetterGa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterGa, hiraganaLetterGa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterGa, katakanaLetterGa)', 'true');
shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterPa)', 'true');
shouldBe('canFind(decomposedKatakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave, latinCapitalLetterAWithGrave)', 'true');
shouldBe('canFind(hiraganaLetterBa, decomposedHiraganaLetterBa)', 'true');
shouldBe('canFind(hiraganaLetterGa, decomposedHiraganaLetterGa)', 'true');
shouldBe('canFind(hiraganaLetterPa, decomposedHiraganaLetterPa)', 'true');
shouldBe('canFind(katakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
shouldBe('canFind(latinCapitalLetterAWithGrave, decomposedLatinCapitalLetterAWithGrave)', 'true');

debug('');
debug('Small and non-small kana letters: Must *not* be treated as equal');
debug('');

shouldBe('canFind(halfwidthKatakanaLetterA, hiraganaLetterSmallA)', 'false');
shouldBe('canFind(halfwidthKatakanaLetterSmallA, halfwidthKatakanaLetterA)', 'false');
shouldBe('canFind(hiraganaLetterA, hiraganaLetterSmallA)', 'false');
shouldBe('canFind(hiraganaLetterSmallA, katakanaLetterA)', 'false');
shouldBe('canFind(katakanaLetterA, halfwidthKatakanaLetterSmallA)', 'false');
shouldBe('canFind(katakanaLetterSmallA, katakanaLetterA)', 'false');

debug('');
debug('Kana letters where the only difference is in voiced sound marks: Must *not* be treated as equal');
debug('');

shouldBe('canFind(decomposedHalfwidthKatakanaLetterBa, halfwidthKatakanaLetterHa)', 'false');
shouldBe('canFind(decomposedHalfwidthKatakanaLetterPa, halfwidthKatakanaLetterHa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterHa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterPa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterGa, halfwidthKatakanaLetterKa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterGa, hiraganaLetterKa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterBa)', 'false');
shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterHa)', 'false');
shouldBe('canFind(decomposedKatakanaLetterGa, halfwidthKatakanaLetterKa)', 'false');
shouldBe('canFind(decomposedKatakanaLetterGa, hiraganaLetterKa)', 'false');
shouldBe('canFind(halfwidthKatakanaLetterHa, decomposedHalfwidthKatakanaLetterBa)', 'false');
shouldBe('canFind(halfwidthKatakanaLetterHa, decomposedHalfwidthKatakanaLetterPa)', 'false');
shouldBe('canFind(halfwidthKatakanaLetterKa, decomposedHiraganaLetterGa)', 'false');
shouldBe('canFind(halfwidthKatakanaLetterKa, decomposedKatakanaLetterGa)', 'false');
shouldBe('canFind(hiraganaLetterBa, decomposedHiraganaLetterPa)', 'false');
shouldBe('canFind(hiraganaLetterBa, hiraganaLetterHa)', 'false');
shouldBe('canFind(hiraganaLetterBa, hiraganaLetterPa)', 'false');
shouldBe('canFind(hiraganaLetterGa, hiraganaLetterKa)', 'false');
shouldBe('canFind(hiraganaLetterHa, decomposedHiraganaLetterBa)', 'false');
shouldBe('canFind(hiraganaLetterHa, decomposedHiraganaLetterPa)', 'false');
shouldBe('canFind(hiraganaLetterHa, hiraganaLetterBa)', 'false');
shouldBe('canFind(hiraganaLetterHa, hiraganaLetterPa)', 'false');
shouldBe('canFind(hiraganaLetterKa, decomposedHiraganaLetterGa)', 'false');
shouldBe('canFind(hiraganaLetterKa, decomposedKatakanaLetterGa)', 'false');
shouldBe('canFind(hiraganaLetterKa, hiraganaLetterGa)', 'false');
shouldBe('canFind(hiraganaLetterPa, decomposedHiraganaLetterBa)', 'false');
shouldBe('canFind(hiraganaLetterPa, hiraganaLetterBa)', 'false');
shouldBe('canFind(hiraganaLetterPa, hiraganaLetterHa)', 'false');

debug('');
debug('Composed/decomposed form differences before kana characters must have no effect');
debug('');

shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterA, latinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA, latinCapitalLetterAWithGrave + halfwidthKatakanaLetterA)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterA, latinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa, latinCapitalLetterAWithGrave + hiraganaLetterGa)', 'true');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa, latinCapitalLetterAWithGrave + hiraganaLetterKa)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterKa, latinCapitalLetterAWithGrave + hiraganaLetterGa)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA, latinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + katakanaLetterA, latinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA)', 'false');
shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + katakanaLetterSmallA, latinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + halfwidthKatakanaLetterA, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterA, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterGa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa)', 'true');
shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterGa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterKa)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterKa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + katakanaLetterA, decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA)', 'false');
shouldBe('canFind(latinCapitalLetterAWithGrave + katakanaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + katakanaLetterA)', 'false');

debug('');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
