1 /*
2 * Copyright (c) 2021 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 "week_plural_number_test.h"
17 #include <gtest/gtest.h>
18 #include "date_time_format.h"
19 #include "iostream"
20 #include "locale_info.h"
21 #include "number_format.h"
22 #include "plural_format.h"
23 #include "types.h"
24 #include "week_info.h"
25
26 namespace OHOS {
27 using namespace std;
28 using namespace testing::ext;
29 using namespace OHOS::I18N;
30
31 class WeekPluralNumberTest : public testing::Test {
32 public:
33 void SetUp();
34 void TearDown();
35 };
36
SetUp()37 void WeekPluralNumberTest::SetUp()
38 {
39 }
40
TearDown()41 void WeekPluralNumberTest::TearDown()
42 {
43 }
44
45 /**
46 * @tc.number: WeekPluralNumberTest0100
47 * @tc.name: Test PluralFormat GetPluralRuleIndex function with zh locale
48 */
49 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0100, Function | MediumTest | Level3)
50 {
51 LocaleInfo locale("zh", "", "");
52 I18nStatus status = I18nStatus::ISUCCESS;
53 PluralFormat formatter(locale, status);
54 double number = 2.1;
55 int out = formatter.GetPluralRuleIndex(number, status);
56 int expect = PluralRuleType::OTHER;
57 EXPECT_TRUE(expect == out);
58 number = 10.10;
59 out = formatter.GetPluralRuleIndex(number, status);
60 EXPECT_TRUE(expect == out);
61 number = 100.1234567;
62 out = formatter.GetPluralRuleIndex(number, status);
63 EXPECT_TRUE(expect == out);
64 }
65
66 /**
67 * @tc.number: WeekPluralNumberTest0200
68 * @tc.name: Test PluralFormat GetPluralRuleIndex function with uk locale
69 */
70 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0200, Function | MediumTest | Level3)
71 {
72 LocaleInfo locale("uk", "", "");
73 I18nStatus status = I18nStatus::ISUCCESS;
74 PluralFormat formatter(locale, status);
75 double number = 3.3;
76 int out = formatter.GetPluralRuleIndex(number, status);
77 int expect = PluralRuleType::OTHER;
78 EXPECT_TRUE(expect == out);
79 number = 10.10;
80 out = formatter.GetPluralRuleIndex(number, status);
81 EXPECT_TRUE(expect == out);
82 number = 1.7654321;
83 out = formatter.GetPluralRuleIndex(number, status);
84 EXPECT_TRUE(expect == out);
85 }
86
87 /**
88 * @tc.number: WeekPluralNumberTest0300
89 * @tc.name: Test PluralFormat GetPluralRuleIndex function with sr locale
90 */
91 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0300, Function | MediumTest | Level3)
92 {
93 LocaleInfo locale("sr", "", "");
94 I18nStatus status = I18nStatus::ISUCCESS;
95 PluralFormat formatter(locale, status);
96 double number = 1.10;
97 int out = formatter.GetPluralRuleIndex(number, status);
98 int expect = PluralRuleType::ONE;
99 EXPECT_TRUE(expect == out);
100 number = 1.1210;
101 out = formatter.GetPluralRuleIndex(number, status);
102 EXPECT_TRUE(expect == out);
103 number = 1.2;
104 out = formatter.GetPluralRuleIndex(number, status);
105 expect = PluralRuleType::FEW;
106 EXPECT_TRUE(expect == out);
107 number = 1.20;
108 out = formatter.GetPluralRuleIndex(number, status);
109 EXPECT_TRUE(expect == out);
110 number = 1.3;
111 out = formatter.GetPluralRuleIndex(number, status);
112 EXPECT_TRUE(expect == out);
113 number = 1.40;
114 out = formatter.GetPluralRuleIndex(number, status);
115 EXPECT_TRUE(expect == out);
116 number = 1.22;
117 out = formatter.GetPluralRuleIndex(number, status);
118 EXPECT_TRUE(expect == out);
119 number = 1.340;
120 out = formatter.GetPluralRuleIndex(number, status);
121 EXPECT_TRUE(expect == out);
122 number = 1.11;
123 out = formatter.GetPluralRuleIndex(number, status);
124 expect = PluralRuleType::OTHER;
125 EXPECT_TRUE(expect == out);
126 number = 1.120;
127 out = formatter.GetPluralRuleIndex(number, status);
128 EXPECT_TRUE(expect == out);
129 number = 1.13;
130 out = formatter.GetPluralRuleIndex(number, status);
131 EXPECT_TRUE(expect == out);
132 number = 1.140;
133 out = formatter.GetPluralRuleIndex(number, status);
134 EXPECT_TRUE(expect == out);
135 }
136
137 /**
138 * @tc.number: WeekPluralNumberTest0400
139 * @tc.name: Test PluralFormat GetPluralRuleIndex function with lv locale
140 */
141 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0400, Function | MediumTest | Level3)
142 {
143 LocaleInfo locale("lv", "", "");
144 I18nStatus status = I18nStatus::ISUCCESS;
145 PluralFormat formatter(locale, status);
146 double number = 1.140;
147 int out = formatter.GetPluralRuleIndex(number, status);
148 int expect = PluralRuleType::ZERO;
149 EXPECT_TRUE(expect == out);
150 number = 11.0;
151 out = formatter.GetPluralRuleIndex(number, status);
152 EXPECT_TRUE(expect == out);
153 }
154
155 /**
156 * @tc.number: WeekPluralNumberTest0500
157 * @tc.name: Test PluralFormat GetPluralRuleIndex function with ar locale
158 */
159 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0500, Function | MediumTest | Level3)
160 {
161 LocaleInfo locale("ar", "", "");
162 I18nStatus status = I18nStatus::ISUCCESS;
163 PluralFormat formatter(locale, status);
164 double number = 2.0;
165 int out = formatter.GetPluralRuleIndex(number, status);
166 int expect = PluralRuleType::TWO;
167 EXPECT_TRUE(expect == out);
168 number = 2.0;
169 out = formatter.GetPluralRuleIndex(number, status);
170 EXPECT_TRUE(expect == out);
171 number = 2.00;
172 out = formatter.GetPluralRuleIndex(number, status);
173 EXPECT_TRUE(expect == out);
174 number = 2.000;
175 out = formatter.GetPluralRuleIndex(number, status);
176 EXPECT_TRUE(expect == out);
177 expect = PluralRuleType::MANY;
178 number = 1011.0;
179 out = formatter.GetPluralRuleIndex(number, status);
180 EXPECT_TRUE(expect == out);
181 }
182
183 /**
184 * @tc.number: WeekPluralNumberTest0600
185 * @tc.name: Test LocaleInfo ForLanguageTag with zh locale
186 */
187 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0600, Function | MediumTest | Level3)
188 {
189 I18nStatus status = I18nStatus::ISUCCESS;
190 LocaleInfo locale = LocaleInfo::ForLanguageTag("zh-Hant-CN-u-nu-arab", status);
191 EXPECT_TRUE(status == I18nStatus::ISUCCESS);
192 }
193
194 /**
195 * @tc.number: WeekPluralNumberTest0700
196 * @tc.name: Test LocaleInfo ForLanguageTag with ko locale
197 */
198 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0700, Function | MediumTest | Level3)
199 {
200 I18nStatus status = I18nStatus::ISUCCESS;
201 LocaleInfo locale = LocaleInfo::ForLanguageTag("ko-Hani-KR-u-nu-arab", status);
202 EXPECT_TRUE(status == I18nStatus::ISUCCESS);
203 }
204
205 /**
206 * @tc.number: WeekPluralNumberTest0800
207 * @tc.name: Test LocaleInfo GetExtension with zh locale
208 */
209 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0800, Function | MediumTest | Level3)
210 {
211 I18nStatus status = I18nStatus::ISUCCESS;
212 LocaleInfo locale = LocaleInfo::ForLanguageTag("zh-Hant-CN-u-nu-arab", status);
213 EXPECT_TRUE(status == I18nStatus::ISUCCESS);
214 const char *numberDigits = locale.GetExtension("nu");
215 EXPECT_TRUE(numberDigits != nullptr);
216 EXPECT_TRUE(strcmp("arab", numberDigits) == 0);
217 int status_v2 = 0;
218 NumberFormat formatter(locale, status_v2);
219 int intNum1 = 1234567;
220 std::string out = formatter.Format(intNum1, status_v2);
221 std::cout << "out: " << out << std::endl;
222 EXPECT_TRUE(out == "١٬٢٣٤٬٥٦٧");
223 }
224
225 /**
226 * @tc.number: WeekPluralNumberTest0900
227 * @tc.name: Test LocaleInfo GetExtension with ko locale
228 */
229 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest0900, Function | MediumTest | Level3)
230 {
231 I18nStatus status = I18nStatus::ISUCCESS;
232 LocaleInfo locale = LocaleInfo::ForLanguageTag("ko-Hani-KR-u-nu-arab", status);
233 EXPECT_TRUE(status == I18nStatus::ISUCCESS);
234 const char *numberDigits = locale.GetExtension("nu");
235 EXPECT_TRUE(numberDigits != nullptr);
236 EXPECT_TRUE(strcmp("arab", numberDigits) == 0);
237 int status_v2 = 0;
238 NumberFormat formatter(locale, status_v2);
239 int intNum1 = 1234567;
240 std::string out = formatter.Format(intNum1, status_v2);
241 std::cout << "out: " << out << std::endl;
242 EXPECT_TRUE(out == "١٬٢٣٤٬٥٦٧");
243 }
244
245 /**
246 * @tc.number: WeekPluralNumberTest1000
247 * @tc.name: Test WeekInfo constructor with zh language
248 */
249 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1000, Function | MediumTest | Level3)
250 {
251 I18nStatus status = I18nStatus::ISUCCESS;
252 LocaleInfo locale("zh", "CN");
253 WeekInfo weekInfo(locale, status);
254 EXPECT_TRUE(status == I18nStatus::ISUCCESS);
255 }
256
257 /**
258 * @tc.number: WeekPluralNumberTest1100
259 * @tc.name: Test WeekInfo GetFirstDayOfWeek with zh locale
260 */
261 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1100, Function | MediumTest | Level3)
262 {
263 I18nStatus status = I18nStatus::ISUCCESS;
264 LocaleInfo locale("zh", "CN");
265 WeekInfo weekInfo(locale, status);
266 uint8_t ret = weekInfo.GetFirstDayOfWeek();
267 EXPECT_TRUE(ret == 1);
268 }
269
270 /**
271 * @tc.number: WeekPluralNumberTest1200
272 * @tc.name: Test WeekInfo GetFirstDayOfWeek with en locale
273 */
274 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1200, Function | MediumTest | Level3)
275 {
276 I18nStatus status = I18nStatus::ISUCCESS;
277 LocaleInfo locale("en", "US");
278 WeekInfo weekInfo(locale, status);
279 uint8_t ret = weekInfo.GetFirstDayOfWeek();
280 EXPECT_TRUE(ret == 1);
281 }
282
283 /**
284 * @tc.number: WeekPluralNumberTest1300
285 * @tc.name: Test WeekInfo GetMinimalDaysInFirstWeek with zh locale
286 */
287 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1300, Function | MediumTest | Level3)
288 {
289 I18nStatus status = I18nStatus::ISUCCESS;
290 LocaleInfo locale("zh", "CN");
291 WeekInfo weekInfo(locale, status);
292 uint8_t ret = weekInfo.GetMinimalDaysInFirstWeek();
293 EXPECT_TRUE(ret == 1);
294 }
295
296 /**
297 * @tc.number: WeekPluralNumberTest1400
298 * @tc.name: Test WeekInfo GetMinimalDaysInFirstWeek with zh locale
299 */
300 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1400, Function | MediumTest | Level3)
301 {
302 I18nStatus status = I18nStatus::ISUCCESS;
303 LocaleInfo locale("en", "US");
304 WeekInfo weekInfo(locale, status);
305 uint8_t ret = weekInfo.GetMinimalDaysInFirstWeek();
306 EXPECT_TRUE(ret == 1);
307 }
308
309 /**
310 * @tc.number: WeekPluralNumberTest1500
311 * @tc.name: Test WeekInfo GetFirstDayOfWeekend with zh locale
312 */
313 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1500, Function | MediumTest | Level3)
314 {
315 I18nStatus status = I18nStatus::ISUCCESS;
316 LocaleInfo locale("zh", "CN");
317 WeekInfo weekInfo(locale, status);
318 uint8_t ret = weekInfo.GetFirstDayOfWeekend();
319 EXPECT_TRUE(ret == 7);
320 }
321
322 /**
323 * @tc.number: WeekPluralNumberTest1600
324 * @tc.name: Test WeekInfo GetFirstDayOfWeekend with en locale
325 */
326 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1600, Function | MediumTest | Level3)
327 {
328 I18nStatus status = I18nStatus::ISUCCESS;
329 LocaleInfo locale("en", "US");
330 WeekInfo weekInfo(locale, status);
331 uint8_t ret = weekInfo.GetFirstDayOfWeekend();
332 EXPECT_TRUE(ret == 7);
333 }
334
335 /**
336 * @tc.number: WeekPluralNumberTest1700
337 * @tc.name: Test WeekInfo GetLastDayOfWeekend with zh locale
338 */
339 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1700, Function | MediumTest | Level3)
340 {
341 I18nStatus status = I18nStatus::ISUCCESS;
342 LocaleInfo locale("zh", "CN");
343 WeekInfo weekInfo(locale, status);
344 uint8_t ret = weekInfo.GetLastDayOfWeekend();
345 EXPECT_TRUE(ret == 1);
346 }
347
348 /**
349 * @tc.number: WeekPluralNumberTest1800
350 * @tc.name: Test WeekInfo GetLastDayOfWeekend with en locale
351 */
352 HWTEST_F(WeekPluralNumberTest, WeekPluralNumberTest1800, Function | MediumTest | Level3)
353 {
354 I18nStatus status = I18nStatus::ISUCCESS;
355 LocaleInfo locale("en", "US");
356 WeekInfo weekInfo(locale, status);
357 uint8_t ret = weekInfo.GetLastDayOfWeekend();
358 EXPECT_TRUE(ret == 1);
359 }
360 }