1 /*
2 * Copyright (c) 2021-2022 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 "locale_config_test.h"
17 #include <gtest/gtest.h>
18 #include "locale_config.h"
19 #include "parameter.h"
20
21 using namespace OHOS::Global::I18n;
22 using testing::ext::TestSize;
23 using namespace std;
24
25 namespace OHOS {
26 namespace Global {
27 namespace I18n {
28 class LocaleConfigTest : public testing::Test {
29 public:
30 static void SetUpTestCase(void);
31 static void TearDownTestCase(void);
32 void SetUp();
33 void TearDown();
34 };
35
SetUpTestCase(void)36 void LocaleConfigTest::SetUpTestCase(void)
37 {}
38
TearDownTestCase(void)39 void LocaleConfigTest::TearDownTestCase(void)
40 {}
41
SetUp(void)42 void LocaleConfigTest::SetUp(void)
43 {}
44
TearDown(void)45 void LocaleConfigTest::TearDown(void)
46 {}
47
48 /**
49 * @tc.name: LocaleConfigFuncTest001
50 * @tc.desc: Test LocaleConfig GetSystemLanguage default
51 * @tc.type: FUNC
52 */
53 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest001, TestSize.Level1)
54 {
55 int ret = SetParameter("hm.sys.language", "");
56 if (!ret) {
57 EXPECT_EQ(LocaleConfig::GetSystemLanguage(), "zh-Hans");
58 }
59 }
60
61 /**
62 * @tc.name: LocaleConfigFuncTest002
63 * @tc.desc: Test LocaleConfig GetSystemRegion default.
64 * @tc.type: FUNC
65 */
66 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest002, TestSize.Level1)
67 {
68 int ret = SetParameter("hm.sys.locale", "");
69 if (!ret) {
70 EXPECT_EQ(LocaleConfig::GetSystemRegion(), "CN");
71 }
72 }
73
74 /**
75 * @tc.name: LocaleConfigFuncTest003
76 * @tc.desc: Test LocaleConfig GetSystemLocale default
77 * @tc.type: FUNC
78 */
79 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest003, TestSize.Level1)
80 {
81 int ret = SetParameter("hm.sys.locale", "");
82 if (!ret) {
83 EXPECT_EQ(LocaleConfig::GetSystemLocale(), "zh-Hans-CN");
84 }
85 }
86
87 /**
88 * @tc.name: LocaleConfigFuncTest004
89 * @tc.desc: Test LocaleConfig SetSystemLanguage
90 * @tc.type: FUNC
91 */
92 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest004, TestSize.Level1)
93 {
94 string language = "pt-PT";
95 bool ret = LocaleConfig::SetSystemLanguage(language);
96 EXPECT_EQ(ret, false);
97 }
98
99 /**
100 * @tc.name: LocaleConfigFuncTest005
101 * @tc.desc: Test LocaleConfig SetSystemLocale
102 * @tc.type: FUNC
103 */
104 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest005, TestSize.Level1)
105 {
106 string locale = "zh-Hant-TW";
107 bool ret = LocaleConfig::SetSystemLocale(locale);
108 EXPECT_EQ(ret, false);
109 }
110
111 /**
112 * @tc.name: LocaleConfigFuncTest006
113 * @tc.desc: Test LocaleConfig SetSystemRegion
114 * @tc.type: FUNC
115 */
116 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest006, TestSize.Level1)
117 {
118 string locale = "zh-Hant-TW";
119 bool ret = LocaleConfig::SetSystemLocale(locale);
120 ret = LocaleConfig::SetSystemRegion("HK");
121 EXPECT_EQ(ret, false);
122 }
123
124 /**
125 * @tc.name: LocaleConfigFuncTest007
126 * @tc.desc: Test LocaleConfig GetSystemCountries
127 * @tc.type: FUNC
128 */
129 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest007, TestSize.Level1)
130 {
131 vector<string> countries;
132 LocaleConfig::GetSystemCountries(countries);
133 unsigned int size = 240;
134 EXPECT_EQ(countries.size(), size);
135 }
136
137 /**
138 * @tc.name: LocaleConfigFuncTest008
139 * @tc.desc: Test LocaleConfig GetDisplayLanguage
140 * @tc.type: FUNC
141 */
142 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest008, TestSize.Level1)
143 {
144 EXPECT_EQ(LocaleConfig::GetDisplayLanguage("pt", "zh-Hans-CN", true), "葡萄牙语");
145 }
146
147 /**
148 * @tc.name: LocaleConfigFuncTest009
149 * @tc.desc: Test LocaleConfig GetDisplayRegion
150 * @tc.type: FUNC
151 */
152 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest009, TestSize.Level1)
153 {
154 EXPECT_EQ(LocaleConfig::GetDisplayRegion("JP", "zh-Hans-CN", false), "日本");
155 }
156
157 /**
158 * @tc.name: LocaleConfigFuncTest010
159 * @tc.desc: Test LocaleConfig GetDisplayRegion
160 * @tc.type: FUNC
161 */
162 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest010, TestSize.Level1)
163 {
164 EXPECT_EQ(LocaleConfig::GetDisplayRegion("zh-Hans-CN", "en-US", true), "China");
165 }
166
167 /**
168 * @tc.name: LocaleConfigFuncTest011
169 * @tc.desc: Test LocaleConfig GetDisplayRegion
170 * @tc.type: FUNC
171 */
172 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest011, TestSize.Level1)
173 {
174 EXPECT_EQ(LocaleConfig::GetDisplayRegion("zh", "en-US", true), "");
175 }
176
177 /**
178 * @tc.name: LocaleConfigFuncTest012
179 * @tc.desc: Test LocaleConfig GetDisplayRegion
180 * @tc.type: FUNC
181 */
182 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest012, TestSize.Level1)
183 {
184 EXPECT_EQ(LocaleConfig::GetDisplayRegion("zh-Hans", "en-US", true), "");
185 }
186
187 /**
188 * @tc.name: LocaleConfigFuncTest013
189 * @tc.desc: Test LocaleConfig LocalDigit
190 * @tc.type: FUNC
191 */
192 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest013, TestSize.Level1)
193 {
194 bool current = LocaleConfig::GetUsingLocalDigit();
195 if (LocaleConfig::SetUsingLocalDigit(true)) {
196 current = LocaleConfig::GetUsingLocalDigit();
197 EXPECT_TRUE(current);
198 }
199 }
200
201 /**
202 * @tc.name: LocaleConfigFuncTest014
203 * @tc.desc: Test LocaleConfig 24 hour clock
204 * @tc.type: FUNC
205 */
206 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest014, TestSize.Level1)
207 {
208 bool current = LocaleConfig::Is24HourClock();
209 if (LocaleConfig::Set24HourClock(true)) {
210 current = LocaleConfig::Is24HourClock();
211 EXPECT_TRUE(current);
212 }
213 }
214
215 /**
216 * @tc.name: LocaleConfigFuncTest015
217 * @tc.desc: Test LocaleConfig valid locales
218 * @tc.type: FUNC
219 */
220 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest015, TestSize.Level1)
221 {
222 string localeTag = "zh";
223 string validLocaleTag = LocaleConfig::GetValidLocale(localeTag);
224 EXPECT_EQ(validLocaleTag, "zh");
225
226 localeTag = "zh-u-hc-h12-nu-latn-ca-chinese-co-pinyin-kf-upper-kn-true";
227 validLocaleTag = LocaleConfig::GetValidLocale(localeTag);
228 EXPECT_EQ(validLocaleTag, "zh-u-ca-chinese-co-pinyin-kn-true-kf-upper-nu-latn-hc-h12");
229 }
230
231 /**
232 * @tc.name: LocaleConfigFuncTest016
233 * @tc.desc: Test LocaleConfig isRTL
234 * @tc.type: FUNC
235 */
236 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest016, TestSize.Level1)
237 {
238 string localeTag = "zh";
239 bool isRTL = LocaleConfig::IsRTL(localeTag);
240 EXPECT_TRUE(!isRTL);
241 localeTag = "ar";
242 isRTL = LocaleConfig::IsRTL(localeTag);
243 EXPECT_TRUE(isRTL);
244 }
245
246 /**
247 * @tc.name: LocaleConfigFuncTest017
248 * @tc.desc: Test LocaleConfig isSuggested
249 * @tc.type: FUNC
250 */
251 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest017, TestSize.Level1)
252 {
253 string language = "zh";
254 bool isSuggested = LocaleConfig::IsSuggested(language);
255 EXPECT_TRUE(isSuggested);
256 string region = "CN";
257 isSuggested = LocaleConfig::IsSuggested(language, region);
258 EXPECT_TRUE(isSuggested);
259 }
260
261 /**
262 * @tc.name: LocaleConfigFuncTest018
263 * @tc.desc: Test LocaleCOnfig systemRegion
264 * @tc.type: FUNC
265 */
266 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest018, TestSize.Level1)
267 {
268 string currentRegion = LocaleConfig::GetSystemRegion();
269 EXPECT_TRUE(currentRegion.length() > 0);
270 string region = "CN";
271 if (LocaleConfig::SetSystemRegion(region)) {
272 currentRegion = LocaleConfig::GetSystemRegion();
273 EXPECT_EQ(currentRegion, region);
274 }
275 }
276
277 /**
278 * @tc.name: LocaleConfigFuncTest019
279 * @tc.desc: Test LocaleCOnfig systemLocale
280 * @tc.type: FUNC
281 */
282 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest019, TestSize.Level1)
283 {
284 string currentLocale = LocaleConfig::GetSystemLocale();
285 EXPECT_TRUE(currentLocale.length() > 0);
286 string locale = "zh-Hans-CN";
287 if (LocaleConfig::SetSystemLocale(locale)) {
288 currentLocale = LocaleConfig::GetSystemLocale();
289 EXPECT_EQ(currentLocale, locale);
290 }
291 }
292
293 /**
294 * @tc.name: LocaleConfigFuncTest020
295 * @tc.desc: Test LocaleCOnfig systemLanguages
296 * @tc.type: FUNC
297 */
298 HWTEST_F(LocaleConfigTest, LocaleConfigFuncTest020, TestSize.Level1)
299 {
300 vector<string> languages;
301 LocaleConfig::GetSystemLanguages(languages);
302 EXPECT_EQ(languages.size(), 2);
303 }
304 } // namespace I18n
305 } // namespace Global
306 } // namespace OHOS