19596a2c1Sopenharmony_ci/*
29596a2c1Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
39596a2c1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
49596a2c1Sopenharmony_ci * you may not use this file except in compliance with the License.
59596a2c1Sopenharmony_ci * You may obtain a copy of the License at
69596a2c1Sopenharmony_ci *
79596a2c1Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
89596a2c1Sopenharmony_ci *
99596a2c1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
109596a2c1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
119596a2c1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
129596a2c1Sopenharmony_ci * See the License for the specific language governing permissions and
139596a2c1Sopenharmony_ci * limitations under the License.
149596a2c1Sopenharmony_ci */
159596a2c1Sopenharmony_ci
169596a2c1Sopenharmony_ci#include <gtest/gtest.h>
179596a2c1Sopenharmony_ci#include "entity_recognizer.h"
189596a2c1Sopenharmony_ci#include "i18n_break_iterator.h"
199596a2c1Sopenharmony_ci#include "i18n_calendar.h"
209596a2c1Sopenharmony_ci#include "i18n_normalizer.h"
219596a2c1Sopenharmony_ci#include "i18n_timezone_mock.h"
229596a2c1Sopenharmony_ci#include "locale_config.h"
239596a2c1Sopenharmony_ci#include "locale_info.h"
249596a2c1Sopenharmony_ci#include "locale_matcher.h"
259596a2c1Sopenharmony_ci#include "locale_util.h"
269596a2c1Sopenharmony_ci#include "lunar_calendar.h"
279596a2c1Sopenharmony_ci#include "measure_data.h"
289596a2c1Sopenharmony_ci#include "phone_number_format_mock.h"
299596a2c1Sopenharmony_ci#include "preferred_language.h"
309596a2c1Sopenharmony_ci
319596a2c1Sopenharmony_ciusing namespace OHOS::Global::I18n;
329596a2c1Sopenharmony_ciusing testing::ext::TestSize;
339596a2c1Sopenharmony_ciusing namespace std;
349596a2c1Sopenharmony_ci
359596a2c1Sopenharmony_cinamespace OHOS {
369596a2c1Sopenharmony_cinamespace Global {
379596a2c1Sopenharmony_cinamespace I18n {
389596a2c1Sopenharmony_ciclass I18nTest : public testing::Test {
399596a2c1Sopenharmony_cipublic:
409596a2c1Sopenharmony_ci    static void SetUpTestCase(void);
419596a2c1Sopenharmony_ci    static void TearDownTestCase(void);
429596a2c1Sopenharmony_ci    void SetUp();
439596a2c1Sopenharmony_ci    void TearDown();
449596a2c1Sopenharmony_ci};
459596a2c1Sopenharmony_ci
469596a2c1Sopenharmony_civoid I18nTest::SetUpTestCase(void)
479596a2c1Sopenharmony_ci{}
489596a2c1Sopenharmony_ci
499596a2c1Sopenharmony_civoid I18nTest::TearDownTestCase(void)
509596a2c1Sopenharmony_ci{}
519596a2c1Sopenharmony_ci
529596a2c1Sopenharmony_civoid I18nTest::SetUp(void)
539596a2c1Sopenharmony_ci{}
549596a2c1Sopenharmony_ci
559596a2c1Sopenharmony_civoid I18nTest::TearDown(void)
569596a2c1Sopenharmony_ci{}
579596a2c1Sopenharmony_ci
589596a2c1Sopenharmony_ci/**
599596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest001
609596a2c1Sopenharmony_ci * @tc.desc: Test I18n PreferredLanguage GetPreferredLocale
619596a2c1Sopenharmony_ci * @tc.type: FUNC
629596a2c1Sopenharmony_ci */
639596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest001, TestSize.Level1)
649596a2c1Sopenharmony_ci{
659596a2c1Sopenharmony_ci    string preferredLocale = PreferredLanguage::GetPreferredLocale();
669596a2c1Sopenharmony_ci    EXPECT_TRUE(preferredLocale.size() > 0);
679596a2c1Sopenharmony_ci    string systemLocale = "zh-Hans-CN";
689596a2c1Sopenharmony_ci    I18nErrorCode status = LocaleConfig::SetSystemLocale(systemLocale);
699596a2c1Sopenharmony_ci    EXPECT_EQ(status, I18nErrorCode::SUCCESS);
709596a2c1Sopenharmony_ci    status = PreferredLanguage::AddPreferredLanguage("en-US", 0);
719596a2c1Sopenharmony_ci    EXPECT_EQ(status, I18nErrorCode::SUCCESS);
729596a2c1Sopenharmony_ci    preferredLocale = PreferredLanguage::GetPreferredLocale();
739596a2c1Sopenharmony_ci    EXPECT_EQ(preferredLocale, "en-CN");
749596a2c1Sopenharmony_ci    PreferredLanguage::RemovePreferredLanguage(0);
759596a2c1Sopenharmony_ci#ifdef SUPPORT_APP_PREFERRED_LANGUAGE
769596a2c1Sopenharmony_ci    I18nErrorCode errCode = I18nErrorCode::SUCCESS;
779596a2c1Sopenharmony_ci    PreferredLanguage::SetAppPreferredLanguage("en-US", errCode);
789596a2c1Sopenharmony_ci    EXPECT_EQ(errCode, I18nErrorCode::SUCCESS);
799596a2c1Sopenharmony_ci    std::string appPreferLanguage = PreferredLanguage::GetAppPreferredLanguage();
809596a2c1Sopenharmony_ci    EXPECT_EQ(appPreferLanguage, "en-US");
819596a2c1Sopenharmony_ci#endif
829596a2c1Sopenharmony_ci}
839596a2c1Sopenharmony_ci
849596a2c1Sopenharmony_ci/**
859596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest002
869596a2c1Sopenharmony_ci * @tc.desc: Test I18n Normalizer
879596a2c1Sopenharmony_ci * @tc.type: FUNC
889596a2c1Sopenharmony_ci */
899596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest002, TestSize.Level1)
909596a2c1Sopenharmony_ci{
919596a2c1Sopenharmony_ci    I18nErrorCode errorCode = I18nErrorCode::SUCCESS;
929596a2c1Sopenharmony_ci    I18nNormalizer normalizer(I18nNormalizerMode::NFD, errorCode);
939596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
949596a2c1Sopenharmony_ci
959596a2c1Sopenharmony_ci    string text = "\uFB01"; // \uFB01 is fi
969596a2c1Sopenharmony_ci    string normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
979596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
989596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 3); // 3 is the NFD normalized length of fi.
999596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\uFB01");
1009596a2c1Sopenharmony_ci
1019596a2c1Sopenharmony_ci    text = "\u0032\u2075";
1029596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1039596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1049596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 4); // 4 is the expected normalized text length.
1059596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0032\u2075");
1069596a2c1Sopenharmony_ci
1079596a2c1Sopenharmony_ci    text = "\u1E9B\u0323";
1089596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1099596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1109596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 6); // 6 is the expected normalized text length.
1119596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u017F\u0323\u0307");
1129596a2c1Sopenharmony_ci    std::string result = normalizer.Normalize(nullptr, 0, errorCode);
1139596a2c1Sopenharmony_ci    EXPECT_EQ(result, "");
1149596a2c1Sopenharmony_ci}
1159596a2c1Sopenharmony_ci
1169596a2c1Sopenharmony_ci/**
1179596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest003
1189596a2c1Sopenharmony_ci * @tc.desc: Test I18n Normalizer
1199596a2c1Sopenharmony_ci * @tc.type: FUNC
1209596a2c1Sopenharmony_ci */
1219596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest003, TestSize.Level1)
1229596a2c1Sopenharmony_ci{
1239596a2c1Sopenharmony_ci    I18nErrorCode errorCode = I18nErrorCode::SUCCESS;
1249596a2c1Sopenharmony_ci    I18nNormalizer normalizer(I18nNormalizerMode::NFC, errorCode);
1259596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1269596a2c1Sopenharmony_ci
1279596a2c1Sopenharmony_ci    string text = "\uFB01"; // \uFB01 is fi
1289596a2c1Sopenharmony_ci    string normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1299596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1309596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 3); // 3 is the NFC normalized length of fi.
1319596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\uFB01");
1329596a2c1Sopenharmony_ci
1339596a2c1Sopenharmony_ci    text = "\u0032\u2075";
1349596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1359596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1369596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 4); // 4 is the expected normalized text length.
1379596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0032\u2075");
1389596a2c1Sopenharmony_ci
1399596a2c1Sopenharmony_ci    text = "\u1E9B\u0323";
1409596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1419596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1429596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 5); // 5 is the expected normalized text length.
1439596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u1E9B\u0323");
1449596a2c1Sopenharmony_ci}
1459596a2c1Sopenharmony_ci
1469596a2c1Sopenharmony_ci/**
1479596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest004
1489596a2c1Sopenharmony_ci * @tc.desc: Test I18n Normalizer
1499596a2c1Sopenharmony_ci * @tc.type: FUNC
1509596a2c1Sopenharmony_ci */
1519596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest004, TestSize.Level1)
1529596a2c1Sopenharmony_ci{
1539596a2c1Sopenharmony_ci    I18nErrorCode errorCode = I18nErrorCode::SUCCESS;
1549596a2c1Sopenharmony_ci    I18nNormalizer normalizer(I18nNormalizerMode::NFKD, errorCode);
1559596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1569596a2c1Sopenharmony_ci
1579596a2c1Sopenharmony_ci    string text = "\uFB01"; // \uFB01 is fi
1589596a2c1Sopenharmony_ci    string normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1599596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1609596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 2); // 2 is the NFKD normalized length of fi.
1619596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0066\u0069");
1629596a2c1Sopenharmony_ci
1639596a2c1Sopenharmony_ci    text = "\u0032\u2075";
1649596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1659596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1669596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 2); // 2 is the expected normalized text length.
1679596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0032\u0035");
1689596a2c1Sopenharmony_ci
1699596a2c1Sopenharmony_ci    text = "\u1E9B\u0323";
1709596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1719596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1729596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 5); // 5 is the expected normalized text length.
1739596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0073\u0323\u0307");
1749596a2c1Sopenharmony_ci}
1759596a2c1Sopenharmony_ci
1769596a2c1Sopenharmony_ci/**
1779596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest005
1789596a2c1Sopenharmony_ci * @tc.desc: Test I18n Normalizer
1799596a2c1Sopenharmony_ci * @tc.type: FUNC
1809596a2c1Sopenharmony_ci */
1819596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest005, TestSize.Level1)
1829596a2c1Sopenharmony_ci{
1839596a2c1Sopenharmony_ci    I18nErrorCode errorCode = I18nErrorCode::SUCCESS;
1849596a2c1Sopenharmony_ci    I18nNormalizer normalizer(I18nNormalizerMode::NFKC, errorCode);
1859596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1869596a2c1Sopenharmony_ci
1879596a2c1Sopenharmony_ci    string text = "\uFB01"; // \uFB01 is fi
1889596a2c1Sopenharmony_ci    string normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1899596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1909596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 2); // 2 is the NFKC normalized length of fi.
1919596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0066\u0069");
1929596a2c1Sopenharmony_ci
1939596a2c1Sopenharmony_ci    text = "\u0032\u2075";
1949596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
1959596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
1969596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 2); // 2 is the expected normalized text length.
1979596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u0032\u0035");
1989596a2c1Sopenharmony_ci
1999596a2c1Sopenharmony_ci    text = "\u1E9B\u0323";
2009596a2c1Sopenharmony_ci    normalizedText = normalizer.Normalize(text.c_str(), text.length(), errorCode);
2019596a2c1Sopenharmony_ci    EXPECT_EQ(errorCode, I18nErrorCode::SUCCESS);
2029596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText.length(), 3); // 3 is the expected normalized text length.
2039596a2c1Sopenharmony_ci    EXPECT_EQ(normalizedText, "\u1E69");
2049596a2c1Sopenharmony_ci}
2059596a2c1Sopenharmony_ci
2069596a2c1Sopenharmony_ci/**
2079596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest006
2089596a2c1Sopenharmony_ci * @tc.desc: Test I18n I18nCalendar
2099596a2c1Sopenharmony_ci * @tc.type: FUNC
2109596a2c1Sopenharmony_ci */
2119596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest006, TestSize.Level1)
2129596a2c1Sopenharmony_ci{
2139596a2c1Sopenharmony_ci    I18nCalendar buddhistCalendar("zh-Hans", CalendarType::BUDDHIST);
2149596a2c1Sopenharmony_ci    buddhistCalendar.Set(UCalendarDateFields::UCAL_YEAR, 2023);
2159596a2c1Sopenharmony_ci    int32_t year = buddhistCalendar.Get(UCalendarDateFields::UCAL_YEAR);
2169596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2023);
2179596a2c1Sopenharmony_ci    I18nCalendar chineseCalendar("zh-Hans", CalendarType::CHINESE);
2189596a2c1Sopenharmony_ci    chineseCalendar.SetMinimalDaysInFirstWeek(3);
2199596a2c1Sopenharmony_ci    int32_t minimalDaysInFirstWeek = chineseCalendar.GetMinimalDaysInFirstWeek();
2209596a2c1Sopenharmony_ci    EXPECT_EQ(minimalDaysInFirstWeek, 3);
2219596a2c1Sopenharmony_ci    I18nCalendar copticCalendar("zh-Hans", CalendarType::COPTIC);
2229596a2c1Sopenharmony_ci    copticCalendar.SetFirstDayOfWeek(2);
2239596a2c1Sopenharmony_ci    int32_t firstDayOfWeek = copticCalendar.GetFirstDayOfWeek();
2249596a2c1Sopenharmony_ci    EXPECT_EQ(firstDayOfWeek, 2);
2259596a2c1Sopenharmony_ci    I18nCalendar ethiopicCalendar("zh-Hans", CalendarType::ETHIOPIC);
2269596a2c1Sopenharmony_ci    int64_t date = 1687244448234;
2279596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
2289596a2c1Sopenharmony_ci    bool isWeekend = ethiopicCalendar.IsWeekend(date, status);
2299596a2c1Sopenharmony_ci    EXPECT_EQ(isWeekend, false);
2309596a2c1Sopenharmony_ci    I18nCalendar hebrewCalendar("zh-Hans", CalendarType::HEBREW);
2319596a2c1Sopenharmony_ci    std::string displayLocaleTag = "en-US";
2329596a2c1Sopenharmony_ci    std::string displayName = hebrewCalendar.GetDisplayName(displayLocaleTag);
2339596a2c1Sopenharmony_ci    EXPECT_EQ(displayName, "Hebrew Calendar");
2349596a2c1Sopenharmony_ci    I18nCalendar gregoryCalendar("zh-Hans", CalendarType::GREGORY);
2359596a2c1Sopenharmony_ci    gregoryCalendar.Set(UCalendarDateFields::UCAL_MONTH, 2);
2369596a2c1Sopenharmony_ci    int32_t month = gregoryCalendar.Get(UCalendarDateFields::UCAL_MONTH);
2379596a2c1Sopenharmony_ci    EXPECT_EQ(month, 2);
2389596a2c1Sopenharmony_ci    I18nCalendar indianCalendar("zh-Hans", CalendarType::INDIAN);
2399596a2c1Sopenharmony_ci    indianCalendar.Set(UCalendarDateFields::UCAL_WEEK_OF_YEAR, 10);
2409596a2c1Sopenharmony_ci    int32_t weekOfYear = indianCalendar.Get(UCalendarDateFields::UCAL_WEEK_OF_YEAR);
2419596a2c1Sopenharmony_ci    EXPECT_EQ(weekOfYear, 10);
2429596a2c1Sopenharmony_ci    I18nCalendar islamicCivilCalendar("zh-Hans", CalendarType::ISLAMIC_CIVIL);
2439596a2c1Sopenharmony_ci    islamicCivilCalendar.Set(UCalendarDateFields::UCAL_WEEK_OF_MONTH, 2);
2449596a2c1Sopenharmony_ci    int32_t weekOfMonth = islamicCivilCalendar.Get(UCalendarDateFields::UCAL_WEEK_OF_MONTH);
2459596a2c1Sopenharmony_ci    EXPECT_EQ(weekOfMonth, 2);
2469596a2c1Sopenharmony_ci    I18nCalendar islamicTblaCalendar("zh-Hans", CalendarType::ISLAMIC_TBLA);
2479596a2c1Sopenharmony_ci    islamicTblaCalendar.Set(UCalendarDateFields::UCAL_DATE, 3);
2489596a2c1Sopenharmony_ci    int32_t dateValue = islamicTblaCalendar.Get(UCalendarDateFields::UCAL_DATE);
2499596a2c1Sopenharmony_ci    EXPECT_EQ(dateValue, 3);
2509596a2c1Sopenharmony_ci    I18nCalendar islamicUmalquraCalendar("zh-Hans", CalendarType::ISLAMIC_UMALQURA);
2519596a2c1Sopenharmony_ci    islamicUmalquraCalendar.Set(UCalendarDateFields::UCAL_DAY_OF_YEAR, 123);
2529596a2c1Sopenharmony_ci    int32_t dayOfYear = islamicUmalquraCalendar.Get(UCalendarDateFields::UCAL_DAY_OF_YEAR);
2539596a2c1Sopenharmony_ci    EXPECT_EQ(dayOfYear, 123);
2549596a2c1Sopenharmony_ci    I18nCalendar japaneseCalendar("zh-Hans", CalendarType::JAPANESE);
2559596a2c1Sopenharmony_ci    japaneseCalendar.Set(UCalendarDateFields::UCAL_DAY_OF_WEEK, 3);
2569596a2c1Sopenharmony_ci    int32_t dayOfWeek = japaneseCalendar.Get(UCalendarDateFields::UCAL_DAY_OF_WEEK);
2579596a2c1Sopenharmony_ci    EXPECT_EQ(dayOfWeek, 3);
2589596a2c1Sopenharmony_ci}
2599596a2c1Sopenharmony_ci
2609596a2c1Sopenharmony_ci/**
2619596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest007
2629596a2c1Sopenharmony_ci * @tc.desc: Test I18n I18nCalendar
2639596a2c1Sopenharmony_ci * @tc.type: FUNC
2649596a2c1Sopenharmony_ci */
2659596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest007, TestSize.Level1)
2669596a2c1Sopenharmony_ci{
2679596a2c1Sopenharmony_ci    I18nCalendar persianTblaCalendar("zh-Hans", CalendarType::PERSIAN);
2689596a2c1Sopenharmony_ci    persianTblaCalendar.Set(UCalendarDateFields::UCAL_DAY_OF_WEEK_IN_MONTH, 1);
2699596a2c1Sopenharmony_ci    int32_t dayOfWeekInMonth = persianTblaCalendar.Get(UCalendarDateFields::UCAL_DAY_OF_WEEK_IN_MONTH);
2709596a2c1Sopenharmony_ci    EXPECT_EQ(dayOfWeekInMonth, 1);
2719596a2c1Sopenharmony_ci    I18nCalendar defaultCalendar("zh-Hans", CalendarType::UNDEFINED);
2729596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_HOUR, 12);
2739596a2c1Sopenharmony_ci    int32_t hour = defaultCalendar.Get(UCalendarDateFields::UCAL_HOUR);
2749596a2c1Sopenharmony_ci    EXPECT_EQ(hour, 0);
2759596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_YEAR, 100);
2769596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_YEAR, 100);
2779596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_YEAR), 200);
2789596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_MONTH, 10);
2799596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_MONTH, 2);
2809596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_MONTH), 0);
2819596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_DATE, 20);
2829596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_DATE, 15);
2839596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_DATE), 4);
2849596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_HOUR, 10);
2859596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_HOUR, 11);
2869596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_HOUR), 9);
2879596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_MINUTE, 31);
2889596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_MINUTE, 31);
2899596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_MINUTE), 2);
2909596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_SECOND, 21);
2919596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_SECOND, 51);
2929596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_SECOND), 12);
2939596a2c1Sopenharmony_ci    defaultCalendar.Set(UCalendarDateFields::UCAL_MILLISECOND, 1000);
2949596a2c1Sopenharmony_ci    defaultCalendar.Add(UCalendarDateFields::UCAL_MILLISECOND, 165);
2959596a2c1Sopenharmony_ci    EXPECT_EQ(defaultCalendar.Get(UCalendarDateFields::UCAL_MILLISECOND), 165);
2969596a2c1Sopenharmony_ci    defaultCalendar.Set(2023, 8, 2);
2979596a2c1Sopenharmony_ci    UDate millis = defaultCalendar.GetTimeInMillis();
2989596a2c1Sopenharmony_ci    I18nCalendar checkCalendar("zh-Hans", CalendarType::UNDEFINED);
2999596a2c1Sopenharmony_ci    checkCalendar.SetTime(millis);
3009596a2c1Sopenharmony_ci    EXPECT_EQ(checkCalendar.Get(UCalendarDateFields::UCAL_YEAR), 2023);
3019596a2c1Sopenharmony_ci    EXPECT_EQ(checkCalendar.Get(UCalendarDateFields::UCAL_MONTH), 8);
3029596a2c1Sopenharmony_ci    EXPECT_EQ(checkCalendar.Get(UCalendarDateFields::UCAL_DATE), 2);
3039596a2c1Sopenharmony_ci    defaultCalendar.SetTime(1684742124645);
3049596a2c1Sopenharmony_ci    int32_t compareDays = defaultCalendar.CompareDays(1684742124650);
3059596a2c1Sopenharmony_ci    EXPECT_EQ(compareDays, 1);
3069596a2c1Sopenharmony_ci}
3079596a2c1Sopenharmony_ci
3089596a2c1Sopenharmony_ci/**
3099596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest008
3109596a2c1Sopenharmony_ci * @tc.desc: Test I18n I18nBreakIterator
3119596a2c1Sopenharmony_ci * @tc.type: FUNC
3129596a2c1Sopenharmony_ci */
3139596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest008, TestSize.Level1)
3149596a2c1Sopenharmony_ci{
3159596a2c1Sopenharmony_ci    std::string fakeLocaleTag = "FakeLocaleTag";
3169596a2c1Sopenharmony_ci    I18nBreakIterator brkIterator(fakeLocaleTag);
3179596a2c1Sopenharmony_ci    int32_t res = brkIterator.Current();
3189596a2c1Sopenharmony_ci    EXPECT_EQ(res, 0);
3199596a2c1Sopenharmony_ci    res = brkIterator.First();
3209596a2c1Sopenharmony_ci    EXPECT_EQ(res, 0);
3219596a2c1Sopenharmony_ci    res = brkIterator.Last();
3229596a2c1Sopenharmony_ci    EXPECT_EQ(res, 0);
3239596a2c1Sopenharmony_ci    res = brkIterator.Previous();
3249596a2c1Sopenharmony_ci    EXPECT_EQ(res, -1);
3259596a2c1Sopenharmony_ci    int32_t offset = 1;
3269596a2c1Sopenharmony_ci    res = brkIterator.Next(offset);
3279596a2c1Sopenharmony_ci    EXPECT_EQ(res, -1);
3289596a2c1Sopenharmony_ci    res = brkIterator.Next();
3299596a2c1Sopenharmony_ci    EXPECT_EQ(res, -1);
3309596a2c1Sopenharmony_ci    res = brkIterator.Following(offset);
3319596a2c1Sopenharmony_ci    EXPECT_EQ(res, -1);
3329596a2c1Sopenharmony_ci    bool status = brkIterator.IsBoundary(offset);
3339596a2c1Sopenharmony_ci    EXPECT_FALSE(status);
3349596a2c1Sopenharmony_ci
3359596a2c1Sopenharmony_ci    std::string localeTag = "en-Latn-US";
3369596a2c1Sopenharmony_ci    I18nBreakIterator enBrkIterator(localeTag);
3379596a2c1Sopenharmony_ci    std::string text = "Test I18nBreakIterator";
3389596a2c1Sopenharmony_ci    enBrkIterator.SetText(text.c_str());
3399596a2c1Sopenharmony_ci    std::string resText;
3409596a2c1Sopenharmony_ci    enBrkIterator.GetText(resText);
3419596a2c1Sopenharmony_ci    EXPECT_EQ(resText, text);
3429596a2c1Sopenharmony_ci    res = enBrkIterator.Next();
3439596a2c1Sopenharmony_ci    EXPECT_EQ(res, 5);
3449596a2c1Sopenharmony_ci}
3459596a2c1Sopenharmony_ci
3469596a2c1Sopenharmony_ci/**
3479596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest009
3489596a2c1Sopenharmony_ci * @tc.desc: Test I18n MeasureData GetDefaultPreferredUnit
3499596a2c1Sopenharmony_ci * @tc.type: FUNC
3509596a2c1Sopenharmony_ci */
3519596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest009, TestSize.Level1)
3529596a2c1Sopenharmony_ci{
3539596a2c1Sopenharmony_ci    std::string regionTags[] = {"GB", "US", "CN"};
3549596a2c1Sopenharmony_ci    std::string usage = "length";
3559596a2c1Sopenharmony_ci    std::vector<std::string> units;
3569596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags) / sizeof(std::string); ++i) {
3579596a2c1Sopenharmony_ci        GetDefaultPreferredUnit(regionTags[i], usage, units);
3589596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 3);
3599596a2c1Sopenharmony_ci        units.clear();
3609596a2c1Sopenharmony_ci    }
3619596a2c1Sopenharmony_ci}
3629596a2c1Sopenharmony_ci
3639596a2c1Sopenharmony_ci/**
3649596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest010
3659596a2c1Sopenharmony_ci * @tc.desc: Test I18n MeasureData GetFallbackPreferredUnit
3669596a2c1Sopenharmony_ci * @tc.type: FUNC
3679596a2c1Sopenharmony_ci */
3689596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest010, TestSize.Level1)
3699596a2c1Sopenharmony_ci{
3709596a2c1Sopenharmony_ci    std::string regionTags1[] = {"MX", "NL", "NO", "PL", "RU"};
3719596a2c1Sopenharmony_ci    std::string usage = "length-person-informal";
3729596a2c1Sopenharmony_ci    std::vector<std::string> units;
3739596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags1) / sizeof(std::string); ++i) {
3749596a2c1Sopenharmony_ci        GetFallbackPreferredUnit(regionTags1[i], usage, units);
3759596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 2);
3769596a2c1Sopenharmony_ci        units.clear();
3779596a2c1Sopenharmony_ci    }
3789596a2c1Sopenharmony_ci
3799596a2c1Sopenharmony_ci    std::string regionTag2 = "SE";
3809596a2c1Sopenharmony_ci    usage = "length-person";
3819596a2c1Sopenharmony_ci    GetFallbackPreferredUnit(regionTag2, usage, units);
3829596a2c1Sopenharmony_ci    EXPECT_EQ(units.size(), 2);
3839596a2c1Sopenharmony_ci    units.clear();
3849596a2c1Sopenharmony_ci
3859596a2c1Sopenharmony_ci    std::string regionTags3[] = {"US", "CN"};
3869596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags3) / sizeof(std::string); ++i) {
3879596a2c1Sopenharmony_ci        GetFallbackPreferredUnit(regionTags3[i], usage, units);
3889596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 1);
3899596a2c1Sopenharmony_ci        units.clear();
3909596a2c1Sopenharmony_ci    }
3919596a2c1Sopenharmony_ci}
3929596a2c1Sopenharmony_ci
3939596a2c1Sopenharmony_ci/**
3949596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest011
3959596a2c1Sopenharmony_ci * @tc.desc: Test I18n MeasureData GetRestPreferredUnit
3969596a2c1Sopenharmony_ci * @tc.type: FUNC
3979596a2c1Sopenharmony_ci */
3989596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest011, TestSize.Level1)
3999596a2c1Sopenharmony_ci{
4009596a2c1Sopenharmony_ci    std::string regionTags1[] = {"CA", "IN"};
4019596a2c1Sopenharmony_ci    std::string usage = "length-person";
4029596a2c1Sopenharmony_ci    std::vector<std::string> units;
4039596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags1) / sizeof(std::string); ++i) {
4049596a2c1Sopenharmony_ci        GetRestPreferredUnit(regionTags1[i], usage, units);
4059596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 1);
4069596a2c1Sopenharmony_ci        units.clear();
4079596a2c1Sopenharmony_ci    }
4089596a2c1Sopenharmony_ci
4099596a2c1Sopenharmony_ci    std::string regionTags2[] = {"CN", "DK", "PT", "DE", "GB"};
4109596a2c1Sopenharmony_ci    usage = "length-person-informal";
4119596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags2) / sizeof(std::string); ++i) {
4129596a2c1Sopenharmony_ci        GetRestPreferredUnit(regionTags2[i], usage, units);
4139596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 2);
4149596a2c1Sopenharmony_ci        units.clear();
4159596a2c1Sopenharmony_ci    }
4169596a2c1Sopenharmony_ci
4179596a2c1Sopenharmony_ci    std::string regionTag3 = "KR";
4189596a2c1Sopenharmony_ci    usage = "speed-wind";
4199596a2c1Sopenharmony_ci    GetRestPreferredUnit(regionTag3, usage, units);
4209596a2c1Sopenharmony_ci    EXPECT_EQ(units.size(), 1);
4219596a2c1Sopenharmony_ci    units.clear();
4229596a2c1Sopenharmony_ci
4239596a2c1Sopenharmony_ci    std::string regionTag4 = "XX";
4249596a2c1Sopenharmony_ci    usage = "fake usage";
4259596a2c1Sopenharmony_ci    GetRestPreferredUnit(regionTag4, usage, units);
4269596a2c1Sopenharmony_ci    EXPECT_EQ(units.size(), 0);
4279596a2c1Sopenharmony_ci}
4289596a2c1Sopenharmony_ci
4299596a2c1Sopenharmony_ci/**
4309596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest012
4319596a2c1Sopenharmony_ci * @tc.desc: Test I18n MeasureData GetPreferredUnit
4329596a2c1Sopenharmony_ci * @tc.type: FUNC
4339596a2c1Sopenharmony_ci */
4349596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest012, TestSize.Level1)
4359596a2c1Sopenharmony_ci{
4369596a2c1Sopenharmony_ci    std::string regionTags1[] = {
4379596a2c1Sopenharmony_ci        "AT", "BE", "DZ", "EG", "ES", "FR", "HK", "ID", "IL", "IT", "JO", "MY", "SA", "TR", "VN"
4389596a2c1Sopenharmony_ci    };
4399596a2c1Sopenharmony_ci    std::string usage = "length-person";
4409596a2c1Sopenharmony_ci    std::vector<std::string> units;
4419596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags1) / sizeof(std::string); ++i) {
4429596a2c1Sopenharmony_ci        GetPreferredUnit(regionTags1[i], usage, units);
4439596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 2);
4449596a2c1Sopenharmony_ci        units.clear();
4459596a2c1Sopenharmony_ci    }
4469596a2c1Sopenharmony_ci
4479596a2c1Sopenharmony_ci    std::string regionTag2 = "BR";
4489596a2c1Sopenharmony_ci    usage = "length-person-informal";
4499596a2c1Sopenharmony_ci    GetPreferredUnit(regionTag2, usage, units);
4509596a2c1Sopenharmony_ci    EXPECT_EQ(units.size(), 2);
4519596a2c1Sopenharmony_ci    units.clear();
4529596a2c1Sopenharmony_ci
4539596a2c1Sopenharmony_ci    std::string regionTags3[] = {"BS", "BZ", "PR", "PW"};
4549596a2c1Sopenharmony_ci    usage = "temperature-weather";
4559596a2c1Sopenharmony_ci    for (size_t i = 0; i < sizeof(regionTags3) / sizeof(std::string); i++) {
4569596a2c1Sopenharmony_ci        GetPreferredUnit(regionTags3[i], usage, units);
4579596a2c1Sopenharmony_ci        EXPECT_EQ(units.size(), 1);
4589596a2c1Sopenharmony_ci        units.clear();
4599596a2c1Sopenharmony_ci    }
4609596a2c1Sopenharmony_ci
4619596a2c1Sopenharmony_ci    std::string regionTag4 = "XX";
4629596a2c1Sopenharmony_ci    usage = "fake usage";
4639596a2c1Sopenharmony_ci    GetPreferredUnit(regionTag4, usage, units);
4649596a2c1Sopenharmony_ci    EXPECT_EQ(units.size(), 0);
4659596a2c1Sopenharmony_ci}
4669596a2c1Sopenharmony_ci
4679596a2c1Sopenharmony_ci/**
4689596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest013
4699596a2c1Sopenharmony_ci * @tc.desc: Test I18n MeasureData
4709596a2c1Sopenharmony_ci * @tc.type: FUNC
4719596a2c1Sopenharmony_ci */
4729596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest013, TestSize.Level1)
4739596a2c1Sopenharmony_ci{
4749596a2c1Sopenharmony_ci    double value = 10.0;
4759596a2c1Sopenharmony_ci    std::string fromUnit = "acre";
4769596a2c1Sopenharmony_ci    std::string fromMeasSys = "US";
4779596a2c1Sopenharmony_ci    std::string toUnit = "foot";
4789596a2c1Sopenharmony_ci    std::string toMeasSys = "US";
4799596a2c1Sopenharmony_ci    int status = Convert(value, fromUnit, fromMeasSys, toUnit, toMeasSys);
4809596a2c1Sopenharmony_ci    EXPECT_EQ(status, 0);
4819596a2c1Sopenharmony_ci
4829596a2c1Sopenharmony_ci    std::string fakeUnit = "fake unit";
4839596a2c1Sopenharmony_ci    status = Convert(value, fakeUnit, fromMeasSys, toUnit, toMeasSys);
4849596a2c1Sopenharmony_ci    EXPECT_EQ(status, 0);
4859596a2c1Sopenharmony_ci    status = Convert(value, fromUnit, fromMeasSys, fakeUnit, toMeasSys);
4869596a2c1Sopenharmony_ci    EXPECT_EQ(status, 0);
4879596a2c1Sopenharmony_ci
4889596a2c1Sopenharmony_ci    toUnit = "hectare";
4899596a2c1Sopenharmony_ci    status = Convert(value, fromUnit, fromMeasSys, toUnit, toMeasSys);
4909596a2c1Sopenharmony_ci    EXPECT_EQ(status, 1);
4919596a2c1Sopenharmony_ci    EXPECT_TRUE(fabs(value - 4.0468564) < 1e-6);
4929596a2c1Sopenharmony_ci
4939596a2c1Sopenharmony_ci    std::string unit = "tablespoon";
4949596a2c1Sopenharmony_ci    std::string measSys = "UK";
4959596a2c1Sopenharmony_ci    std::vector<double> factors = {0.0, 0.0};
4969596a2c1Sopenharmony_ci    ComputeFactorValue(unit, measSys, factors);
4979596a2c1Sopenharmony_ci    EXPECT_EQ(factors.size(), 2);
4989596a2c1Sopenharmony_ci    EXPECT_TRUE(fabs(factors[0] - 1.77582e-05) < 1e-6);
4999596a2c1Sopenharmony_ci    unit = "acre";
5009596a2c1Sopenharmony_ci    factors = {0.0, 0.0};
5019596a2c1Sopenharmony_ci    ComputeFactorValue(unit, measSys, factors);
5029596a2c1Sopenharmony_ci    EXPECT_EQ(factors.size(), 2);
5039596a2c1Sopenharmony_ci    EXPECT_TRUE(fabs(factors[0] - 4046.856422) < 1e-6);
5049596a2c1Sopenharmony_ci
5059596a2c1Sopenharmony_ci    double res = ComputeSIPrefixValue(unit);
5069596a2c1Sopenharmony_ci    EXPECT_TRUE(fabs(res - 0) < 1e-6);
5079596a2c1Sopenharmony_ci    unit = "deci";
5089596a2c1Sopenharmony_ci    res = ComputeSIPrefixValue(unit);
5099596a2c1Sopenharmony_ci    EXPECT_TRUE(fabs(res - 0.1) < 1e-6);
5109596a2c1Sopenharmony_ci
5119596a2c1Sopenharmony_ci    unit = "square-acre";
5129596a2c1Sopenharmony_ci    factors = {0.0, 0.0};
5139596a2c1Sopenharmony_ci    ComputePowerValue(unit, measSys, factors);
5149596a2c1Sopenharmony_ci    EXPECT_EQ(factors.size(), 2);
5159596a2c1Sopenharmony_ci
5169596a2c1Sopenharmony_ci    unit = "fake-per-hour";
5179596a2c1Sopenharmony_ci    factors = {0.0, 0.0};
5189596a2c1Sopenharmony_ci    status = ComputeValue(unit, measSys, factors);
5199596a2c1Sopenharmony_ci    EXPECT_EQ(status, 0);
5209596a2c1Sopenharmony_ci    unit = "kilometer-per-fake";
5219596a2c1Sopenharmony_ci    factors = {0.0, 0.0};
5229596a2c1Sopenharmony_ci    status = ComputeValue(unit, measSys, factors);
5239596a2c1Sopenharmony_ci    EXPECT_EQ(status, 0);
5249596a2c1Sopenharmony_ci}
5259596a2c1Sopenharmony_ci
5269596a2c1Sopenharmony_ci/**
5279596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest014
5289596a2c1Sopenharmony_ci * @tc.desc: Test I18n PhoneNumberFormat
5299596a2c1Sopenharmony_ci * @tc.type: FUNC
5309596a2c1Sopenharmony_ci */
5319596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest014, TestSize.Level1)
5329596a2c1Sopenharmony_ci{
5339596a2c1Sopenharmony_ci    std::string countryTag = "";
5349596a2c1Sopenharmony_ci    std::map<std::string, std::string> options = {
5359596a2c1Sopenharmony_ci        {"type", "INTERNATIONAL"}
5369596a2c1Sopenharmony_ci    };
5379596a2c1Sopenharmony_ci    std::unique_ptr<PhoneNumberFormat> formatter = PhoneNumberFormat::CreateInstance(countryTag, options);
5389596a2c1Sopenharmony_ci    std::string fakePhoneNumber = "93827393872723482";
5399596a2c1Sopenharmony_ci    bool isValid = formatter->isValidPhoneNumber(fakePhoneNumber);
5409596a2c1Sopenharmony_ci    EXPECT_FALSE(isValid);
5419596a2c1Sopenharmony_ci    std::string formattedPhoneNumber = formatter->format(fakePhoneNumber);
5429596a2c1Sopenharmony_ci    EXPECT_EQ(formattedPhoneNumber, "");
5439596a2c1Sopenharmony_ci    std::unique_ptr<PhoneNumberFormat> formatter1 = std::make_unique<PhoneNumberFormatMock>("XK", options);
5449596a2c1Sopenharmony_ci    std::string blocklRegion = formatter1->getLocationName("0038312345678", "zh-CN");
5459596a2c1Sopenharmony_ci    EXPECT_EQ(blocklRegion, "");
5469596a2c1Sopenharmony_ci    std::unique_ptr<PhoneNumberFormat> formatter2 = std::make_unique<PhoneNumberFormatMock>("CN", options);
5479596a2c1Sopenharmony_ci    std::string blocklCity = formatter2->getLocationName("13731630016", "zh-CN");
5489596a2c1Sopenharmony_ci    EXPECT_EQ(blocklCity, "");
5499596a2c1Sopenharmony_ci    std::string replaceCity = formatter2->getLocationName("13731930016", "zh-CN");
5509596a2c1Sopenharmony_ci    EXPECT_EQ(replaceCity, "安徽省宣城市2");
5519596a2c1Sopenharmony_ci    std::string number192 = "19200707087";
5529596a2c1Sopenharmony_ci    std::string formattedNumber = formatter2->format(number192);
5539596a2c1Sopenharmony_ci    EXPECT_EQ(formattedNumber, "+86 192 0070 7087");
5549596a2c1Sopenharmony_ci}
5559596a2c1Sopenharmony_ci
5569596a2c1Sopenharmony_ci/**
5579596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest015
5589596a2c1Sopenharmony_ci * @tc.desc: Test I18n I18nTimeZone
5599596a2c1Sopenharmony_ci * @tc.type: FUNC
5609596a2c1Sopenharmony_ci */
5619596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest015, TestSize.Level1)
5629596a2c1Sopenharmony_ci{
5639596a2c1Sopenharmony_ci    std::string id = "Asia/Shanghai";
5649596a2c1Sopenharmony_ci    bool isZoneID = true;
5659596a2c1Sopenharmony_ci    I18nTimeZone timezone1(id, isZoneID);
5669596a2c1Sopenharmony_ci    std::string timezoneId = timezone1.GetID();
5679596a2c1Sopenharmony_ci    EXPECT_EQ(timezoneId, "Asia/Shanghai");
5689596a2c1Sopenharmony_ci
5699596a2c1Sopenharmony_ci    id = "Shanghai";
5709596a2c1Sopenharmony_ci    isZoneID = false;
5719596a2c1Sopenharmony_ci    I18nTimeZone timezone2(id, isZoneID);
5729596a2c1Sopenharmony_ci    timezoneId = timezone2.GetID();
5739596a2c1Sopenharmony_ci    EXPECT_EQ(timezoneId, "Asia/Shanghai");
5749596a2c1Sopenharmony_ci
5759596a2c1Sopenharmony_ci    id = "Auckland";
5769596a2c1Sopenharmony_ci    I18nTimeZone timezone3(id, isZoneID);
5779596a2c1Sopenharmony_ci    timezoneId = timezone3.GetID();
5789596a2c1Sopenharmony_ci    EXPECT_EQ(timezoneId, "Pacific/Auckland");
5799596a2c1Sopenharmony_ci    std::string localeTag = "en-Latn-US";
5809596a2c1Sopenharmony_ci    std::string displayName = timezone3.GetDisplayName(localeTag);
5819596a2c1Sopenharmony_ci    EXPECT_EQ(timezoneId, "Pacific/Auckland");
5829596a2c1Sopenharmony_ci
5839596a2c1Sopenharmony_ci    std::string fakeId = "fake city id";
5849596a2c1Sopenharmony_ci    std::string cityDisplayName = I18nTimeZone::GetCityDisplayName(fakeId, localeTag);
5859596a2c1Sopenharmony_ci    EXPECT_EQ(cityDisplayName, "");
5869596a2c1Sopenharmony_ci
5879596a2c1Sopenharmony_ci    cityDisplayName = I18nTimeZone::GetCityDisplayName(id, localeTag);
5889596a2c1Sopenharmony_ci    EXPECT_EQ(cityDisplayName, "Auckland (New Zealand)");
5899596a2c1Sopenharmony_ci
5909596a2c1Sopenharmony_ci    std::string fakeLocale = "fake locale tag";
5919596a2c1Sopenharmony_ci    cityDisplayName = I18nTimeZone::GetCityDisplayName(id, fakeLocale);
5929596a2c1Sopenharmony_ci    EXPECT_EQ(cityDisplayName, "");
5939596a2c1Sopenharmony_ci
5949596a2c1Sopenharmony_ci    id = "Pacific/Enderbury";
5959596a2c1Sopenharmony_ci    std::unique_ptr<I18nTimeZone> timezone4 = std::make_unique<I18nTimeZoneMock>(id, true);
5969596a2c1Sopenharmony_ci    std::string cityName = timezone4->GetDisplayName("zh-CN", false);
5979596a2c1Sopenharmony_ci    EXPECT_EQ(cityName, "菲尼克斯群岛标准时间");
5989596a2c1Sopenharmony_ci}
5999596a2c1Sopenharmony_ci
6009596a2c1Sopenharmony_ci/**
6019596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest016
6029596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6039596a2c1Sopenharmony_ci * @tc.type: FUNC
6049596a2c1Sopenharmony_ci */
6059596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest016, TestSize.Level1)
6069596a2c1Sopenharmony_ci{
6079596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
6089596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6099596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
6109596a2c1Sopenharmony_ci    std::string message = "您好,您的包裹已送至指定地点,请尽快签收:快递员:刘某某,手机:15912345678,QQ:123456789。";
6119596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
6129596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
6139596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
6149596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 32);
6159596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 43);
6169596a2c1Sopenharmony_ci}
6179596a2c1Sopenharmony_ci
6189596a2c1Sopenharmony_ci/**
6199596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest017
6209596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6219596a2c1Sopenharmony_ci * @tc.type: FUNC
6229596a2c1Sopenharmony_ci */
6239596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest017, TestSize.Level1)
6249596a2c1Sopenharmony_ci{
6259596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
6269596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6279596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
6289596a2c1Sopenharmony_ci    std::string message = "您好,您的包裹已送至指定地点,请尽快签收:快递员:刘某某,手机:15912345678 15512345678。";
6299596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
6309596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
6319596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
6329596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 32);
6339596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 43);
6349596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 44);
6359596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 55);
6369596a2c1Sopenharmony_ci}
6379596a2c1Sopenharmony_ci
6389596a2c1Sopenharmony_ci/**
6399596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest018
6409596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6419596a2c1Sopenharmony_ci * @tc.type: FUNC
6429596a2c1Sopenharmony_ci */
6439596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest018, TestSize.Level1)
6449596a2c1Sopenharmony_ci{
6459596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
6469596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6479596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
6489596a2c1Sopenharmony_ci    std::string message = "The stunning xxxxxx xxx in Verbier is availble for Christmas - call +44 (0)20 1234 5678.";
6499596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
6509596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
6519596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
6529596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 68);
6539596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 87);
6549596a2c1Sopenharmony_ci}
6559596a2c1Sopenharmony_ci
6569596a2c1Sopenharmony_ci/**
6579596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest019
6589596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6599596a2c1Sopenharmony_ci * @tc.type: FUNC
6609596a2c1Sopenharmony_ci */
6619596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest019, TestSize.Level1)
6629596a2c1Sopenharmony_ci{
6639596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
6649596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6659596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
6669596a2c1Sopenharmony_ci    std::string message = "RT @missingpeople: RT 32 yo missing since 26/09/2013 from Newry, NI. Seen him? Call 116000.";
6679596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
6689596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
6699596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
6709596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 84);
6719596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 90);
6729596a2c1Sopenharmony_ci}
6739596a2c1Sopenharmony_ci
6749596a2c1Sopenharmony_ci/**
6759596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest020
6769596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6779596a2c1Sopenharmony_ci * @tc.type: FUNC
6789596a2c1Sopenharmony_ci */
6799596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest020, TestSize.Level1)
6809596a2c1Sopenharmony_ci{
6819596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
6829596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6839596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
6849596a2c1Sopenharmony_ci    std::string message = "xxxx海滩 xxxxx xxxxxx街上的饰品店,皮革花朵戒指10000印尼盾,不到10块人民币。";
6859596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
6869596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
6879596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 0);
6889596a2c1Sopenharmony_ci}
6899596a2c1Sopenharmony_ci
6909596a2c1Sopenharmony_ci/**
6919596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest021
6929596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
6939596a2c1Sopenharmony_ci * @tc.type: FUNC
6949596a2c1Sopenharmony_ci */
6959596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest021, TestSize.Level1)
6969596a2c1Sopenharmony_ci{
6979596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
6989596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
6999596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7009596a2c1Sopenharmony_ci    std::string message = "New Job: Java Developer, Dublin, Republic of Ireland, $350000.00 - $45000 per annum.";
7019596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7029596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7039596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 0);
7049596a2c1Sopenharmony_ci}
7059596a2c1Sopenharmony_ci
7069596a2c1Sopenharmony_ci/**
7079596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest022
7089596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
7099596a2c1Sopenharmony_ci * @tc.type: FUNC
7109596a2c1Sopenharmony_ci */
7119596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest022, TestSize.Level1)
7129596a2c1Sopenharmony_ci{
7139596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
7149596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
7159596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7169596a2c1Sopenharmony_ci    std::string message = "您好,关于您的问题,可以拨打(0511) 8812 1234咨询,如果还有其他疑问,可联系刘某某(15512345678)";
7179596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7189596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7199596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
7209596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 14);
7219596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 30);
7229596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 49);
7239596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 60);
7249596a2c1Sopenharmony_ci}
7259596a2c1Sopenharmony_ci
7269596a2c1Sopenharmony_ci/**
7279596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest023
7289596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
7299596a2c1Sopenharmony_ci * @tc.type: FUNC
7309596a2c1Sopenharmony_ci */
7319596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest023, TestSize.Level1)
7329596a2c1Sopenharmony_ci{
7339596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
7349596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
7359596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7369596a2c1Sopenharmony_ci    std::string message = "给10086/10010发了一条短信:“我爱你”,收到了回复:尊敬的用户,我也爱您。";
7379596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7389596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7399596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
7409596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 1);
7419596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 6);
7429596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 7);
7439596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 12);
7449596a2c1Sopenharmony_ci}
7459596a2c1Sopenharmony_ci
7469596a2c1Sopenharmony_ci/**
7479596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest024
7489596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
7499596a2c1Sopenharmony_ci * @tc.type: FUNC
7509596a2c1Sopenharmony_ci */
7519596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest024, TestSize.Level1)
7529596a2c1Sopenharmony_ci{
7539596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
7549596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
7559596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7569596a2c1Sopenharmony_ci    std::string message = "您好,您的包裹已送至指定地点,请尽快签收:快递员:刘某某,手机:159/1234/5678,QQ:123456789。";
7579596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7589596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7599596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
7609596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 32);
7619596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 45);
7629596a2c1Sopenharmony_ci}
7639596a2c1Sopenharmony_ci
7649596a2c1Sopenharmony_ci/**
7659596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest025
7669596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
7679596a2c1Sopenharmony_ci * @tc.type: FUNC
7689596a2c1Sopenharmony_ci */
7699596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest025, TestSize.Level1)
7709596a2c1Sopenharmony_ci{
7719596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
7729596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
7739596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7749596a2c1Sopenharmony_ci    std::string message = "您好,您的包裹已送至指定地点,请尽快签收:快递员:刘某某,手机:15912345678/15512345678。";
7759596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7769596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7779596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
7789596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 32);
7799596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 43);
7809596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 44);
7819596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 55);
7829596a2c1Sopenharmony_ci}
7839596a2c1Sopenharmony_ci
7849596a2c1Sopenharmony_ci/**
7859596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest026
7869596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
7879596a2c1Sopenharmony_ci * @tc.type: FUNC
7889596a2c1Sopenharmony_ci */
7899596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest026, TestSize.Level1)
7909596a2c1Sopenharmony_ci{
7919596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
7929596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
7939596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
7949596a2c1Sopenharmony_ci    std::string message = "今天一起去看的那个电影太搞笑了,2333333";
7959596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
7969596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
7979596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 0);
7989596a2c1Sopenharmony_ci}
7999596a2c1Sopenharmony_ci
8009596a2c1Sopenharmony_ci/**
8019596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest027
8029596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8039596a2c1Sopenharmony_ci * @tc.type: FUNC
8049596a2c1Sopenharmony_ci */
8059596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest027, TestSize.Level1)
8069596a2c1Sopenharmony_ci{
8079596a2c1Sopenharmony_ci    std::string localeStr = "pt-PT";
8089596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
8099596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
8109596a2c1Sopenharmony_ci    std::string message = "Se você tiver alguma dúvida, ligue para 912345678 ou 1820 para consulta";
8119596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
8129596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
8139596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
8149596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 40);
8159596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 49);
8169596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 53);
8179596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 57);
8189596a2c1Sopenharmony_ci}
8199596a2c1Sopenharmony_ci
8209596a2c1Sopenharmony_ci/**
8219596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest028
8229596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8239596a2c1Sopenharmony_ci * @tc.type: FUNC
8249596a2c1Sopenharmony_ci */
8259596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest028, TestSize.Level1)
8269596a2c1Sopenharmony_ci{
8279596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
8289596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
8299596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
8309596a2c1Sopenharmony_ci    std::string message = "+44 (0)20 1234 5678 is my phone number. If you need anything, please contact me.";
8319596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
8329596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
8339596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
8349596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 0);
8359596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 19);
8369596a2c1Sopenharmony_ci}
8379596a2c1Sopenharmony_ci
8389596a2c1Sopenharmony_ci/**
8399596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest029
8409596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8419596a2c1Sopenharmony_ci * @tc.type: FUNC
8429596a2c1Sopenharmony_ci */
8439596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest029, TestSize.Level1)
8449596a2c1Sopenharmony_ci{
8459596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
8469596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
8479596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
8489596a2c1Sopenharmony_ci    std::string message = "To book a room, please call (+44 (0)20 1234 5678;ext=588)";
8499596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
8509596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
8519596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
8529596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 29);
8539596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 48);
8549596a2c1Sopenharmony_ci}
8559596a2c1Sopenharmony_ci
8569596a2c1Sopenharmony_ci/**
8579596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest030
8589596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8599596a2c1Sopenharmony_ci * @tc.type: FUNC
8609596a2c1Sopenharmony_ci */
8619596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest030, TestSize.Level1)
8629596a2c1Sopenharmony_ci{
8639596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
8649596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
8659596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
8669596a2c1Sopenharmony_ci    std::string message = "我们提供23 24两种尺寸的屏幕,如有需要,请拨打11808 15512345678。";
8679596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
8689596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
8699596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
8709596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 25);
8719596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 42);
8729596a2c1Sopenharmony_ci}
8739596a2c1Sopenharmony_ci
8749596a2c1Sopenharmony_ci/**
8759596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest031
8769596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8779596a2c1Sopenharmony_ci * @tc.type: FUNC
8789596a2c1Sopenharmony_ci */
8799596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest031, TestSize.Level1)
8809596a2c1Sopenharmony_ci{
8819596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
8829596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
8839596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
8849596a2c1Sopenharmony_ci    std::string message = "售后问题请拨打95528|95188。";
8859596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
8869596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
8879596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 2);
8889596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 7);
8899596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 12);
8909596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][3], 13);
8919596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][4], 18);
8929596a2c1Sopenharmony_ci}
8939596a2c1Sopenharmony_ci
8949596a2c1Sopenharmony_ci/**
8959596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest032
8969596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
8979596a2c1Sopenharmony_ci * @tc.type: FUNC
8989596a2c1Sopenharmony_ci */
8999596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest032, TestSize.Level1)
9009596a2c1Sopenharmony_ci{
9019596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
9029596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9039596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9049596a2c1Sopenharmony_ci    std::string message = "If you need anything, please contact mob:(0)20 1234 5678.";
9059596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
9069596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
9079596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
9089596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 41);
9099596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 56);
9109596a2c1Sopenharmony_ci}
9119596a2c1Sopenharmony_ci
9129596a2c1Sopenharmony_ci/**
9139596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest033
9149596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
9159596a2c1Sopenharmony_ci * @tc.type: FUNC
9169596a2c1Sopenharmony_ci */
9179596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest033, TestSize.Level1)
9189596a2c1Sopenharmony_ci{
9199596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
9209596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9219596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9229596a2c1Sopenharmony_ci    std::string message = "尊敬的客户您好!4G套餐火热申办中,每月最高可获得20G手机上网流量,升级4G套餐享更多优惠。咨询及办理请致电10086。中国移动";
9239596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
9249596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
9259596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][0], 1);
9269596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][1], 55);
9279596a2c1Sopenharmony_ci    EXPECT_EQ(res[0][2], 60);
9289596a2c1Sopenharmony_ci}
9299596a2c1Sopenharmony_ci
9309596a2c1Sopenharmony_ci/**
9319596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest034
9329596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
9339596a2c1Sopenharmony_ci * @tc.type: FUNC
9349596a2c1Sopenharmony_ci */
9359596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest034, TestSize.Level1)
9369596a2c1Sopenharmony_ci{
9379596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
9389596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9399596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9409596a2c1Sopenharmony_ci    std::string message = "今天晚上10点,我们商量一下10月1日至7日的旅游安排。";
9419596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
9429596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
9439596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
9449596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
9459596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 7);
9469596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 14);
9479596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 22);
9489596a2c1Sopenharmony_ci}
9499596a2c1Sopenharmony_ci
9509596a2c1Sopenharmony_ci/**
9519596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest035
9529596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
9539596a2c1Sopenharmony_ci * @tc.type: FUNC
9549596a2c1Sopenharmony_ci */
9559596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest035, TestSize.Level1)
9569596a2c1Sopenharmony_ci{
9579596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
9589596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9599596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9609596a2c1Sopenharmony_ci    std::string message = "7月1日周一到7月5日周五都是工作日,所以在2023年7月6日下午17:00到19:00聚餐。";
9619596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
9629596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
9639596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
9649596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
9659596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 13);
9669596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 22);
9679596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 44);
9689596a2c1Sopenharmony_ci}
9699596a2c1Sopenharmony_ci
9709596a2c1Sopenharmony_ci/**
9719596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest036
9729596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
9739596a2c1Sopenharmony_ci * @tc.type: FUNC
9749596a2c1Sopenharmony_ci */
9759596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest036, TestSize.Level1)
9769596a2c1Sopenharmony_ci{
9779596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
9789596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9799596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9809596a2c1Sopenharmony_ci    std::string message = "昨天8:30:00的会议没有讨论出结果,我们2023年11月11日的8:30:00再开一次会吧。";
9819596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
9829596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
9839596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 1);
9849596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 22);
9859596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 41);
9869596a2c1Sopenharmony_ci}
9879596a2c1Sopenharmony_ci
9889596a2c1Sopenharmony_ci/**
9899596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest037
9909596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
9919596a2c1Sopenharmony_ci * @tc.type: FUNC
9929596a2c1Sopenharmony_ci */
9939596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest037, TestSize.Level1)
9949596a2c1Sopenharmony_ci{
9959596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
9969596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
9979596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
9989596a2c1Sopenharmony_ci    std::string message = "我们2023年10月23日(周六)一起完成作业,并且2023年10月24日周天 晚上8:00上交。";
9999596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10009596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10019596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
10029596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 2);
10039596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 17);
10049596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 26);
10059596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 46);
10069596a2c1Sopenharmony_ci}
10079596a2c1Sopenharmony_ci
10089596a2c1Sopenharmony_ci/**
10099596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest038
10109596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
10119596a2c1Sopenharmony_ci * @tc.type: FUNC
10129596a2c1Sopenharmony_ci */
10139596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest038, TestSize.Level1)
10149596a2c1Sopenharmony_ci{
10159596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
10169596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
10179596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
10189596a2c1Sopenharmony_ci    std::string message = "2023/10/1是国庆节,我们可以在GMT+0800 上午9時30分00秒去参观博物馆,后续星期六 晚上 7:00我们一起吃饭。";
10199596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10209596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10219596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 3);
10229596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
10239596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 9);
10249596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 19);
10259596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 38);
10269596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][5], 47);
10279596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][6], 58);
10289596a2c1Sopenharmony_ci}
10299596a2c1Sopenharmony_ci
10309596a2c1Sopenharmony_ci/**
10319596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest039
10329596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
10339596a2c1Sopenharmony_ci * @tc.type: FUNC
10349596a2c1Sopenharmony_ci */
10359596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest039, TestSize.Level1)
10369596a2c1Sopenharmony_ci{
10379596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
10389596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
10399596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
10409596a2c1Sopenharmony_ci    std::string message = "我们上午 7:30:00 (GMT+8:30)可以去看日出,下午5:00-晚上7:00看日落。";
10419596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10429596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10439596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
10449596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 2);
10459596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 23);
10469596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 30);
10479596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 43);
10489596a2c1Sopenharmony_ci}
10499596a2c1Sopenharmony_ci
10509596a2c1Sopenharmony_ci/**
10519596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest040
10529596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
10539596a2c1Sopenharmony_ci * @tc.type: FUNC
10549596a2c1Sopenharmony_ci */
10559596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest040, TestSize.Level1)
10569596a2c1Sopenharmony_ci{
10579596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
10589596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
10599596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
10609596a2c1Sopenharmony_ci    std::string message = "We'll have dinner at GMT-8:15 PM 17:30:00, and go shopping at tomorrow 8:00.";
10619596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10629596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10639596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
10649596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 21);
10659596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 41);
10669596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 62);
10679596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 75);
10689596a2c1Sopenharmony_ci}
10699596a2c1Sopenharmony_ci
10709596a2c1Sopenharmony_ci/**
10719596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest041
10729596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
10739596a2c1Sopenharmony_ci * @tc.type: FUNC
10749596a2c1Sopenharmony_ci */
10759596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest041, TestSize.Level1)
10769596a2c1Sopenharmony_ci{
10779596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
10789596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
10799596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
10809596a2c1Sopenharmony_ci    std::string message = "Our time zone is GMT+12:00.";
10819596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10829596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10839596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 0);
10849596a2c1Sopenharmony_ci}
10859596a2c1Sopenharmony_ci
10869596a2c1Sopenharmony_ci/**
10879596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest042
10889596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
10899596a2c1Sopenharmony_ci * @tc.type: FUNC
10909596a2c1Sopenharmony_ci */
10919596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest042, TestSize.Level1)
10929596a2c1Sopenharmony_ci{
10939596a2c1Sopenharmony_ci    std::string localeStr = "en-GB";
10949596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
10959596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
10969596a2c1Sopenharmony_ci    std::string message = "The festivities will take place on Sunday, jan 1, 2023, and run until Wed, 1/4/2023";
10979596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
10989596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
10999596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
11009596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 35);
11019596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 54);
11029596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 70);
11039596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 83);
11049596a2c1Sopenharmony_ci}
11059596a2c1Sopenharmony_ci
11069596a2c1Sopenharmony_ci/**
11079596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest043
11089596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
11099596a2c1Sopenharmony_ci * @tc.type: FUNC
11109596a2c1Sopenharmony_ci */
11119596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest043, TestSize.Level1)
11129596a2c1Sopenharmony_ci{
11139596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
11149596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
11159596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
11169596a2c1Sopenharmony_ci    // std::string message = "2023年1月2日至3日周三是一个好日子,上午可以11:00:00(周三)去逛街";
11179596a2c1Sopenharmony_ci    std::string message = "2023年1月2日至3日是一个好日子,12:00:00(2023年1月3日)一起吃饭。";
11189596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
11199596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
11209596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
11219596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
11229596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 12);
11239596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 19);
11249596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 38);
11259596a2c1Sopenharmony_ci}
11269596a2c1Sopenharmony_ci
11279596a2c1Sopenharmony_ci/**
11289596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest044
11299596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
11309596a2c1Sopenharmony_ci * @tc.type: FUNC
11319596a2c1Sopenharmony_ci */
11329596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest044, TestSize.Level1)
11339596a2c1Sopenharmony_ci{
11349596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
11359596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
11369596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
11379596a2c1Sopenharmony_ci    std::string message = "(2023年1月1日)12:00:00聚会,2023年1月2日,16:00:00返回深圳。";
11389596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
11399596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
11409596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
11419596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
11429596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 19);
11439596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 22);
11449596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 40);
11459596a2c1Sopenharmony_ci}
11469596a2c1Sopenharmony_ci
11479596a2c1Sopenharmony_ci
11489596a2c1Sopenharmony_ci/**
11499596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest045
11509596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
11519596a2c1Sopenharmony_ci * @tc.type: FUNC
11529596a2c1Sopenharmony_ci */
11539596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest045, TestSize.Level1)
11549596a2c1Sopenharmony_ci{
11559596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
11569596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
11579596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
11589596a2c1Sopenharmony_ci    std::string message = "2023年1月3日(今天(本周五))和2023年1月3日(12:00:00)是指同一天";
11599596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
11609596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
11619596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 3);
11629596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
11639596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 17);
11649596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 19);
11659596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 28);
11669596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][5], 29);
11679596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][6], 37);
11689596a2c1Sopenharmony_ci}
11699596a2c1Sopenharmony_ci
11709596a2c1Sopenharmony_ci/**
11719596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest046
11729596a2c1Sopenharmony_ci * @tc.desc: Test I18n EntityRecognizer
11739596a2c1Sopenharmony_ci * @tc.type: FUNC
11749596a2c1Sopenharmony_ci */
11759596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest046, TestSize.Level1)
11769596a2c1Sopenharmony_ci{
11779596a2c1Sopenharmony_ci    std::string localeStr = "zh-CN";
11789596a2c1Sopenharmony_ci    UErrorCode status = U_ZERO_ERROR;
11799596a2c1Sopenharmony_ci    icu::Locale locale = icu::Locale::forLanguageTag(localeStr, status);
11809596a2c1Sopenharmony_ci    std::string message = "2023年1月3日今天(本周五)在7:00:00的2023年1月3日可以看日出";
11819596a2c1Sopenharmony_ci    std::unique_ptr<EntityRecognizer> m = std::make_unique<EntityRecognizer>(locale);
11829596a2c1Sopenharmony_ci    std::vector<std::vector<int>> res = m->FindEntityInfo(message);
11839596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][0], 2);
11849596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][1], 0);
11859596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][2], 16);
11869596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][3], 17);
11879596a2c1Sopenharmony_ci    EXPECT_EQ(res[1][4], 34);
11889596a2c1Sopenharmony_ci}
11899596a2c1Sopenharmony_ci
11909596a2c1Sopenharmony_ci/**
11919596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest047
11929596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
11939596a2c1Sopenharmony_ci * @tc.type: FUNC
11949596a2c1Sopenharmony_ci */
11959596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest047, TestSize.Level1)
11969596a2c1Sopenharmony_ci{
11979596a2c1Sopenharmony_ci    LocaleInfo *locale = new LocaleInfo("zh-Hans-CN");
11989596a2c1Sopenharmony_ci    uint16_t encodedLanguage = LocaleUtil::EncodeLanguageByLocaleInfo(locale);
11999596a2c1Sopenharmony_ci    EXPECT_EQ(encodedLanguage, 31336);
12009596a2c1Sopenharmony_ci    delete locale;
12019596a2c1Sopenharmony_ci}
12029596a2c1Sopenharmony_ci
12039596a2c1Sopenharmony_ci/**
12049596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest048
12059596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12069596a2c1Sopenharmony_ci * @tc.type: FUNC
12079596a2c1Sopenharmony_ci */
12089596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest048, TestSize.Level1)
12099596a2c1Sopenharmony_ci{
12109596a2c1Sopenharmony_ci    LocaleInfo *locale = new LocaleInfo("zh-Hans-CN");
12119596a2c1Sopenharmony_ci    uint16_t encodedScript = LocaleUtil::EncodeScriptByLocaleInfo(locale);
12129596a2c1Sopenharmony_ci    EXPECT_EQ(encodedScript, 28275);
12139596a2c1Sopenharmony_ci    delete locale;
12149596a2c1Sopenharmony_ci}
12159596a2c1Sopenharmony_ci
12169596a2c1Sopenharmony_ci/**
12179596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest049
12189596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12199596a2c1Sopenharmony_ci * @tc.type: FUNC
12209596a2c1Sopenharmony_ci */
12219596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest049, TestSize.Level1)
12229596a2c1Sopenharmony_ci{
12239596a2c1Sopenharmony_ci    LocaleInfo *locale = new LocaleInfo("zh-Hans-CN");
12249596a2c1Sopenharmony_ci    uint16_t encodedRegion = LocaleUtil::EncodeRegionByLocaleInfo(locale);
12259596a2c1Sopenharmony_ci    EXPECT_EQ(encodedRegion, 17230);
12269596a2c1Sopenharmony_ci    uint16_t result = LocaleUtil::EncodeRegionByLocaleInfo(nullptr);
12279596a2c1Sopenharmony_ci    EXPECT_EQ(result, 0);
12289596a2c1Sopenharmony_ci    delete locale;
12299596a2c1Sopenharmony_ci}
12309596a2c1Sopenharmony_ci
12319596a2c1Sopenharmony_ci/**
12329596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest050
12339596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12349596a2c1Sopenharmony_ci * @tc.type: FUNC
12359596a2c1Sopenharmony_ci */
12369596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest050, TestSize.Level1)
12379596a2c1Sopenharmony_ci{
12389596a2c1Sopenharmony_ci    LocaleInfo locale("zh-Hans-CN");
12399596a2c1Sopenharmony_ci    uint16_t encodedLanguage = LocaleUtil::EncodeLanguage(locale.GetLanguage().c_str());
12409596a2c1Sopenharmony_ci    EXPECT_EQ(encodedLanguage, 31336);
12419596a2c1Sopenharmony_ci}
12429596a2c1Sopenharmony_ci
12439596a2c1Sopenharmony_ci/**
12449596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest051
12459596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12469596a2c1Sopenharmony_ci * @tc.type: FUNC
12479596a2c1Sopenharmony_ci */
12489596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest051, TestSize.Level1)
12499596a2c1Sopenharmony_ci{
12509596a2c1Sopenharmony_ci    LocaleInfo locale("zh-Hans-CN");
12519596a2c1Sopenharmony_ci    uint16_t encodedScript = LocaleUtil::EncodeScript(locale.GetScript().c_str());
12529596a2c1Sopenharmony_ci    EXPECT_EQ(encodedScript, 28275);
12539596a2c1Sopenharmony_ci}
12549596a2c1Sopenharmony_ci
12559596a2c1Sopenharmony_ci/**
12569596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest052
12579596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12589596a2c1Sopenharmony_ci * @tc.type: FUNC
12599596a2c1Sopenharmony_ci */
12609596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest052, TestSize.Level1)
12619596a2c1Sopenharmony_ci{
12629596a2c1Sopenharmony_ci    LocaleInfo locale("zh-Hans-CN");
12639596a2c1Sopenharmony_ci    uint16_t encodedRegion = LocaleUtil::EncodeRegion(locale.GetRegion().c_str());
12649596a2c1Sopenharmony_ci    EXPECT_EQ(encodedRegion, 17230);
12659596a2c1Sopenharmony_ci}
12669596a2c1Sopenharmony_ci
12679596a2c1Sopenharmony_ci/**
12689596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest053
12699596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12709596a2c1Sopenharmony_ci * @tc.type: FUNC
12719596a2c1Sopenharmony_ci */
12729596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest053, TestSize.Level1)
12739596a2c1Sopenharmony_ci{
12749596a2c1Sopenharmony_ci    LocaleInfo locale("zh-Hans-CN");
12759596a2c1Sopenharmony_ci    uint16_t encodedLocale = LocaleUtil::EncodeLocale(locale.GetLanguage().c_str(), locale.GetScript().c_str(),
12769596a2c1Sopenharmony_ci        locale.GetRegion().c_str());
12779596a2c1Sopenharmony_ci    EXPECT_EQ(encodedLocale, 17230);
12789596a2c1Sopenharmony_ci}
12799596a2c1Sopenharmony_ci
12809596a2c1Sopenharmony_ci/**
12819596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest054
12829596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12839596a2c1Sopenharmony_ci * @tc.type: FUNC
12849596a2c1Sopenharmony_ci */
12859596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest054, TestSize.Level1)
12869596a2c1Sopenharmony_ci{
12879596a2c1Sopenharmony_ci    std::string str1 = "non-empty";
12889596a2c1Sopenharmony_ci    std::string str2 = "";
12899596a2c1Sopenharmony_ci    bool isEmpty = LocaleUtil::IsStrEmpty(str1.c_str());
12909596a2c1Sopenharmony_ci    EXPECT_FALSE(isEmpty);
12919596a2c1Sopenharmony_ci    isEmpty = LocaleUtil::IsStrEmpty(str2.c_str());
12929596a2c1Sopenharmony_ci    EXPECT_TRUE(isEmpty);
12939596a2c1Sopenharmony_ci}
12949596a2c1Sopenharmony_ci
12959596a2c1Sopenharmony_ci/**
12969596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest055
12979596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
12989596a2c1Sopenharmony_ci * @tc.type: FUNC
12999596a2c1Sopenharmony_ci */
13009596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest055, TestSize.Level1)
13019596a2c1Sopenharmony_ci{
13029596a2c1Sopenharmony_ci    LocaleInfo locale("zh-Hans-CN");
13039596a2c1Sopenharmony_ci    uint32_t encodedScript = LocaleUtil::EncodeScript(locale.GetScript().c_str());
13049596a2c1Sopenharmony_ci    char decodedScript[5] = { 0 };
13059596a2c1Sopenharmony_ci    LocaleUtil::DecodeScript(encodedScript, decodedScript);
13069596a2c1Sopenharmony_ci    std::string originScript = "Hans";
13079596a2c1Sopenharmony_ci    EXPECT_EQ(originScript.compare(decodedScript), 0);
13089596a2c1Sopenharmony_ci    LocaleUtil::DecodeScript(encodedScript, nullptr);
13099596a2c1Sopenharmony_ci}
13109596a2c1Sopenharmony_ci
13119596a2c1Sopenharmony_ci/**
13129596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest056
13139596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
13149596a2c1Sopenharmony_ci * @tc.type: FUNC
13159596a2c1Sopenharmony_ci */
13169596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest056, TestSize.Level1)
13179596a2c1Sopenharmony_ci{
13189596a2c1Sopenharmony_ci    std::string alphaString = "abc";
13199596a2c1Sopenharmony_ci    std::string nonAlphaString = "abc123abc";
13209596a2c1Sopenharmony_ci    bool isAlpha = LocaleUtil::IsAlphaString(alphaString.c_str(), alphaString.length());
13219596a2c1Sopenharmony_ci    EXPECT_TRUE(isAlpha);
13229596a2c1Sopenharmony_ci    isAlpha = LocaleUtil::IsAlphaString(nonAlphaString.c_str(), nonAlphaString.length());
13239596a2c1Sopenharmony_ci    EXPECT_FALSE(isAlpha);
13249596a2c1Sopenharmony_ci    isAlpha = LocaleUtil::IsAlphaString(nullptr, nonAlphaString.length());
13259596a2c1Sopenharmony_ci    EXPECT_FALSE(isAlpha);
13269596a2c1Sopenharmony_ci}
13279596a2c1Sopenharmony_ci
13289596a2c1Sopenharmony_ci/**
13299596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest057
13309596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
13319596a2c1Sopenharmony_ci * @tc.type: FUNC
13329596a2c1Sopenharmony_ci */
13339596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest057, TestSize.Level1)
13349596a2c1Sopenharmony_ci{
13359596a2c1Sopenharmony_ci    std::string numericString = "123";
13369596a2c1Sopenharmony_ci    std::string nonNumericString = "123abc123";
13379596a2c1Sopenharmony_ci    bool isNumeric = LocaleUtil::IsNumericString(numericString.c_str(), numericString.length());
13389596a2c1Sopenharmony_ci    EXPECT_TRUE(isNumeric);
13399596a2c1Sopenharmony_ci    isNumeric = LocaleUtil::IsNumericString(nonNumericString.c_str(), nonNumericString.length());
13409596a2c1Sopenharmony_ci    EXPECT_FALSE(isNumeric);
13419596a2c1Sopenharmony_ci    isNumeric = LocaleUtil::IsNumericString(nullptr, nonNumericString.length());
13429596a2c1Sopenharmony_ci    EXPECT_FALSE(isNumeric);
13439596a2c1Sopenharmony_ci    std::string locale = "ug-CN";
13449596a2c1Sopenharmony_ci    bool rtl = LocaleUtil::IsRTL(locale);
13459596a2c1Sopenharmony_ci    EXPECT_TRUE(rtl);
13469596a2c1Sopenharmony_ci}
13479596a2c1Sopenharmony_ci
13489596a2c1Sopenharmony_ci/**
13499596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest058
13509596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
13519596a2c1Sopenharmony_ci * @tc.type: FUNC
13529596a2c1Sopenharmony_ci */
13539596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest058, TestSize.Level1)
13549596a2c1Sopenharmony_ci{
13559596a2c1Sopenharmony_ci    LocaleInfo *locale1 = new LocaleInfo("zh-Hans-CN");
13569596a2c1Sopenharmony_ci    LocaleInfo *locale2 = new LocaleInfo("en-Latn-US");
13579596a2c1Sopenharmony_ci    bool isMatched = LocaleMatcher::Match(locale1, locale2);
13589596a2c1Sopenharmony_ci    EXPECT_FALSE(isMatched);
13599596a2c1Sopenharmony_ci    delete locale1;
13609596a2c1Sopenharmony_ci    delete locale2;
13619596a2c1Sopenharmony_ci
13629596a2c1Sopenharmony_ci    locale1 = new LocaleInfo("zh-Hans-CN");
13639596a2c1Sopenharmony_ci    locale2 = new LocaleInfo("zh-Hant-TW");
13649596a2c1Sopenharmony_ci    isMatched = LocaleMatcher::Match(locale1, locale2);
13659596a2c1Sopenharmony_ci    EXPECT_FALSE(isMatched);
13669596a2c1Sopenharmony_ci    delete locale1;
13679596a2c1Sopenharmony_ci    delete locale2;
13689596a2c1Sopenharmony_ci
13699596a2c1Sopenharmony_ci    locale1 = new LocaleInfo("zh-Hans-CN");
13709596a2c1Sopenharmony_ci    locale2 = new LocaleInfo("zh-Hant-TW");
13719596a2c1Sopenharmony_ci    isMatched = LocaleMatcher::Match(locale1, locale2);
13729596a2c1Sopenharmony_ci    EXPECT_FALSE(isMatched);
13739596a2c1Sopenharmony_ci    delete locale1;
13749596a2c1Sopenharmony_ci    delete locale2;
13759596a2c1Sopenharmony_ci
13769596a2c1Sopenharmony_ci    locale1 = new LocaleInfo("zh-Hans-CN");
13779596a2c1Sopenharmony_ci    locale2 = new LocaleInfo("zh-Hans-MO");
13789596a2c1Sopenharmony_ci    isMatched = LocaleMatcher::Match(locale1, locale2);
13799596a2c1Sopenharmony_ci    EXPECT_TRUE(isMatched);
13809596a2c1Sopenharmony_ci    delete locale1;
13819596a2c1Sopenharmony_ci    delete locale2;
13829596a2c1Sopenharmony_ci}
13839596a2c1Sopenharmony_ci
13849596a2c1Sopenharmony_ci/**
13859596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest059
13869596a2c1Sopenharmony_ci * @tc.desc: Test I18n LocaleUtil
13879596a2c1Sopenharmony_ci * @tc.type: FUNC
13889596a2c1Sopenharmony_ci */
13899596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest059, TestSize.Level1)
13909596a2c1Sopenharmony_ci{
13919596a2c1Sopenharmony_ci    LocaleInfo *request = nullptr;
13929596a2c1Sopenharmony_ci    LocaleInfo *current = new LocaleInfo("zh-Hans-CN");
13939596a2c1Sopenharmony_ci    LocaleInfo *other = nullptr;
13949596a2c1Sopenharmony_ci    int8_t res = LocaleMatcher::IsMoreSuitable(current, other, request);
13959596a2c1Sopenharmony_ci    EXPECT_TRUE(res < 0);
13969596a2c1Sopenharmony_ci    delete current;
13979596a2c1Sopenharmony_ci    current = nullptr;
13989596a2c1Sopenharmony_ci
13999596a2c1Sopenharmony_ci    res = LocaleMatcher::IsMoreSuitable(current, other, request);
14009596a2c1Sopenharmony_ci    EXPECT_TRUE(res == 0);
14019596a2c1Sopenharmony_ci
14029596a2c1Sopenharmony_ci    request = new LocaleInfo("en-GB");
14039596a2c1Sopenharmony_ci    current = new LocaleInfo("en-AU");
14049596a2c1Sopenharmony_ci    res = LocaleMatcher::IsMoreSuitable(current, other, request);
14059596a2c1Sopenharmony_ci    EXPECT_TRUE(res > 0);
14069596a2c1Sopenharmony_ci
14079596a2c1Sopenharmony_ci    other = new LocaleInfo("en-GB");
14089596a2c1Sopenharmony_ci    res = LocaleMatcher::IsMoreSuitable(current, other, request);
14099596a2c1Sopenharmony_ci    EXPECT_TRUE(res < 0);
14109596a2c1Sopenharmony_ci
14119596a2c1Sopenharmony_ci    delete request;
14129596a2c1Sopenharmony_ci    delete current;
14139596a2c1Sopenharmony_ci    delete other;
14149596a2c1Sopenharmony_ci    request = new LocaleInfo("iw-Lant-GB");
14159596a2c1Sopenharmony_ci    current = new LocaleInfo("iw-Lant-AU");
14169596a2c1Sopenharmony_ci    other = new LocaleInfo("he-Latn-AU");
14179596a2c1Sopenharmony_ci    res = LocaleMatcher::IsMoreSuitable(current, other, request);
14189596a2c1Sopenharmony_ci    EXPECT_TRUE(res > 0);
14199596a2c1Sopenharmony_ci    delete other;
14209596a2c1Sopenharmony_ci
14219596a2c1Sopenharmony_ci    other = new LocaleInfo("iw-Latn-AG");
14229596a2c1Sopenharmony_ci    res = LocaleMatcher::IsMoreSuitable(current, other, request);
14239596a2c1Sopenharmony_ci    EXPECT_TRUE(res < 0);
14249596a2c1Sopenharmony_ci    delete request;
14259596a2c1Sopenharmony_ci    delete current;
14269596a2c1Sopenharmony_ci    delete other;
14279596a2c1Sopenharmony_ci}
14289596a2c1Sopenharmony_ci
14299596a2c1Sopenharmony_ci/**
14309596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest061
14319596a2c1Sopenharmony_ci * @tc.desc: Test I18n GetISO3Language
14329596a2c1Sopenharmony_ci * @tc.type: FUNC
14339596a2c1Sopenharmony_ci */
14349596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest061, TestSize.Level1)
14359596a2c1Sopenharmony_ci{
14369596a2c1Sopenharmony_ci    std::string language = GetISO3Language("zh");
14379596a2c1Sopenharmony_ci    EXPECT_EQ(language, "zho");
14389596a2c1Sopenharmony_ci    language = GetISO3Language("en");
14399596a2c1Sopenharmony_ci    EXPECT_EQ(language, "eng");
14409596a2c1Sopenharmony_ci    language = GetISO3Language("zh-CN");
14419596a2c1Sopenharmony_ci    EXPECT_EQ(language, "zho");
14429596a2c1Sopenharmony_ci    language = GetISO3Language("en-US");
14439596a2c1Sopenharmony_ci    EXPECT_EQ(language, "eng");
14449596a2c1Sopenharmony_ci    language = GetISO3Language("zz");
14459596a2c1Sopenharmony_ci    EXPECT_EQ(language, "");
14469596a2c1Sopenharmony_ci    language = GetISO3Language("sdfsdf");
14479596a2c1Sopenharmony_ci    EXPECT_EQ(language, "");
14489596a2c1Sopenharmony_ci}
14499596a2c1Sopenharmony_ci
14509596a2c1Sopenharmony_ci/**
14519596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest062
14529596a2c1Sopenharmony_ci * @tc.desc: Test I18n GetISO3Country
14539596a2c1Sopenharmony_ci * @tc.type: FUNC
14549596a2c1Sopenharmony_ci */
14559596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest062, TestSize.Level1)
14569596a2c1Sopenharmony_ci{
14579596a2c1Sopenharmony_ci    std::string country = GetISO3Country("CN");
14589596a2c1Sopenharmony_ci    EXPECT_EQ(country, "CHN");
14599596a2c1Sopenharmony_ci    country = GetISO3Country("US");
14609596a2c1Sopenharmony_ci    EXPECT_EQ(country, "USA");
14619596a2c1Sopenharmony_ci    country = GetISO3Country("zh-CN");
14629596a2c1Sopenharmony_ci    EXPECT_EQ(country, "CHN");
14639596a2c1Sopenharmony_ci    country = GetISO3Country("en-US");
14649596a2c1Sopenharmony_ci    EXPECT_EQ(country, "USA");
14659596a2c1Sopenharmony_ci    country = GetISO3Country("ZX");
14669596a2c1Sopenharmony_ci    EXPECT_EQ(country, "");
14679596a2c1Sopenharmony_ci    country = GetISO3Country("zh");
14689596a2c1Sopenharmony_ci    EXPECT_EQ(country, "");
14699596a2c1Sopenharmony_ci    country = GetISO3Country("sdfsdf");
14709596a2c1Sopenharmony_ci    EXPECT_EQ(country, "");
14719596a2c1Sopenharmony_ci}
14729596a2c1Sopenharmony_ci
14739596a2c1Sopenharmony_ci/**
14749596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest063
14759596a2c1Sopenharmony_ci * @tc.desc: Test I18n lunar calendar
14769596a2c1Sopenharmony_ci * @tc.type: FUNC
14779596a2c1Sopenharmony_ci */
14789596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest063, TestSize.Level1)
14799596a2c1Sopenharmony_ci{
14809596a2c1Sopenharmony_ci    std::unique_ptr<LunarCalendar> ptr = std::make_unique<LunarCalendar>();
14819596a2c1Sopenharmony_ci
14829596a2c1Sopenharmony_ci    ptr->SetGregorianDate(1900, 1, 31);
14839596a2c1Sopenharmony_ci    int32_t year = ptr->GetLunarYear();
14849596a2c1Sopenharmony_ci    int32_t month = ptr->GetLunarMonth();
14859596a2c1Sopenharmony_ci    int32_t day = ptr->GetLunarDay();
14869596a2c1Sopenharmony_ci    bool isLeap = ptr->IsLeapMonth();
14879596a2c1Sopenharmony_ci    EXPECT_EQ(year, 1900);
14889596a2c1Sopenharmony_ci    EXPECT_EQ(month, 1);
14899596a2c1Sopenharmony_ci    EXPECT_EQ(day, 1);
14909596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
14919596a2c1Sopenharmony_ci
14929596a2c1Sopenharmony_ci    ptr->SetGregorianDate(1900, 6, 15);
14939596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
14949596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
14959596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
14969596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
14979596a2c1Sopenharmony_ci    EXPECT_EQ(year, 1900);
14989596a2c1Sopenharmony_ci    EXPECT_EQ(month, 5);
14999596a2c1Sopenharmony_ci    EXPECT_EQ(day, 19);
15009596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15019596a2c1Sopenharmony_ci
15029596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2100, 2, 15);
15039596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15049596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15059596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15069596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15079596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2100);
15089596a2c1Sopenharmony_ci    EXPECT_EQ(month, 1);
15099596a2c1Sopenharmony_ci    EXPECT_EQ(day, 7);
15109596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15119596a2c1Sopenharmony_ci
15129596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2100, 12, 31);
15139596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15149596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15159596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15169596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15179596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2100);
15189596a2c1Sopenharmony_ci    EXPECT_EQ(month, 12);
15199596a2c1Sopenharmony_ci    EXPECT_EQ(day, 1);
15209596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15219596a2c1Sopenharmony_ci}
15229596a2c1Sopenharmony_ci
15239596a2c1Sopenharmony_ci/**
15249596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest064
15259596a2c1Sopenharmony_ci * @tc.desc: Test I18n lunar calendar
15269596a2c1Sopenharmony_ci * @tc.type: FUNC
15279596a2c1Sopenharmony_ci */
15289596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest064, TestSize.Level1)
15299596a2c1Sopenharmony_ci{
15309596a2c1Sopenharmony_ci    std::unique_ptr<LunarCalendar> ptr = std::make_unique<LunarCalendar>();
15319596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2087, 1, 11);
15329596a2c1Sopenharmony_ci    int32_t year = ptr->GetLunarYear();
15339596a2c1Sopenharmony_ci    int32_t month = ptr->GetLunarMonth();
15349596a2c1Sopenharmony_ci    int32_t day = ptr->GetLunarDay();
15359596a2c1Sopenharmony_ci    bool isLeap = ptr->IsLeapMonth();
15369596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2086);
15379596a2c1Sopenharmony_ci    EXPECT_EQ(month, 12);
15389596a2c1Sopenharmony_ci    EXPECT_EQ(day, 7);
15399596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15409596a2c1Sopenharmony_ci
15419596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2024, 10, 11);
15429596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15439596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15449596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15459596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15469596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2024);
15479596a2c1Sopenharmony_ci    EXPECT_EQ(month, 9);
15489596a2c1Sopenharmony_ci    EXPECT_EQ(day, 9);
15499596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15509596a2c1Sopenharmony_ci
15519596a2c1Sopenharmony_ci    ptr->SetGregorianDate(1963, 6, 15);
15529596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15539596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15549596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15559596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15569596a2c1Sopenharmony_ci    EXPECT_EQ(year, 1963);
15579596a2c1Sopenharmony_ci    EXPECT_EQ(month, 4);
15589596a2c1Sopenharmony_ci    EXPECT_EQ(day, 24);
15599596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, true);
15609596a2c1Sopenharmony_ci
15619596a2c1Sopenharmony_ci    ptr->SetGregorianDate(1923, 1, 11);
15629596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15639596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15649596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15659596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15669596a2c1Sopenharmony_ci    EXPECT_EQ(year, 1922);
15679596a2c1Sopenharmony_ci    EXPECT_EQ(month, 11);
15689596a2c1Sopenharmony_ci    EXPECT_EQ(day, 25);
15699596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15709596a2c1Sopenharmony_ci}
15719596a2c1Sopenharmony_ci
15729596a2c1Sopenharmony_ci/**
15739596a2c1Sopenharmony_ci * @tc.name: I18nFuncTest065
15749596a2c1Sopenharmony_ci * @tc.desc: Test I18n lunar calendar
15759596a2c1Sopenharmony_ci * @tc.type: FUNC
15769596a2c1Sopenharmony_ci */
15779596a2c1Sopenharmony_ciHWTEST_F(I18nTest, I18nFuncTest065, TestSize.Level1)
15789596a2c1Sopenharmony_ci{
15799596a2c1Sopenharmony_ci    std::unique_ptr<LunarCalendar> ptr = std::make_unique<LunarCalendar>();
15809596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2024, 8, 51);
15819596a2c1Sopenharmony_ci    int32_t year = ptr->GetLunarYear();
15829596a2c1Sopenharmony_ci    int32_t month = ptr->GetLunarMonth();
15839596a2c1Sopenharmony_ci    int32_t day = ptr->GetLunarDay();
15849596a2c1Sopenharmony_ci    bool isLeap = ptr->IsLeapMonth();
15859596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2024);
15869596a2c1Sopenharmony_ci    EXPECT_EQ(month, 8);
15879596a2c1Sopenharmony_ci    EXPECT_EQ(day, 18);
15889596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15899596a2c1Sopenharmony_ci
15909596a2c1Sopenharmony_ci    ptr->SetGregorianDate(2024, 12, 43);
15919596a2c1Sopenharmony_ci    year = ptr->GetLunarYear();
15929596a2c1Sopenharmony_ci    month = ptr->GetLunarMonth();
15939596a2c1Sopenharmony_ci    day = ptr->GetLunarDay();
15949596a2c1Sopenharmony_ci    isLeap = ptr->IsLeapMonth();
15959596a2c1Sopenharmony_ci    EXPECT_EQ(year, 2024);
15969596a2c1Sopenharmony_ci    EXPECT_EQ(month, 12);
15979596a2c1Sopenharmony_ci    EXPECT_EQ(day, 13);
15989596a2c1Sopenharmony_ci    EXPECT_EQ(isLeap, false);
15999596a2c1Sopenharmony_ci}
16009596a2c1Sopenharmony_ci} // namespace I18n
16019596a2c1Sopenharmony_ci} // namespace Global
16029596a2c1Sopenharmony_ci} // namespace OHOS