• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include <map>
18 #include <vector>
19 #include "translit_test.h"
20 #include <unistd.h>
21 #include "unicode/utypes.h"
22 #include "unicode/translit.h"
23 #include "ohos/init_data.h"
24 
25 using namespace OHOS::Global::I18n;
26 using testing::ext::TestSize;
27 using namespace std;
28 using namespace testing;
29 
30 namespace OHOS {
31 namespace Global {
32 namespace I18n {
33 
34 std::map<std::string, std::string> TranslitTest::translitTestCases {
35     {"阿胶", "ē jiāo"},
36     {"挨打", "ái dǎ"},
37     {"扒手", "pá shǒu"},
38     {"扒草", "pá cǎo"},
39     {"刀把", "dāo bà"},
40     {"话把儿", "huà bà er"},
41     {"单薄", "dān bó"},
42     {"稀薄", "xī bó"},
43     {"背包", "bēi bāo"},
44     {"背枪", "bēi qiāng"},
45     {"剥皮", "bāo pí"},
46     {"称心", "chèn xīn"},
47     {"对称", "duì chèn"},
48     {"冲床", "chòng chuáng"},
49     {"冲子", "chòng zi"},
50     {"处罚", "chǔ fá"},
51     {"处置", "chǔ zhì"},
52     {"朝阳", "zhāo yáng"},
53     {"朝霞", "zhāo xiá"},
54     {"朝气", "zhāo qì"},
55     {"重复", "chóng fù"},
56     {"重新", "chóng xīn"},
57     {"答理", "dā lǐ"},
58     {"答应", "dā yìng"},
59     {"山大王", "shān dài wáng"},
60     {"当天", "dàng tiān"},
61     {"颠倒", "diān dǎo"},
62     {"倒下", "dǎo xià"},
63     {"得喝水了", "děi hē shuǐ le"},
64     {"好得很", "hǎo de hěn"},
65     {"的确", "dí què"},
66     {"目的", "mù dì"},
67     {"一语中的", "yī yǔ zhòng dì"},
68     {"都市", "dū shì"},
69     {"首都", "shǒu dū"},
70     {"弹琴", "tán qín"},
71     {"弹力", "tán lì"},
72     {"理发", "lǐ fà"},
73     {"头发", "tóu fà"},
74     {"身分", "shēn fèn"},
75     {"一分子", "yī fèn zi"},
76     {"可汗", "kè hán"},
77     {"大汗", "dà hán"},
78     {"呼号", "hū háo"},
79     {"号叫", "háo jiào"},
80     {"应和", "yìng hè"},
81     {"和诗", "hè shī"},
82     {"和面", "huó miàn"},
83     {"和泥", "huó ní"},
84     {"搀和", "chān huo"},
85     {"搅和", "jiǎo huo"},
86     {"喝令", "hè lìng"},
87     {"喝彩", "hè cǎi"},
88     {"好奇", "hào qí"},
89     {"好学", "hào xué"},
90     {"还原", "huán yuán"},
91     {"还书", "huán shū"},
92     {"茶几", "chá jī"},
93     {"几乎", "jī hū"},
94     {"假期", "jià qī"},
95     {"假日", "jià rì"},
96     {"间断", "jiàn duàn"},
97     {"相间", "xiāng jiàn"},
98     {"将士", "jiàng shì"},
99     {"虾兵蟹将", "xiā bīng xiè jiàng"},
100     {"角色", "jué sè"},
101     {"角斗", "jué dòu"},
102     {"教书", "jiāo shū"},
103     {"教给", "jiāo gěi"},
104     {"结果", "jié guǒ"},
105     {"结实", "jiē shí"},
106     {"睡觉", "shuì jiào"},
107     {"午觉", "wǔ jiào"},
108     {"关卡", "guān qiǎ"},
109     {"卡子", "qiǎ zi"},
110     {"看守", "kān shǒu"},
111     {"看管", "kān guǎn"},
112     {"空白", "kòng bái"},
113     {"空地", "kòng dì"},
114     {"空闲", "kòng xián"},
115     {"露头", "lòu tóu"},
116     {"露马脚", "lòu mǎ jiǎo"},
117     {"丢三落四", "diū sān là sì"},
118     {"落下", "là xià"},
119     {"了解", "liǎo jiě"},
120     {"不了了之", "bù liǎo liǎo zhī"},
121     {"音乐", "yīn yuè"},
122     {"乐曲", "yuè qǔ"},
123     {"埋怨", "mán yuàn"},
124     {"没收", "mò shōu"},
125     {"淹没", "yān mò"},
126     {"难民", "nàn mín"},
127     {"难兄难弟", "nàn xiōng nàn dì"},
128     {"宁可", "nìng kě"},
129     {"宁折不弯", "nìng zhé bù wān"},
130     {"勉强", "miǎn qiǎng"},
131     {"强迫", "qiǎng pò"},
132     {"强词夺理", "qiǎng cí duó lǐ"},
133     {"倔强", "jué jiàng"},
134     {"曲调", "qǔ diào"},
135     {"曲艺", "qǔ yì"},
136     {"歌曲", "gē qǔ"},
137     {"数落", "shǔ luò"},
138     {"数数", "shǔ shù"},
139     {"少年", "shào nián"},
140     {"少先队", "shào xiān duì"},
141     {"调皮", "tiáo pí"},
142     {"调和", "tiáo hé"},
143     {"挑战", "tiǎo zhàn"},
144     {"挑拨", "tiǎo bō"},
145     {"威吓", "wēi hè"},
146     {"恐吓", "kǒng hè"},
147     {"朝鲜", "cháo xiǎn"},
148     {"鲜为人知", "xiǎn wéi rén zhī"},
149     {"行市", "háng shì"},
150     {"银行", "yín háng"},
151     {"道行", "dào héng"},
152     {"鸡血", "jī xiě"},
153     {"狗血", "gǒu xiě"},
154     {"馒头", "mán tou"},
155     {"流了点血", "liú le diǎn xiě"},
156     {"相声", "xiàng shēng"},
157     {"面相", "miàn xiàng"},
158     {"应付", "yìng fù"},
159     {"应对", "yìng duì"},
160     {"要求", "yāo qiú"},
161     {"着急", "zháo jí"},
162     {"着迷", "zháo mí"},
163     {"着凉", "zháo liáng"},
164     {"着落", "zhuó luò"},
165     {"着重", "zhuó zhòng"},
166     {"着手", "zhuó shǒu"},
167     {"正月", "zhēng yuè"},
168     {"中奖", "zhòng jiǎng"},
169     {"中靶", "zhòng bǎ"},
170     {"耕种", "gēng zhòng"},
171     {"种植", "zhòng zhí"},
172     {"转动", "zhuàn dòng"},
173     {"转速", "zhuàn sù"},
174     {"只身", "zhī shēn"},
175     {"一只", "yī zhī"},
176     {"西藏", "xī zàng"},
177     {"藏民", "zàng mín"},
178     {"青藏高原", "qīng zàng gāo yuán"},
179     {"散文", "sǎn wén"},
180     {"参差", "cēn cī"},
181     {"缝纫", "féng rèn"},
182     {"劲敌", "jìng dí"},
183     {"扇风", "shān fēng"},
184     {"畜牧", "xù mù"},
185     {"弄堂", "lòng táng"},
186     {"伎俩", "jì liǎng"},
187     {"草率", "cǎo shuài"},
188     {"漂泊", "piāo bó"},
189     {"泊车", "bó chē"},
190     {"膀胱", "páng guāng"},
191     {"复辟", "fù bì"},
192     {"单于", "chán yú"},
193     {"折本", "shé běn"},
194     {"一沓纸", "yì dá zhǐ"},
195     {"引吭高歌", "yǐn háng gāo gē"},
196     {"出差", "chū chāi"},
197     {"差不多", "chà bù duō"},
198     {"差错", "chā cuò"},
199     {"盛饭", "chéng fàn"},
200     {"创伤", "chuāng shāng"},
201     {"雪茄", "xuě jiā"},
202     {"番茄", "fān qié"},
203     {"茄子", "qié zi"},
204     {"发疟子", "fā yào zǐ"},
205     {"自怨自艾", "zì yuàn zì yì"},
206     {"传记", "zhuàn jì"},
207     {"荷枪实弹", "hè qiāng shí dàn"},
208     {"涨红了脸", "zhàng hóng le liǎn"},
209     {"校对", "jiào duì"},
210     {"奇数", "jī shù"},
211     {"炮制", "páo zhì"},
212     {"供给", "gōng jǐ"},
213     {"冠冕堂皇", "guān miǎn táng huáng"},
214     {"干活", "gàn huó"},
215     {"巷道", "hàng dào"},
216     {"薄荷", "bò hé"},
217     {"可恶", "kě wù"},
218     {"大腹便便", "dà fù pián pián"},
219     {"星宿", "xīng xiù"},
220     {"号啕大哭", "háo táo dà kū"},
221     {"倾轧", "qīng yà"},
222     {"模样", "mú yàng"},
223     {"宿舍", "sù shè"},
224     {"殷红", "yān hóng"},
225     {"还要", "hái yào"},
226     {"系领带", "jì lǐng dài"},
227     {"放假", "fàng jià"},
228     {"空降", "kōng jiàng"},
229     {"塞外", "sài wài"},
230     {"屏气凝神", "bǐng qì níng shén"},
231     {"考卷", "kǎo juàn"},
232     {"乐亭", "lào tíng"},
233     {"好为人师", "hào wéi rén shī"},
234     {"窥伺", "kuī sì"},
235     {"处理", "chǔ lǐ"},
236 };
237 
SetUpTestCase(void)238 void TranslitTest::SetUpTestCase(void)
239 {
240     SetHwIcuDirectory();
241 }
242 
TearDownTestCase(void)243 void TranslitTest::TearDownTestCase(void)
244 {
245 }
246 
SetUp(void)247 void TranslitTest::SetUp(void)
248 {}
249 
TearDown(void)250 void TranslitTest::TearDown(void)
251 {}
252 
253 /**
254  * @tc.name: TranslitTest0001
255  * @tc.desc: Test icu::Transliterator
256  * @tc.type: FUNC
257  */
258 HWTEST_F(TranslitTest, TranslitTest0001, TestSize.Level1)
259 {
260     const std::string transId = "Any-Latn";
261     UErrorCode status = U_ZERO_ERROR;
262     icu::UnicodeString unistr = icu::UnicodeString::fromUTF8(transId);
263     icu::Transliterator *trans = icu::Transliterator::createInstance(unistr, UTransDirection::UTRANS_FORWARD, status);
264     ASSERT_TRUE(U_SUCCESS(status));
265     ASSERT_TRUE(trans != nullptr);
266     for (auto iter = translitTestCases.begin(); iter != translitTestCases.end(); ++iter) {
267         std::string word = iter->first;
268         std::string expect = iter->second;
269         icu::UnicodeString uniWord = icu::UnicodeString::fromUTF8(word.data());
270         trans->transliterate(uniWord);
271         std::string result;
272         uniWord.toUTF8String(result);
273         EXPECT_EQ(result, expect);
274     }
275     delete trans;
276 }
277 } // namespace I18n
278 } // namespace Global
279 } // namespace OHOS