• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }