tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / fast / text / script-tests / find-kana.js
1 description("Tests find for strings with kana letters in them.");
2
3 function canFind(target, specimen)
4 {
5     getSelection().empty();
6     var textNode = document.createTextNode(specimen);
7     document.body.appendChild(textNode);
8     document.execCommand("FindString", false, target);
9     var result = getSelection().rangeCount != 0;
10     getSelection().empty();
11     document.body.removeChild(textNode);
12     return result;
13 }
14
15 var combiningGraveAccent = String.fromCharCode(0x0300);
16 var combiningKatakanaHiraganaSemiVoicedSoundMark = String.fromCharCode(0x309A);
17 var combiningKatakanaHiraganaVoicedSoundMark = String.fromCharCode(0x3099);
18
19 var halfwidthKatakanaLetterA = String.fromCharCode(0xFF71);
20 var halfwidthKatakanaLetterHa = String.fromCharCode(0xFF76);
21 var halfwidthKatakanaLetterKa = String.fromCharCode(0xFF76);
22 var halfwidthKatakanaLetterSmallA = String.fromCharCode(0xFF67);
23 var hiraganaLetterA = String.fromCharCode(0x3042);
24 var hiraganaLetterBa = String.fromCharCode(0x3070);
25 var hiraganaLetterGa = String.fromCharCode(0x304C);
26 var hiraganaLetterHa = String.fromCharCode(0x306F);
27 var hiraganaLetterKa = String.fromCharCode(0x304B);
28 var hiraganaLetterPa = String.fromCharCode(0x3071);
29 var hiraganaLetterSmallA = String.fromCharCode(0x3041);
30 var katakanaLetterA = String.fromCharCode(0x30A2);
31 var katakanaLetterGa = String.fromCharCode(0x30AC);
32 var katakanaLetterKa = String.fromCharCode(0x30AB);
33 var katakanaLetterSmallA = String.fromCharCode(0x30A1);
34 var latinCapitalLetterAWithGrave = String.fromCharCode(0x00C0);
35
36 var decomposedHalfwidthKatakanaLetterBa = halfwidthKatakanaLetterHa + combiningKatakanaHiraganaVoicedSoundMark;
37 var decomposedHalfwidthKatakanaLetterPa = halfwidthKatakanaLetterHa + combiningKatakanaHiraganaSemiVoicedSoundMark;
38 var decomposedHiraganaLetterBa = hiraganaLetterHa + combiningKatakanaHiraganaVoicedSoundMark;
39 var decomposedHiraganaLetterGa = hiraganaLetterKa + combiningKatakanaHiraganaVoicedSoundMark;
40 var decomposedHiraganaLetterPa = hiraganaLetterHa + combiningKatakanaHiraganaSemiVoicedSoundMark;
41 var decomposedKatakanaLetterGa = katakanaLetterKa + combiningKatakanaHiraganaVoicedSoundMark;
42 var decomposedLatinCapitalLetterAWithGrave = 'A' + combiningGraveAccent;
43
44 debug('Exact matches first as a baseline');
45 debug('');
46
47 shouldBe('canFind(decomposedHalfwidthKatakanaLetterBa, decomposedHalfwidthKatakanaLetterBa)', 'true');
48 shouldBe('canFind(decomposedHalfwidthKatakanaLetterPa, decomposedHalfwidthKatakanaLetterPa)', 'true');
49 shouldBe('canFind(decomposedHiraganaLetterBa, decomposedHiraganaLetterBa)', 'true');
50 shouldBe('canFind(decomposedHiraganaLetterGa, decomposedHiraganaLetterGa)', 'true');
51 shouldBe('canFind(decomposedHiraganaLetterPa, decomposedHiraganaLetterPa)', 'true');
52 shouldBe('canFind(decomposedKatakanaLetterGa, decomposedKatakanaLetterGa)', 'true');
53 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave, decomposedLatinCapitalLetterAWithGrave)', 'true');
54 shouldBe('canFind(halfwidthKatakanaLetterA, halfwidthKatakanaLetterA)', 'true');
55 shouldBe('canFind(halfwidthKatakanaLetterHa, halfwidthKatakanaLetterHa)', 'true');
56 shouldBe('canFind(halfwidthKatakanaLetterKa, halfwidthKatakanaLetterKa)', 'true');
57 shouldBe('canFind(halfwidthKatakanaLetterSmallA, halfwidthKatakanaLetterSmallA)', 'true');
58 shouldBe('canFind(hiraganaLetterA, hiraganaLetterA)', 'true');
59 shouldBe('canFind(hiraganaLetterBa, hiraganaLetterBa)', 'true');
60 shouldBe('canFind(hiraganaLetterGa, hiraganaLetterGa)', 'true');
61 shouldBe('canFind(hiraganaLetterHa, hiraganaLetterHa)', 'true');
62 shouldBe('canFind(hiraganaLetterKa, hiraganaLetterKa)', 'true');
63 shouldBe('canFind(hiraganaLetterPa, hiraganaLetterPa)', 'true');
64 shouldBe('canFind(hiraganaLetterSmallA, hiraganaLetterSmallA)', 'true');
65 shouldBe('canFind(katakanaLetterA, katakanaLetterA)', 'true');
66 shouldBe('canFind(katakanaLetterGa, katakanaLetterGa)', 'true');
67 shouldBe('canFind(katakanaLetterKa, katakanaLetterKa)', 'true');
68 shouldBe('canFind(katakanaLetterSmallA, katakanaLetterSmallA)', 'true');
69 shouldBe('canFind(latinCapitalLetterAWithGrave, latinCapitalLetterAWithGrave)', 'true');
70
71 debug('');
72 debug('Hiragana, katakana, and half width katakana: Must be treated as equal');
73 debug('');
74
75 shouldBe('canFind(decomposedHiraganaLetterGa, decomposedKatakanaLetterGa)', 'true');
76 shouldBe('canFind(decomposedKatakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
77 shouldBe('canFind(hiraganaLetterA, halfwidthKatakanaLetterA)', 'true');
78 shouldBe('canFind(hiraganaLetterA, katakanaLetterA)', 'true');
79 shouldBe('canFind(katakanaLetterSmallA, hiraganaLetterSmallA)', 'true');
80
81 debug('');
82 debug('Composed and decomposed forms: Must be treated as equal');
83 debug('');
84
85 shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterBa)', 'true');
86 shouldBe('canFind(decomposedHiraganaLetterGa, decomposedKatakanaLetterGa)', 'true');
87 shouldBe('canFind(decomposedHiraganaLetterGa, hiraganaLetterGa)', 'true');
88 shouldBe('canFind(decomposedHiraganaLetterGa, katakanaLetterGa)', 'true');
89 shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterPa)', 'true');
90 shouldBe('canFind(decomposedKatakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
91 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave, latinCapitalLetterAWithGrave)', 'true');
92 shouldBe('canFind(hiraganaLetterBa, decomposedHiraganaLetterBa)', 'true');
93 shouldBe('canFind(hiraganaLetterGa, decomposedHiraganaLetterGa)', 'true');
94 shouldBe('canFind(hiraganaLetterPa, decomposedHiraganaLetterPa)', 'true');
95 shouldBe('canFind(katakanaLetterGa, decomposedHiraganaLetterGa)', 'true');
96 shouldBe('canFind(latinCapitalLetterAWithGrave, decomposedLatinCapitalLetterAWithGrave)', 'true');
97
98 debug('');
99 debug('Small and non-small kana letters: Must *not* be treated as equal');
100 debug('');
101
102 shouldBe('canFind(halfwidthKatakanaLetterA, hiraganaLetterSmallA)', 'false');
103 shouldBe('canFind(halfwidthKatakanaLetterSmallA, halfwidthKatakanaLetterA)', 'false');
104 shouldBe('canFind(hiraganaLetterA, hiraganaLetterSmallA)', 'false');
105 shouldBe('canFind(hiraganaLetterSmallA, katakanaLetterA)', 'false');
106 shouldBe('canFind(katakanaLetterA, halfwidthKatakanaLetterSmallA)', 'false');
107 shouldBe('canFind(katakanaLetterSmallA, katakanaLetterA)', 'false');
108
109 debug('');
110 debug('Kana letters where the only difference is in voiced sound marks: Must *not* be treated as equal');
111 debug('');
112
113 shouldBe('canFind(decomposedHalfwidthKatakanaLetterBa, halfwidthKatakanaLetterHa)', 'false');
114 shouldBe('canFind(decomposedHalfwidthKatakanaLetterPa, halfwidthKatakanaLetterHa)', 'false');
115 shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterHa)', 'false');
116 shouldBe('canFind(decomposedHiraganaLetterBa, hiraganaLetterPa)', 'false');
117 shouldBe('canFind(decomposedHiraganaLetterGa, halfwidthKatakanaLetterKa)', 'false');
118 shouldBe('canFind(decomposedHiraganaLetterGa, hiraganaLetterKa)', 'false');
119 shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterBa)', 'false');
120 shouldBe('canFind(decomposedHiraganaLetterPa, hiraganaLetterHa)', 'false');
121 shouldBe('canFind(decomposedKatakanaLetterGa, halfwidthKatakanaLetterKa)', 'false');
122 shouldBe('canFind(decomposedKatakanaLetterGa, hiraganaLetterKa)', 'false');
123 shouldBe('canFind(halfwidthKatakanaLetterHa, decomposedHalfwidthKatakanaLetterBa)', 'false');
124 shouldBe('canFind(halfwidthKatakanaLetterHa, decomposedHalfwidthKatakanaLetterPa)', 'false');
125 shouldBe('canFind(halfwidthKatakanaLetterKa, decomposedHiraganaLetterGa)', 'false');
126 shouldBe('canFind(halfwidthKatakanaLetterKa, decomposedKatakanaLetterGa)', 'false');
127 shouldBe('canFind(hiraganaLetterBa, decomposedHiraganaLetterPa)', 'false');
128 shouldBe('canFind(hiraganaLetterBa, hiraganaLetterHa)', 'false');
129 shouldBe('canFind(hiraganaLetterBa, hiraganaLetterPa)', 'false');
130 shouldBe('canFind(hiraganaLetterGa, hiraganaLetterKa)', 'false');
131 shouldBe('canFind(hiraganaLetterHa, decomposedHiraganaLetterBa)', 'false');
132 shouldBe('canFind(hiraganaLetterHa, decomposedHiraganaLetterPa)', 'false');
133 shouldBe('canFind(hiraganaLetterHa, hiraganaLetterBa)', 'false');
134 shouldBe('canFind(hiraganaLetterHa, hiraganaLetterPa)', 'false');
135 shouldBe('canFind(hiraganaLetterKa, decomposedHiraganaLetterGa)', 'false');
136 shouldBe('canFind(hiraganaLetterKa, decomposedKatakanaLetterGa)', 'false');
137 shouldBe('canFind(hiraganaLetterKa, hiraganaLetterGa)', 'false');
138 shouldBe('canFind(hiraganaLetterPa, decomposedHiraganaLetterBa)', 'false');
139 shouldBe('canFind(hiraganaLetterPa, hiraganaLetterBa)', 'false');
140 shouldBe('canFind(hiraganaLetterPa, hiraganaLetterHa)', 'false');
141
142 debug('');
143 debug('Composed/decomposed form differences before kana characters must have no effect');
144 debug('');
145
146 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterA, latinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
147 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA, latinCapitalLetterAWithGrave + halfwidthKatakanaLetterA)', 'false');
148 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterA, latinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
149 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa, latinCapitalLetterAWithGrave + hiraganaLetterGa)', 'true');
150 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa, latinCapitalLetterAWithGrave + hiraganaLetterKa)', 'false');
151 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterKa, latinCapitalLetterAWithGrave + hiraganaLetterGa)', 'false');
152 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA, latinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
153 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + katakanaLetterA, latinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA)', 'false');
154 shouldBe('canFind(decomposedLatinCapitalLetterAWithGrave + katakanaLetterSmallA, latinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
155 shouldBe('canFind(latinCapitalLetterAWithGrave + halfwidthKatakanaLetterA, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
156 shouldBe('canFind(latinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterA)', 'false');
157 shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterA, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterSmallA)', 'false');
158 shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterGa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa)', 'true');
159 shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterGa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterKa)', 'false');
160 shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterKa, decomposedLatinCapitalLetterAWithGrave + hiraganaLetterGa)', 'false');
161 shouldBe('canFind(latinCapitalLetterAWithGrave + hiraganaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
162 shouldBe('canFind(latinCapitalLetterAWithGrave + katakanaLetterA, decomposedLatinCapitalLetterAWithGrave + halfwidthKatakanaLetterSmallA)', 'false');
163 shouldBe('canFind(latinCapitalLetterAWithGrave + katakanaLetterSmallA, decomposedLatinCapitalLetterAWithGrave + katakanaLetterA)', 'false');
164
165 debug('');