1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.inputmethod.latin;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.Suppress;
import android.util.Pair;
/*
* Relevant characters for this test :
* Spurs the need to reorder :
* U+1031 MYANMAR VOWEL SIGN E : ေ
* U+1004 U+103A U+1039 Kinzi. It's a compound character.
*
* List of consonants :
* U+1000 MYANMAR LETTER KA က
* U+1001 MYANMAR LETTER KHA ခ
* U+1002 MYANMAR LETTER GA ဂ
* U+1003 MYANMAR LETTER GHA ဃ
* U+1004 MYANMAR LETTER NGA င
* U+1005 MYANMAR LETTER CA စ
* U+1006 MYANMAR LETTER CHA ဆ
* U+1007 MYANMAR LETTER JA ဇ
* U+1008 MYANMAR LETTER JHA ဈ
* U+1009 MYANMAR LETTER NYA ဉ
* U+100A MYANMAR LETTER NNYA ည
* U+100B MYANMAR LETTER TTA ဋ
* U+100C MYANMAR LETTER TTHA ဌ
* U+100D MYANMAR LETTER DDA ဍ
* U+100E MYANMAR LETTER DDHA ဎ
* U+100F MYANMAR LETTER NNA ဏ
* U+1010 MYANMAR LETTER TA တ
* U+1011 MYANMAR LETTER THA ထ
* U+1012 MYANMAR LETTER DA ဒ
* U+1013 MYANMAR LETTER DHA ဓ
* U+1014 MYANMAR LETTER NA န
* U+1015 MYANMAR LETTER PA ပ
* U+1016 MYANMAR LETTER PHA ဖ
* U+1017 MYANMAR LETTER BA ဗ
* U+1018 MYANMAR LETTER BHA ဘ
* U+1019 MYANMAR LETTER MA မ
* U+101A MYANMAR LETTER YA ယ
* U+101B MYANMAR LETTER RA ရ
* U+101C MYANMAR LETTER LA လ
* U+101D MYANMAR LETTER WA ဝ
* U+101E MYANMAR LETTER SA သ
* U+101F MYANMAR LETTER HA ဟ
* U+1020 MYANMAR LETTER LLA ဠ
* U+103F MYANMAR LETTER GREAT SA ဿ
*
* List of medials :
* U+103B MYANMAR CONSONANT SIGN MEDIAL YA ျ
* U+103C MYANMAR CONSONANT SIGN MEDIAL RA ြ
* U+103D MYANMAR CONSONANT SIGN MEDIAL WA ွ
* U+103E MYANMAR CONSONANT SIGN MEDIAL HA ှ
* U+105E MYANMAR CONSONANT SIGN MON MEDIAL NA ၞ
* U+105F MYANMAR CONSONANT SIGN MON MEDIAL MA ၟ
* U+1060 MYANMAR CONSONANT SIGN MON MEDIAL LA ၠ
* U+1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA ႂ
*
* Other relevant characters :
* U+200C ZERO WIDTH NON-JOINER
* U+200B ZERO WIDTH SPACE
*/
@LargeTest
// These tests are inactive until the combining code for Myanmar Reordering is sorted out.
@Suppress
public class InputLogicTestsReorderingMyanmar extends InputTestsBase {
// The tests are formatted as follows.
// Each test is an entry in the array of Pair arrays.
// One test is an array of pairs. Each pair contains, in the `first' member,
// the code points that the next key press should contain. In the `second'
// member is stored the string that should be in the text view after this
// key press.
private static final Pair<?, ?>[][] TESTS = {
// Tests for U+1031 MYANMAR VOWEL SIGN E : ေ
new Pair[] { // Type : U+1031 U+1000 U+101F ေ က ဟ
Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
Pair.create(new int[] { 0x1000 }, "\u1000\u1031"), // ကေ
Pair.create(new int[] { 0x101F }, "\u1000\u1031\u101F") // ကေဟ
},
new Pair[] { // Type : U+1000 U+1031 U+101F က ေ ဟ
Pair.create(new int[] { 0x1000 }, "\u1000"), // က
Pair.create(new int[] { 0x1031 }, "\u1000\u200B\u1031"), // ကေ
Pair.create(new int[] { 0x101F }, "\u1000\u101F\u1031") // ကဟေ
},
new Pair[] { // Type : U+1031 U+101D U+103E U+1018 ေ ဝ ှ ဘ
Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
Pair.create(new int[] { 0x101D }, "\u101D\u1031"), // ဝေ
Pair.create(new int[] { 0x103E }, "\u101D\u103E\u1031"), // ဝှေ
Pair.create(new int[] { 0x1018 }, "\u101D\u103E\u1031\u1018") // ဝှေဘ
},
new Pair[] { // Type : U+1031 U+1014 U+1031 U+1000 U+102C U+1004 U+103A U+1038 U+101C
// U+102C U+1038 U+104B ေ န ေ က ာ င ် း လ ာ း ။
Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
Pair.create(new int[] { 0x1014 }, "\u1014\u1031"), // နေ
Pair.create(new int[] { 0x1031 }, "\u1014\u1031\u1031"), // နေေ
Pair.create(new int[] { 0x1000 }, "\u1014\u1031\u1000\u1031"), // နေကေ
Pair.create(new int[] { 0x102C }, "\u1014\u1031\u1000\u1031\u102C"), // နေကော
Pair.create(new int[] { 0x1004 }, "\u1014\u1031\u1000\u1031\u102C\u1004"), // နေကောင
Pair.create(new int[] { 0x103A }, // နေကောင်
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A"),
Pair.create(new int[] { 0x1038 }, // နေကောင်း
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038"),
Pair.create(new int[] { 0x101C }, // နေကောင်းလ
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C"),
Pair.create(new int[] { 0x102C }, // နေကောင်းလာ
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C"),
Pair.create(new int[] { 0x1038 }, // နေကောင်းလား
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038"),
Pair.create(new int[] { 0x104B }, // နေကောင်းလား။
"\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038\u104B")
},
new Pair[] { // Type : U+1031 U+1031 U+1031 U+1000 ေ ေ ေ က
Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
Pair.create(new int[] { 0x1031 }, "\u1031\u1031"), // ေေ
Pair.create(new int[] { 0x1031 }, "\u1031\u1031\u1031"), // U+1031ေေေ
Pair.create(new int[] { 0x1000 }, "\u1031\u1031\u1000\u1031") // ေေကေ
},
new Pair[] { // Type : U+1031 U+1001 U+103B U+103D U+1038 ေ ခ ျ ွ း
Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
Pair.create(new int[] { 0x1001 }, "\u1001\u1031"), // ခေ
Pair.create(new int[] { 0x103B }, "\u1001\u103B\u1031"), // ချေ
Pair.create(new int[] { 0x103D }, "\u1001\u103B\u103D\u1031"), // ချွေ
Pair.create(new int[] { 0x1038 }, "\u1001\u103B\u103D\u1031\u1038") // ချွေး
},
// Tests for Kinzi U+1004 U+103A U+1039 :
/* Kinzi reordering is not implemented yet. Uncomment these tests when it is.
new Pair[] { // Type : U+1021 U+1002 (U+1004 U+103A U+1039)
// U+101C U+1014 U+103A အ ဂ (င ် ္) လ န ်
Pair.create(new int[] { 0x1021 }, "\u1021"), // အ
Pair.create(new int[] { 0x1002 }, "\u1021\u1002"), // အဂ
Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // အင်္ဂ
"\u1021\u1004\u103A\u1039\u1002"),
Pair.create(new int[] { 0x101C }, // အင်္ဂလ
"\u1021\u1004\u103A\u1039\u1002\u101C"),
Pair.create(new int[] { 0x1014 }, // အင်္ဂလန
"\u1021\u1004\u103A\u1039\u1002\u101C\u1014"),
Pair.create(new int[] { 0x103A }, // အင်္ဂလန်
"\u1021\u1004\u103A\u1039\u1002\u101C\u1014\u103A")
},
new Pair[] { //Type : kinzi after a whole syllable U+101E U+1001 U+103B U+102D U+102F
// (U+1004 U+103A U+1039) U+1004 U+103A U+1038 သ ခ ျ ိ ု င ် ္ င ် း
Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
Pair.create(new int[] { 0x103B }, "\u101E\u1001\u103B"), // သချ
Pair.create(new int[] { 0x102D }, "\u101E\u1001\u103B\u102D"), // သချိ
Pair.create(new int[] { 0x102F }, "\u101E\u1001\u103B\u102D\u102F"), // သချို
Pair.create(new int[] { 0x1004, 0x103A, 0x1039}, // သင်္ချို
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
},
new Pair[] { // Type : kinzi after the consonant U+101E U+1001 (U+1004 U+103A U+1039)
// U+103B U+102D U+102F U+1004 U+103A U+1038 သ ခ င ် ္ ျ ိ ု င ် း
Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // သင်္ခ
"\u101E\u1004\u103A\u1039\u1001"),
Pair.create(new int[] { 0x103B }, // သင်္ချ
"\u101E\u1004\u103A\u1039\u1001\u103B"),
Pair.create(new int[] { 0x102D }, // သင်္ချိ
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D"),
Pair.create(new int[] { 0x102F }, // သင်္ချို
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
"\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
},
*/
};
private void doMyanmarTest(final int testNumber, final Pair<?, ?>[] test) {
int stepNumber = 0;
for (final Pair<?, ?> step : test) {
++stepNumber;
final int[] input = (int[]) step.first;
final String expectedResult = (String) step.second;
if (input.length > 1) {
mLatinIME.onTextInput(new String(input, 0, input.length));
} else {
type(input[0]);
}
assertEquals("Myanmar reordering test " + testNumber + ", step " + stepNumber,
expectedResult, mEditText.getText().toString());
}
}
public void testMyanmarReordering() {
int testNumber = 0;
changeLanguage("my_MM", "CombiningRules=MyanmarReordering");
for (final Pair<?, ?>[] test : TESTS) {
// Small trick to reset LatinIME : setText("") and send updateSelection with values
// LatinIME has never seen, and cursor pos 0,0.
mEditText.setText("");
mLatinIME.onUpdateSelection(1, 1, 0, 0, -1, -1);
doMyanmarTest(++testNumber, test);
}
}
}
|