14d6c458bSopenharmony_ci/*
24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License.
54d6c458bSopenharmony_ci * You may obtain a copy of the License at
64d6c458bSopenharmony_ci *
74d6c458bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d6c458bSopenharmony_ci *
94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and
134d6c458bSopenharmony_ci * limitations under the License.
144d6c458bSopenharmony_ci */
154d6c458bSopenharmony_ci
164d6c458bSopenharmony_ci#include "test.h"
174d6c458bSopenharmony_ci#include "napi/native_api.h"
184d6c458bSopenharmony_ci#include "napi/native_node_api.h"
194d6c458bSopenharmony_ci#include "tools/log.h"
204d6c458bSopenharmony_ci#include "js_uri.h"
214d6c458bSopenharmony_ci#include "native_module_uri.h"
224d6c458bSopenharmony_ci
234d6c458bSopenharmony_ci#define ASSERT_CHECK_CALL(call)   \
244d6c458bSopenharmony_ci    {                             \
254d6c458bSopenharmony_ci        ASSERT_EQ(call, napi_ok); \
264d6c458bSopenharmony_ci    }
274d6c458bSopenharmony_ci
284d6c458bSopenharmony_ci#define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
294d6c458bSopenharmony_ci    {                                                           \
304d6c458bSopenharmony_ci        napi_valuetype valueType = napi_undefined;              \
314d6c458bSopenharmony_ci        ASSERT_TRUE(value != nullptr);                          \
324d6c458bSopenharmony_ci        ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
334d6c458bSopenharmony_ci        ASSERT_EQ(valueType, type);                             \
344d6c458bSopenharmony_ci    }
354d6c458bSopenharmony_ci
364d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest001, testing::ext::TestSize.Level0)
374d6c458bSopenharmony_ci{
384d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
394d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
404d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@www.baidu.com:99");
414d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@www.baidu.com:99/path/path?query");
424d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
434d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "www.baidu.com");
444d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
454d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
464d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
474d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
484d6c458bSopenharmony_ci}
494d6c458bSopenharmony_ci
504d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest002, testing::ext::TestSize.Level0)
514d6c458bSopenharmony_ci{
524d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[1080::8:800:200C:417A]:99/path/66path1?query#fagment");
534d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
544d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[1080::8:800:200C:417A]:99");
554d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[1080::8:800:200C:417A]:99/path/66path1?query");
564d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
574d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[1080::8:800:200C:417A]");
584d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
594d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/66path1");
604d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
614d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
624d6c458bSopenharmony_ci}
634d6c458bSopenharmony_ci
644d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest003, testing::ext::TestSize.Level0)
654d6c458bSopenharmony_ci{
664d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[::]:88/path/path66?foooo#gaogao");
674d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
684d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[::]:88");
694d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[::]:88/path/path66?foooo");
704d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
714d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::]");
724d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "88");
734d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path66");
744d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "foooo");
754d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "gaogao");
764d6c458bSopenharmony_ci}
774d6c458bSopenharmony_ci
784d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest004, testing::ext::TestSize.Level0)
794d6c458bSopenharmony_ci{
804d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[1:0:0:1:2:1:2:1]:99/path/66path1?query#fagment");
814d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
824d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[1:0:0:1:2:1:2:1]:99");
834d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[1:0:0:1:2:1:2:1]:99/path/66path1?query");
844d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
854d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[1:0:0:1:2:1:2:1]");
864d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
874d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/66path1");
884d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
894d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
904d6c458bSopenharmony_ci}
914d6c458bSopenharmony_ci
924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest005, testing::ext::TestSize.Level0)
934d6c458bSopenharmony_ci{
944d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[::FFFF:129.144.52.38]:99/path/path?query#fagment");
954d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
964d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[::FFFF:129.144.52.38]:99");
974d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[::FFFF:129.144.52.38]:99/path/path?query");
984d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
994d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::FFFF:129.144.52.38]");
1004d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1014d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1024d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1034d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1044d6c458bSopenharmony_ci}
1054d6c458bSopenharmony_ci
1064d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest006, testing::ext::TestSize.Level0)
1074d6c458bSopenharmony_ci{
1084d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[::192.9.5.5]:99/path/path?query#fagment");
1094d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1104d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[::192.9.5.5]:99");
1114d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[::192.9.5.5]:99/path/path?query");
1124d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1134d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::192.9.5.5]");
1144d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1154d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1164d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1174d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1184d6c458bSopenharmony_ci}
1194d6c458bSopenharmony_ci
1204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest007, testing::ext::TestSize.Level0)
1214d6c458bSopenharmony_ci{
1224d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[22::22:2:2%ss]:99/path/path?query#fagment");
1234d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1244d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[22::22:2:2%ss]:99");
1254d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[22::22:2:2%ss]:99/path/path?query");
1264d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1274d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[22::22:2:2%ss]");
1284d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1294d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1304d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1314d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1324d6c458bSopenharmony_ci}
1334d6c458bSopenharmony_ci
1344d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest008, testing::ext::TestSize.Level0)
1354d6c458bSopenharmony_ci{
1364d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[fe80:0000:0001:0000:0440:44ff:1233:5678]"
1374d6c458bSopenharmony_ci                        ":99/path/path?query#fagment");
1384d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1394d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[fe80:0000:0001:0000:0440:44ff:1233:5678]:99");
1404d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[fe80:0000:0001:0000:0440:44ff:1233:5678]"
1414d6c458bSopenharmony_ci                ":99/path/path?query");
1424d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1434d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[fe80:0000:0001:0000:0440:44ff:1233:5678]");
1444d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1454d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1464d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1474d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1484d6c458bSopenharmony_ci}
1494d6c458bSopenharmony_ci
1504d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest009, testing::ext::TestSize.Level0)
1514d6c458bSopenharmony_ci{
1524d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@[fe80::0001:0000]:99/path/path?query#fagment");
1534d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1544d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@[fe80::0001:0000]:99");
1554d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@[fe80::0001:0000]:99/path/path?query");
1564d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1574d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[fe80::0001:0000]");
1584d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1594d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1604d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1614d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1624d6c458bSopenharmony_ci}
1634d6c458bSopenharmony_ci
1644d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest010, testing::ext::TestSize.Level0)
1654d6c458bSopenharmony_ci{
1664d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
1674d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1684d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@www.baidu.com:99");
1694d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@www.baidu.com:99/path/path?query");
1704d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1714d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "www.baidu.com");
1724d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1734d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1744d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1754d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1764d6c458bSopenharmony_ci}
1774d6c458bSopenharmony_ci
1784d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest011, testing::ext::TestSize.Level0)
1794d6c458bSopenharmony_ci{
1804d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@199.98.55.44:99/path/path?query#fagment");
1814d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1824d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "username:password@199.98.55.44:99");
1834d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//username:password@199.98.55.44:99/path/path?query");
1844d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "username:password");
1854d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "199.98.55.44");
1864d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
1874d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
1884d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
1894d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
1904d6c458bSopenharmony_ci}
1914d6c458bSopenharmony_ci
1924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest012, testing::ext::TestSize.Level0)
1934d6c458bSopenharmony_ci{
1944d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://16.9.5.4:99/path/path?query#fagment");
1954d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
1964d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "16.9.5.4:99");
1974d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//16.9.5.4:99/path/path?query");
1984d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
1994d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "16.9.5.4");
2004d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
2014d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2024d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2034d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
2044d6c458bSopenharmony_ci}
2054d6c458bSopenharmony_ci
2064d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest013, testing::ext::TestSize.Level0)
2074d6c458bSopenharmony_ci{
2084d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://[::168:169:333]:99/path/path?query#fagment");
2094d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2104d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "[::168:169:333]:99");
2114d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//[::168:169:333]:99/path/path?query");
2124d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
2134d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::168:169:333]");
2144d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "99");
2154d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2164d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2174d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
2184d6c458bSopenharmony_ci}
2194d6c458bSopenharmony_ci
2204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest014, testing::ext::TestSize.Level0)
2214d6c458bSopenharmony_ci{
2224d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://user@49.10hh8.54.12:80/path/path?query#qwer");
2234d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2244d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "user@49.10hh8.54.12:80");
2254d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//user@49.10hh8.54.12:80/path/path?query");
2264d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
2274d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
2284d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2294d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2304d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2314d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
2324d6c458bSopenharmony_ci}
2334d6c458bSopenharmony_ci
2344d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest015, testing::ext::TestSize.Level0)
2354d6c458bSopenharmony_ci{
2364d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://user@www.baidu.com/path/path?query#qwer");
2374d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2384d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "user@www.baidu.com");
2394d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//user@www.baidu.com/path/path?query");
2404d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "user");
2414d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "www.baidu.com");
2424d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2434d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2444d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2454d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
2464d6c458bSopenharmony_ci}
2474d6c458bSopenharmony_ci
2484d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest016, testing::ext::TestSize.Level0)
2494d6c458bSopenharmony_ci{
2504d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("ftp://user@www.1hw.1com:77/path/path?query#qwer");
2514d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "ftp");
2524d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "user@www.1hw.1com:77");
2534d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//user@www.1hw.1com:77/path/path?query");
2544d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
2554d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
2564d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2574d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2584d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2594d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
2604d6c458bSopenharmony_ci}
2614d6c458bSopenharmony_ci
2624d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest017, testing::ext::TestSize.Level0)
2634d6c458bSopenharmony_ci{
2644d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://user@hosthost/path/path?query#qwer");
2654d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2664d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "user@hosthost");
2674d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//user@hosthost/path/path?query");
2684d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "user");
2694d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "hosthost");
2704d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2714d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2724d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2734d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
2744d6c458bSopenharmony_ci}
2754d6c458bSopenharmony_ci
2764d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest018, testing::ext::TestSize.Level0)
2774d6c458bSopenharmony_ci{
2784d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://user@[::]/path/path?query#qwer");
2794d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2804d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "user@[::]");
2814d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//user@[::]/path/path?query");
2824d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "user");
2834d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::]");
2844d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2854d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
2864d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
2874d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
2884d6c458bSopenharmony_ci}
2894d6c458bSopenharmony_ci
2904d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest019, testing::ext::TestSize.Level0)
2914d6c458bSopenharmony_ci{
2924d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://[::192:0:5]/path/path?query#qwer");
2934d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
2944d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "[::192:0:5]");
2954d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "//[::192:0:5]/path/path?query");
2964d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
2974d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "[::192:0:5]");
2984d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
2994d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/path/path");
3004d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
3014d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "qwer");
3024d6c458bSopenharmony_ci}
3034d6c458bSopenharmony_ci
3044d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest020, testing::ext::TestSize.Level0)
3054d6c458bSopenharmony_ci{
3064d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/username:password@www.baidu.com:99/path/path?query#fagment");
3074d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3084d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3094d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "/username:password@www.baidu.com:99/path/path?query");
3104d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3114d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3124d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3134d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/username:password@www.baidu.com:99/path/path");
3144d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
3154d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3164d6c458bSopenharmony_ci}
3174d6c458bSopenharmony_ci
3184d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest021, testing::ext::TestSize.Level0)
3194d6c458bSopenharmony_ci{
3204d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/&username:password@[1080::8:800:200C:417A]:99/path/66path1?query#fagment");
3214d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3224d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3234d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "/&username:password@[1080::8:800:200C:417A]:99/path/66path1?query");
3244d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3254d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3264d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3274d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/&username:password@[1080::8:800:200C:417A]:99/path/66path1");
3284d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
3294d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3304d6c458bSopenharmony_ci}
3314d6c458bSopenharmony_ci
3324d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest022, testing::ext::TestSize.Level0)
3334d6c458bSopenharmony_ci{
3344d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/[username:password@[::FFFF:129.144.52.38]:99/path/path?query#fagment");
3354d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3364d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3374d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "/[username:password@[::FFFF:129.144.52.38]:99/path/path?query");
3384d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3394d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3404d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3414d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "/[username:password@[::FFFF:129.144.52.38]:99/path/path");
3424d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "query");
3434d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3444d6c458bSopenharmony_ci}
3454d6c458bSopenharmony_ci
3464d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest023, testing::ext::TestSize.Level0)
3474d6c458bSopenharmony_ci{
3484d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:username:password@[1080::8:800:200C:417A]:99/path/66path1?query#fagment");
3494d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3504d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3514d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "username:password@[1080::8:800:200C:417A]:99/path/66path1?query");
3524d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3534d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3544d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3554d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "");
3564d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "");
3574d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3584d6c458bSopenharmony_ci}
3594d6c458bSopenharmony_ci
3604d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest024, testing::ext::TestSize.Level0)
3614d6c458bSopenharmony_ci{
3624d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:^$username:password@[::192.9.5.5]:99/path/path?query#fagment");
3634d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3644d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3654d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "^$username:password@[::192.9.5.5]:99/path/path?query");
3664d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3674d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3684d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3694d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "");
3704d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "");
3714d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3724d6c458bSopenharmony_ci}
3734d6c458bSopenharmony_ci
3744d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest025, testing::ext::TestSize.Level0)
3754d6c458bSopenharmony_ci{
3764d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:[?]username:password@[fe80::0001:0000]:99/path/path?query#fagment");
3774d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
3784d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetAuthority().c_str(), "");
3794d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "[?]username:password@[fe80::0001:0000]:99/path/path?query");
3804d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetUserinfo().c_str(), "");
3814d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetHost().c_str(), "");
3824d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPort().c_str(), "-1");
3834d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "");
3844d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "");
3854d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "fagment");
3864d6c458bSopenharmony_ci}
3874d6c458bSopenharmony_ci
3884d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest026, testing::ext::TestSize.Level0)
3894d6c458bSopenharmony_ci{
3904d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("");
3914d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "");
3924d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetSsp().c_str(), "");
3934d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "");
3944d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "uri is empty");
3954d6c458bSopenharmony_ci}
3964d6c458bSopenharmony_ci
3974d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest027, testing::ext::TestSize.Level0)
3984d6c458bSopenharmony_ci{
3994d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("#asd;");
4004d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "#It can't be the first");
4014d6c458bSopenharmony_ci}
4024d6c458bSopenharmony_ci
4034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest028, testing::ext::TestSize.Level0)
4044d6c458bSopenharmony_ci{
4054d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("?sa^d:s#asd;");
4064d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "Query does not conform to the rule");
4074d6c458bSopenharmony_ci}
4084d6c458bSopenharmony_ci
4094d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest029, testing::ext::TestSize.Level0)
4104d6c458bSopenharmony_ci{
4114d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("?sad:s#a^sd;");
4124d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "Fragment does not conform to the rule");
4134d6c458bSopenharmony_ci}
4144d6c458bSopenharmony_ci
4154d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest030, testing::ext::TestSize.Level0)
4164d6c458bSopenharmony_ci{
4174d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("4http:/username:password@www.baidu.com:99/path/path?query#fagment");
4184d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "Scheme the first character must be a letter");
4194d6c458bSopenharmony_ci}
4204d6c458bSopenharmony_ci
4214d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest031, testing::ext::TestSize.Level0)
4224d6c458bSopenharmony_ci{
4234d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("ht*tp:/username:password@www.baidu.com:99/path/path?query#fagment");
4244d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "ht*tp");
4254d6c458bSopenharmony_ci}
4264d6c458bSopenharmony_ci
4274d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest032, testing::ext::TestSize.Level0)
4284d6c458bSopenharmony_ci{
4294d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("/usern]ame/path/path?query#fagment");
4304d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "SpecialPath does not conform to the rule");
4314d6c458bSopenharmony_ci}
4324d6c458bSopenharmony_ci
4334d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest033, testing::ext::TestSize.Level0)
4344d6c458bSopenharmony_ci{
4354d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("/username/path/path?query#fagment");
4364d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4374d6c458bSopenharmony_ci}
4384d6c458bSopenharmony_ci
4394d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest034, testing::ext::TestSize.Level0)
4404d6c458bSopenharmony_ci{
4414d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/userna^me:password@www.baidu.com:99/path/path?query#fagment");
4424d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4434d6c458bSopenharmony_ci}
4444d6c458bSopenharmony_ci
4454d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest035, testing::ext::TestSize.Level0)
4464d6c458bSopenharmony_ci{
4474d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://?query#fagment");
4484d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetScheme().c_str(), "http");
4494d6c458bSopenharmony_ci}
4504d6c458bSopenharmony_ci
4514d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest036, testing::ext::TestSize.Level0)
4524d6c458bSopenharmony_ci{
4534d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/username:password@www.baidu.com:99/pa^th/path?query#fagment");
4544d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4554d6c458bSopenharmony_ci}
4564d6c458bSopenharmony_ci
4574d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest037, testing::ext::TestSize.Level0)
4584d6c458bSopenharmony_ci{
4594d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/username:password@www.baidu.com:9^9/path/path?query#fagment");
4604d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4614d6c458bSopenharmony_ci}
4624d6c458bSopenharmony_ci
4634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest038, testing::ext::TestSize.Level0)
4644d6c458bSopenharmony_ci{
4654d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/username:password@[1:0:0:1:2:1:2:1]:9^9/path/path?query#fagment");
4664d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4674d6c458bSopenharmony_ci}
4684d6c458bSopenharmony_ci
4694d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest039, testing::ext::TestSize.Level0)
4704d6c458bSopenharmony_ci{
4714d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http:/username:password@[1:0:0:1:2:1:2:1/path/path?query#fagment");
4724d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "");
4734d6c458bSopenharmony_ci}
4744d6c458bSopenharmony_ci
4754d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest040, testing::ext::TestSize.Level0)
4764d6c458bSopenharmony_ci{
4774d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:sfvs1:2:1:2:1]:99/path1?query#fagment");
4784d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "ipv6 does not conform to the rule");
4794d6c458bSopenharmony_ci}
4804d6c458bSopenharmony_ci
4814d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest041, testing::ext::TestSize.Level0)
4824d6c458bSopenharmony_ci{
4834d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http、:/username:password@www.baidu.com:99/path/path?query#fagment");
4844d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "scheme does not conform to the rule");
4854d6c458bSopenharmony_ci}
4864d6c458bSopenharmony_ci
4874d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest042, testing::ext::TestSize.Level0)
4884d6c458bSopenharmony_ci{
4894d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://[ffff::1]:、99/path/path?query#fagment");
4904d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "Prot does not conform to the rule");
4914d6c458bSopenharmony_ci}
4924d6c458bSopenharmony_ci
4934d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest043, testing::ext::TestSize.Level0)
4944d6c458bSopenharmony_ci{
4954d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://[ffff::1:99/path/path?query#fagment");
4964d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "IPv6 is missing a closing bracket");
4974d6c458bSopenharmony_ci}
4984d6c458bSopenharmony_ci
4994d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest044, testing::ext::TestSize.Level0)
5004d6c458bSopenharmony_ci{
5014d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://ffff::1]:99/path/path?query#fagment");
5024d6c458bSopenharmony_ci    ASSERT_STREQ(uri.IsFailed().c_str(), "host does not conform to the rule");
5034d6c458bSopenharmony_ci}
5044d6c458bSopenharmony_ci
5054d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest001, testing::ext::TestSize.Level0)
5064d6c458bSopenharmony_ci{
5074d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment");
5084d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1 = uri;
5094d6c458bSopenharmony_ci    ASSERT_TRUE(uri.Equals(uri1));
5104d6c458bSopenharmony_ci}
5114d6c458bSopenharmony_ci
5124d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest002, testing::ext::TestSize.Level0)
5134d6c458bSopenharmony_ci{
5144d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment");
5154d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment");
5164d6c458bSopenharmony_ci    ASSERT_TRUE(uri.Equals(uri1));
5174d6c458bSopenharmony_ci}
5184d6c458bSopenharmony_ci
5194d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest003, testing::ext::TestSize.Level0)
5204d6c458bSopenharmony_ci{
5214d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment");
5224d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment123");
5234d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5244d6c458bSopenharmony_ci}
5254d6c458bSopenharmony_ci
5264d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest004, testing::ext::TestSize.Level0)
5274d6c458bSopenharmony_ci{
5284d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
5294d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://username:password@www.baidu.com:29/path/path?query#fagment");
5304d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5314d6c458bSopenharmony_ci}
5324d6c458bSopenharmony_ci
5334d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest005, testing::ext::TestSize.Level0)
5344d6c458bSopenharmony_ci{
5354d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
5364d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://user1name:password@www.baidu.com:99/path/path?query#fagment");
5374d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5384d6c458bSopenharmony_ci}
5394d6c458bSopenharmony_ci
5404d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest006, testing::ext::TestSize.Level0)
5414d6c458bSopenharmony_ci{
5424d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
5434d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://username:password@w2ww.baidu.com:99/path/path?query#fagment");
5444d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5454d6c458bSopenharmony_ci}
5464d6c458bSopenharmony_ci
5474d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest007, testing::ext::TestSize.Level0)
5484d6c458bSopenharmony_ci{
5494d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
5504d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://username:password@www.baidu.com:99/pa4th/path?query#fagment");
5514d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5524d6c458bSopenharmony_ci}
5534d6c458bSopenharmony_ci
5544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest008, testing::ext::TestSize.Level0)
5554d6c458bSopenharmony_ci{
5564d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?qu4ery#fagment");
5574d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("http://username:password@www.baidu.com:99/path/path?query#fagment");
5584d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5594d6c458bSopenharmony_ci}
5604d6c458bSopenharmony_ci
5614d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, EqualsTest009, testing::ext::TestSize.Level0)
5624d6c458bSopenharmony_ci{
5634d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://username:password@www.baidu.com:99/path/path?query#fagment");
5644d6c458bSopenharmony_ci    OHOS::Uri::Uri uri1("h4ttp://username:password@www.baidu.com:99/path/path?query#fagment");
5654d6c458bSopenharmony_ci    ASSERT_FALSE(uri.Equals(uri1));
5664d6c458bSopenharmony_ci}
5674d6c458bSopenharmony_ci
5684d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, NormalizeTest001, testing::ext::TestSize.Level0)
5694d6c458bSopenharmony_ci{
5704d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://user@[1:0:0:1:2:1:2:1]:99/path/66./../././mm/.././path1?query#fagment");
5714d6c458bSopenharmony_ci    std::string normalize = uri.Normalize();
5724d6c458bSopenharmony_ci    ASSERT_STREQ(normalize.c_str(), "http://user@[1:0:0:1:2:1:2:1]:99/path/path1?query#fagment");
5734d6c458bSopenharmony_ci}
5744d6c458bSopenharmony_ci
5754d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, NormalizeTest002, testing::ext::TestSize.Level0)
5764d6c458bSopenharmony_ci{
5774d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../path?query#fagment");
5784d6c458bSopenharmony_ci    std::string normalize = uri.Normalize();
5794d6c458bSopenharmony_ci    ASSERT_STREQ(normalize.c_str(), "http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../path?query#fagment");
5804d6c458bSopenharmony_ci}
5814d6c458bSopenharmony_ci
5824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, NormalizeTest003, testing::ext::TestSize.Level0)
5834d6c458bSopenharmony_ci{
5844d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../path/.././../aa/bb/cc?query#fagment");
5854d6c458bSopenharmony_ci    std::string normalize = uri.Normalize();
5864d6c458bSopenharmony_ci    ASSERT_STREQ(normalize.c_str(), "http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../../aa/bb/cc?query#fagment");
5874d6c458bSopenharmony_ci}
5884d6c458bSopenharmony_ci
5894d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, NormalizeTest004, testing::ext::TestSize.Level0)
5904d6c458bSopenharmony_ci{
5914d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99?query#fagment");
5924d6c458bSopenharmony_ci    std::string normalize = uri.Normalize();
5934d6c458bSopenharmony_ci    ASSERT_STREQ(normalize.c_str(), "http://gg:gaogao@[1:0:0:1:2:1:2:1]:99?query#fagment");
5944d6c458bSopenharmony_ci}
5954d6c458bSopenharmony_ci
5964d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToStringTest001, testing::ext::TestSize.Level0)
5974d6c458bSopenharmony_ci{
5984d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/aa/bb/cc?query#fagment");
5994d6c458bSopenharmony_ci    ASSERT_STREQ(uri.ToString().c_str(), "http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/aa/bb/cc?query#fagment");
6004d6c458bSopenharmony_ci}
6014d6c458bSopenharmony_ci
6024d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToStringTest002, testing::ext::TestSize.Level0)
6034d6c458bSopenharmony_ci{
6044d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("htt1p://gg:gaogao@[::192.9.5.5]:99/path/66path1?query#fagment");
6054d6c458bSopenharmony_ci    ASSERT_STREQ(uri.ToString().c_str(), "htt1p://gg:gaogao@[::192.9.5.5]:99/path/66path1?query#fagment");
6064d6c458bSopenharmony_ci}
6074d6c458bSopenharmony_ci
6084d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToStringTest003, testing::ext::TestSize.Level0)
6094d6c458bSopenharmony_ci{
6104d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("ftp://username:www.baidu.com/path?query#fagment");
6114d6c458bSopenharmony_ci    ASSERT_STREQ(uri.ToString().c_str(), "ftp://username:www.baidu.com/path?query#fagment");
6124d6c458bSopenharmony_ci}
6134d6c458bSopenharmony_ci
6144d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsAbsoluteTest001, testing::ext::TestSize.Level0)
6154d6c458bSopenharmony_ci{
6164d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("f/tp://username:password@www.baidu.com:88/path?query#fagment");
6174d6c458bSopenharmony_ci    bool res = uri.IsAbsolute();
6184d6c458bSopenharmony_ci    ASSERT_FALSE(res);
6194d6c458bSopenharmony_ci}
6204d6c458bSopenharmony_ci
6214d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsAbsoluteTest002, testing::ext::TestSize.Level0)
6224d6c458bSopenharmony_ci{
6234d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("ftp://username:password@www.baidu.com:88/path?query#fagment");
6244d6c458bSopenharmony_ci    bool res = uri.IsAbsolute();
6254d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6264d6c458bSopenharmony_ci}
6274d6c458bSopenharmony_ci
6284d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsAbsoluteTest003, testing::ext::TestSize.Level0)
6294d6c458bSopenharmony_ci{
6304d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("htt/p://username:password@www.baidu.com:88/path?query#fagment");
6314d6c458bSopenharmony_ci    bool res = uri.IsAbsolute();
6324d6c458bSopenharmony_ci    ASSERT_FALSE(res);
6334d6c458bSopenharmony_ci}
6344d6c458bSopenharmony_ci
6354d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsRelativeTest001, testing::ext::TestSize.Level0)
6364d6c458bSopenharmony_ci{
6374d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://www.example.com/aaa");
6384d6c458bSopenharmony_ci    bool res = uri.IsRelative();
6394d6c458bSopenharmony_ci    ASSERT_FALSE(res);
6404d6c458bSopenharmony_ci}
6414d6c458bSopenharmony_ci
6424d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsRelativeTest002, testing::ext::TestSize.Level0)
6434d6c458bSopenharmony_ci{
6444d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("/bbb");
6454d6c458bSopenharmony_ci    bool res = uri.IsRelative();
6464d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6474d6c458bSopenharmony_ci}
6484d6c458bSopenharmony_ci
6494d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsOpaqueTest001, testing::ext::TestSize.Level0)
6504d6c458bSopenharmony_ci{
6514d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("aaa:user@example.com");
6524d6c458bSopenharmony_ci    bool res = uri.IsOpaque();
6534d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6544d6c458bSopenharmony_ci}
6554d6c458bSopenharmony_ci
6564d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsOpaqueTest002, testing::ext::TestSize.Level0)
6574d6c458bSopenharmony_ci{
6584d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("content://com.example/bbb");
6594d6c458bSopenharmony_ci    bool res = uri.IsOpaque();
6604d6c458bSopenharmony_ci    ASSERT_FALSE(res);
6614d6c458bSopenharmony_ci}
6624d6c458bSopenharmony_ci
6634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsHierarchicalTest001, testing::ext::TestSize.Level0)
6644d6c458bSopenharmony_ci{
6654d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://www.example.com/path/to/resource");
6664d6c458bSopenharmony_ci    bool res = uri.IsHierarchical();
6674d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6684d6c458bSopenharmony_ci}
6694d6c458bSopenharmony_ci
6704d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsHierarchicalTest002, testing::ext::TestSize.Level0)
6714d6c458bSopenharmony_ci{
6724d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("/path/to/resource");
6734d6c458bSopenharmony_ci    bool res = uri.IsHierarchical();
6744d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6754d6c458bSopenharmony_ci}
6764d6c458bSopenharmony_ci
6774d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IsHierarchicalTest003, testing::ext::TestSize.Level0)
6784d6c458bSopenharmony_ci{
6794d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("tel:123456789");
6804d6c458bSopenharmony_ci    bool res = uri.IsHierarchical();
6814d6c458bSopenharmony_ci    ASSERT_FALSE(res);
6824d6c458bSopenharmony_ci}
6834d6c458bSopenharmony_ci
6844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, AddQueryValueTest001, testing::ext::TestSize.Level0)
6854d6c458bSopenharmony_ci{
6864d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://username:password@host:8080/file?aaa=1#myfragment");
6874d6c458bSopenharmony_ci    std::string temp = uri.AddQueryValue("bbb", "2");
6884d6c458bSopenharmony_ci    ASSERT_STREQ(temp.c_str(), "https://username:password@host:8080/file?aaa=1&bbb=2#myfragment");
6894d6c458bSopenharmony_ci}
6904d6c458bSopenharmony_ci
6914d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, AddQueryValueTest002, testing::ext::TestSize.Level0)
6924d6c458bSopenharmony_ci{
6934d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("mao:user@example.com");
6944d6c458bSopenharmony_ci    std::string temp = uri.AddQueryValue("bb", "cc");
6954d6c458bSopenharmony_ci    ASSERT_STREQ(temp.c_str(), "mao:?bb=cc");
6964d6c458bSopenharmony_ci}
6974d6c458bSopenharmony_ci
6984d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ClearQueryTest001, testing::ext::TestSize.Level0)
6994d6c458bSopenharmony_ci{
7004d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://username:password@host:8080/file?aaa=1#myfragment");
7014d6c458bSopenharmony_ci    std::string temp = uri.ClearQuery();
7024d6c458bSopenharmony_ci    ASSERT_STREQ(temp.c_str(), "https://username:password@host:8080/file#myfragment");
7034d6c458bSopenharmony_ci}
7044d6c458bSopenharmony_ci
7054d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetSegmentTest001, testing::ext::TestSize.Level0)
7064d6c458bSopenharmony_ci{
7074d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://username:password@host:8080/file?aaa=1#myfragment");
7084d6c458bSopenharmony_ci    std::vector<std::string> temp = uri.GetSegment();
7094d6c458bSopenharmony_ci    ASSERT_EQ(temp.size(), 1);
7104d6c458bSopenharmony_ci}
7114d6c458bSopenharmony_ci
7124d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, AddSegmentTest001, testing::ext::TestSize.Level0)
7134d6c458bSopenharmony_ci{
7144d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://username:password@host:8080/file?aaa=1#myfragment");
7154d6c458bSopenharmony_ci    std::string temp = uri.AddSegment("segment");
7164d6c458bSopenharmony_ci    ASSERT_STREQ(temp.c_str(), "https://username:password@host:8080/file/segment?aaa=1#myfragment");
7174d6c458bSopenharmony_ci}
7184d6c458bSopenharmony_ci
7194d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, AddSegmentTest002, testing::ext::TestSize.Level0)
7204d6c458bSopenharmony_ci{
7214d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("mao:user@example.com");
7224d6c458bSopenharmony_ci    std::string temp = uri.AddSegment("aaa");
7234d6c458bSopenharmony_ci    ASSERT_STREQ(temp.c_str(), "mao:/aaa");
7244d6c458bSopenharmony_ci}
7254d6c458bSopenharmony_ci
7264d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetTest001, testing::ext::TestSize.Level0)
7274d6c458bSopenharmony_ci{
7284d6c458bSopenharmony_ci    OHOS::Uri::Uri uri("https://username:password@host:8080");
7294d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetPath().c_str(), "");
7304d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetQuery().c_str(), "");
7314d6c458bSopenharmony_ci    ASSERT_STREQ(uri.GetFragment().c_str(), "");
7324d6c458bSopenharmony_ci}
7334d6c458bSopenharmony_ci
7344d6c458bSopenharmony_cistd::string GetStringUtf8(napi_env env, napi_value str)
7354d6c458bSopenharmony_ci{
7364d6c458bSopenharmony_ci    std::string buffer = "";
7374d6c458bSopenharmony_ci    size_t bufferSize = 0;
7384d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, str, nullptr, 0, &bufferSize) != napi_ok) {
7394d6c458bSopenharmony_ci        HILOG_ERROR("can not get src size");
7404d6c458bSopenharmony_ci        return buffer;
7414d6c458bSopenharmony_ci    }
7424d6c458bSopenharmony_ci    buffer.resize(bufferSize);
7434d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, str, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
7444d6c458bSopenharmony_ci        HILOG_ERROR("can not get src value");
7454d6c458bSopenharmony_ci        return buffer;
7464d6c458bSopenharmony_ci    }
7474d6c458bSopenharmony_ci    return buffer;
7484d6c458bSopenharmony_ci}
7494d6c458bSopenharmony_ci
7504d6c458bSopenharmony_cinapi_value StrToNapiValue(napi_env env, const std::string &result)
7514d6c458bSopenharmony_ci{
7524d6c458bSopenharmony_ci    napi_value output = nullptr;
7534d6c458bSopenharmony_ci    napi_create_string_utf8(env, result.c_str(), result.size(), &output);
7544d6c458bSopenharmony_ci    return output;
7554d6c458bSopenharmony_ci}
7564d6c458bSopenharmony_ci
7574d6c458bSopenharmony_cistd::vector<std::string> GetArray(napi_env env, const napi_value tempStr)
7584d6c458bSopenharmony_ci{
7594d6c458bSopenharmony_ci    std::vector<std::string> strVec;
7604d6c458bSopenharmony_ci    napi_value napiStr = nullptr;
7614d6c458bSopenharmony_ci    uint32_t length = 0;
7624d6c458bSopenharmony_ci    size_t strLength = 0;
7634d6c458bSopenharmony_ci    napi_get_array_length(env, tempStr, &length);
7644d6c458bSopenharmony_ci    for (size_t i = 0; i < length; i++) {
7654d6c458bSopenharmony_ci        napi_get_element(env, tempStr, i, &napiStr);
7664d6c458bSopenharmony_ci        if (napi_get_value_string_utf8(env, napiStr, nullptr, 0, &strLength) != napi_ok) {
7674d6c458bSopenharmony_ci            HILOG_ERROR("can not get napiStr size");
7684d6c458bSopenharmony_ci            return strVec;
7694d6c458bSopenharmony_ci        }
7704d6c458bSopenharmony_ci        if (strLength > 0) {
7714d6c458bSopenharmony_ci            std::string itemStr = "";
7724d6c458bSopenharmony_ci            itemStr.resize(strLength);
7734d6c458bSopenharmony_ci            if (napi_get_value_string_utf8(env, napiStr, itemStr.data(), strLength + 1, &strLength) != napi_ok) {
7744d6c458bSopenharmony_ci                HILOG_ERROR("can not get napiStr size");
7754d6c458bSopenharmony_ci                return strVec;
7764d6c458bSopenharmony_ci            }
7774d6c458bSopenharmony_ci            strVec.push_back(itemStr);
7784d6c458bSopenharmony_ci        } else {
7794d6c458bSopenharmony_ci            strVec.push_back("");
7804d6c458bSopenharmony_ci        }
7814d6c458bSopenharmony_ci    }
7824d6c458bSopenharmony_ci    return strVec;
7834d6c458bSopenharmony_ci}
7844d6c458bSopenharmony_ci
7854d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ModuleTest001, testing::ext::TestSize.Level0)
7864d6c458bSopenharmony_ci{
7874d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
7884d6c458bSopenharmony_ci    napi_value exports = nullptr;
7894d6c458bSopenharmony_ci    napi_create_object(env, &exports);
7904d6c458bSopenharmony_ci    OHOS::Uri::UriInit(env, exports);
7914d6c458bSopenharmony_ci    napi_value uriClass = nullptr;
7924d6c458bSopenharmony_ci    napi_value constructorArgs[1] =  { 0 };
7934d6c458bSopenharmony_ci    std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
7944d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
7954d6c458bSopenharmony_ci    napi_status status = napi_get_named_property(env, exports, "Uri", &uriClass);
7964d6c458bSopenharmony_ci    napi_value instance = nullptr;
7974d6c458bSopenharmony_ci    status = napi_new_instance(env, uriClass, 1, constructorArgs, &instance);
7984d6c458bSopenharmony_ci    napi_value getTemp = nullptr;
7994d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "scheme", &getTemp);
8004d6c458bSopenharmony_ci    std::string res = GetStringUtf8(env, getTemp);
8014d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http");
8024d6c458bSopenharmony_ci
8034d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "authority", &getTemp);
8044d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8054d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "username:password@www.baidu.com:99");
8064d6c458bSopenharmony_ci
8074d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "ssp", &getTemp);
8084d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8094d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "//username:password@www.baidu.com:99/path/path?query");
8104d6c458bSopenharmony_ci
8114d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "userInfo", &getTemp);
8124d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8134d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "username:password");
8144d6c458bSopenharmony_ci
8154d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "host", &getTemp);
8164d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8174d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "www.baidu.com");
8184d6c458bSopenharmony_ci
8194d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "port", &getTemp);
8204d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8214d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "99");
8224d6c458bSopenharmony_ci
8234d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "path", &getTemp);
8244d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8254d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "/path/path");
8264d6c458bSopenharmony_ci
8274d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "query", &getTemp);
8284d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8294d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "query");
8304d6c458bSopenharmony_ci
8314d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "fragment", &getTemp);
8324d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8334d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "fagment");
8344d6c458bSopenharmony_ci
8354d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "isFailed", &getTemp);
8364d6c458bSopenharmony_ci    res = GetStringUtf8(env, getTemp);
8374d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "");
8384d6c458bSopenharmony_ci}
8394d6c458bSopenharmony_ci
8404d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ModuleTest002, testing::ext::TestSize.Level0)
8414d6c458bSopenharmony_ci{
8424d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
8434d6c458bSopenharmony_ci    napi_value exports = nullptr;
8444d6c458bSopenharmony_ci    napi_create_object(env, &exports);
8454d6c458bSopenharmony_ci    OHOS::Uri::UriInit(env, exports);
8464d6c458bSopenharmony_ci    napi_value uriClass = nullptr;
8474d6c458bSopenharmony_ci    napi_value constructorArgs[1] =  { 0 };
8484d6c458bSopenharmony_ci    std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
8494d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
8504d6c458bSopenharmony_ci    napi_get_named_property(env, exports, "Uri", &uriClass);
8514d6c458bSopenharmony_ci    napi_value instance = nullptr;
8524d6c458bSopenharmony_ci    napi_new_instance(env, uriClass, 1, constructorArgs, &instance);
8534d6c458bSopenharmony_ci    napi_value tempFn = nullptr;
8544d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "checkIsAbsolute", &tempFn);
8554d6c458bSopenharmony_ci    napi_value result = nullptr;
8564d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
8574d6c458bSopenharmony_ci    ASSERT_TRUE(result);
8584d6c458bSopenharmony_ci
8594d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "toString", &tempFn);
8604d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
8614d6c458bSopenharmony_ci    std::string res = GetStringUtf8(env, result);
8624d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http://username:password@www.baidu.com:99/path/path?query#fagment");
8634d6c458bSopenharmony_ci
8644d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "normalize", &tempFn);
8654d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
8664d6c458bSopenharmony_ci    res = GetStringUtf8(env, result);
8674d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http://username:password@www.baidu.com:99/path/path?query#fagment");
8684d6c458bSopenharmony_ci
8694d6c458bSopenharmony_ci    napi_value equalsFn = nullptr;
8704d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "equals", &equalsFn);
8714d6c458bSopenharmony_ci    napi_value constructorArgs1[1] = { 0 };
8724d6c458bSopenharmony_ci    std::string input2 = "http://username:password@www.baidu.com:88/path?query1#fagment";
8734d6c458bSopenharmony_ci    napi_create_string_utf8(env, input2.c_str(), input2.size(), &constructorArgs1[0]);
8744d6c458bSopenharmony_ci    napi_value otherInstance = nullptr;
8754d6c458bSopenharmony_ci    napi_new_instance(env, uriClass, 1, constructorArgs1, &otherInstance);
8764d6c458bSopenharmony_ci    napi_value args[1] = { otherInstance };
8774d6c458bSopenharmony_ci    napi_value result1 = nullptr;
8784d6c458bSopenharmony_ci    napi_call_function(env, instance, equalsFn, 1, args, &result1);
8794d6c458bSopenharmony_ci    bool res1 = true;
8804d6c458bSopenharmony_ci    napi_get_value_bool(env, result1, &res1);
8814d6c458bSopenharmony_ci    ASSERT_FALSE(res1);
8824d6c458bSopenharmony_ci}
8834d6c458bSopenharmony_ci
8844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ModuleTest003, testing::ext::TestSize.Level0)
8854d6c458bSopenharmony_ci{
8864d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
8874d6c458bSopenharmony_ci    napi_value exports = nullptr;
8884d6c458bSopenharmony_ci    napi_create_object(env, &exports);
8894d6c458bSopenharmony_ci    OHOS::Uri::UriInit(env, exports);
8904d6c458bSopenharmony_ci    napi_value uriClass = nullptr;
8914d6c458bSopenharmony_ci    napi_value constructorArgs[1] =  { 0 };
8924d6c458bSopenharmony_ci    std::string input = "http://name:word@www.uritest.com:99/path/abc?query#fagment";
8934d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
8944d6c458bSopenharmony_ci    napi_get_named_property(env, exports, "Uri", &uriClass);
8954d6c458bSopenharmony_ci    napi_value instance = nullptr;
8964d6c458bSopenharmony_ci    napi_new_instance(env, uriClass, 1, constructorArgs, &instance);
8974d6c458bSopenharmony_ci    napi_value tempFn = nullptr;
8984d6c458bSopenharmony_ci
8994d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "checkIsRelative", &tempFn);
9004d6c458bSopenharmony_ci    napi_value result = nullptr;
9014d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
9024d6c458bSopenharmony_ci    bool flag = true;
9034d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &flag);
9044d6c458bSopenharmony_ci    ASSERT_FALSE(flag);
9054d6c458bSopenharmony_ci
9064d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "checkIsOpaque", &tempFn);
9074d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
9084d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &flag);
9094d6c458bSopenharmony_ci    ASSERT_FALSE(flag);
9104d6c458bSopenharmony_ci
9114d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "checkIsHierarchical", &tempFn);
9124d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
9134d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &flag);
9144d6c458bSopenharmony_ci    ASSERT_TRUE(flag);
9154d6c458bSopenharmony_ci
9164d6c458bSopenharmony_ci    napi_value key = StrToNapiValue(env, "aaa");
9174d6c458bSopenharmony_ci    napi_value value = StrToNapiValue(env, "bbb");
9184d6c458bSopenharmony_ci    napi_value keyArgs[] = { key, value };
9194d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "addQueryValue", &tempFn);
9204d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 2, keyArgs, &result);
9214d6c458bSopenharmony_ci    std::string res = GetStringUtf8(env, result);
9224d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http://name:word@www.uritest.com:99/path/abc?query&aaa=bbb#fagment");
9234d6c458bSopenharmony_ci
9244d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "getSegment", &tempFn);
9254d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
9264d6c458bSopenharmony_ci    std::vector<std::string> temp = GetArray(env, result);
9274d6c458bSopenharmony_ci    ASSERT_STREQ(temp[0].c_str(), "path");
9284d6c458bSopenharmony_ci    ASSERT_STREQ(temp[1].c_str(), "abc");
9294d6c458bSopenharmony_ci
9304d6c458bSopenharmony_ci    napi_value segment = StrToNapiValue(env, "aaa");
9314d6c458bSopenharmony_ci    napi_value segargs[] = { segment };
9324d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "addSegment", &tempFn);
9334d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 1, segargs, &result);
9344d6c458bSopenharmony_ci    res = GetStringUtf8(env, result);
9354d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http://name:word@www.uritest.com:99/path/abc/aaa?query#fagment");
9364d6c458bSopenharmony_ci
9374d6c458bSopenharmony_ci    napi_get_named_property(env, instance, "clearQuery", &tempFn);
9384d6c458bSopenharmony_ci    napi_call_function(env, instance, tempFn, 0, nullptr, &result);
9394d6c458bSopenharmony_ci    res = GetStringUtf8(env, result);
9404d6c458bSopenharmony_ci    ASSERT_STREQ(res.c_str(), "http://name:word@www.uritest.com:99/path/abc#fagment");
9414d6c458bSopenharmony_ci}