• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "test.h"
17 #include "napi/native_api.h"
18 #include "napi/native_node_api.h"
19 #include "tools/log.h"
20 #include "js_url.h"
21 #include <regex>
22 #include <sstream>
23 #include "securec.h"
24 #include "unicode/stringpiece.h"
25 #include "unicode/unistr.h"
26 #include "native_module_url.h"
27 #include "url_helper.h"
28 
29 #define ASSERT_CHECK_CALL(call)   \
30     {                             \
31         ASSERT_EQ(call, napi_ok); \
32     }
33 
34 #define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
35     {                                                           \
36         napi_valuetype valueType = napi_undefined;              \
37         ASSERT_TRUE(value != nullptr);                          \
38         ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
39         ASSERT_EQ(valueType, type);                             \
40     }
41 
DealNapiStrValue(napi_env env,const napi_value napiStr,std::string & result)42 napi_status DealNapiStrValue(napi_env env, const napi_value napiStr, std::string &result)
43 {
44     std::string buffer = "";
45     size_t bufferSize = 0;
46     napi_status status = napi_ok;
47     status = napi_get_value_string_utf8(env, napiStr, nullptr, -1, &bufferSize);
48     buffer.reserve(bufferSize + 1);
49     buffer.resize(bufferSize);
50     if (status != napi_ok) {
51         HILOG_ERROR("can not get buffer size");
52         return status;
53     }
54     if (bufferSize > 0) {
55         status = napi_get_value_string_utf8(env, napiStr, buffer.data(), bufferSize + 1, &bufferSize);
56         if (status != napi_ok) {
57             HILOG_ERROR("can not get buffer value");
58             return status;
59         }
60     }
61     if (buffer.data() != nullptr) {
62         result = buffer;
63     }
64     return status;
65 }
66 
StrToNapiValue(napi_env env,const std::string & result)67 napi_value StrToNapiValue(napi_env env, const std::string &result)
68 {
69     napi_value output = nullptr;
70     napi_create_string_utf8(env, result.c_str(), result.size(), &output);
71     return output;
72 }
73 
IsEscapeRange(const char ch)74 static bool IsEscapeRange(const char ch)
75 {
76     if ((ch > 0 && ch < '*') || (ch > '*' && ch < '-') || (ch == '/') ||
77         (ch > '9' && ch < 'A') || (ch > 'Z' && ch < '_') || (ch == '`') || (ch > 'z')) {
78         return true;
79     }
80     return false;
81 }
82 
ReviseStr(std::string & str,std::string * reviseChar)83 static std::string ReviseStr(std::string &str, std::string *reviseChar)
84 {
85     icu::StringPiece sp(str.c_str());
86     icu::UnicodeString wstr = icu::UnicodeString::fromUTF8(sp);
87     const size_t lenStr = static_cast<size_t>(wstr.length());
88     if (lenStr == 0) {
89         return "";
90     }
91     std::string output = "";
92     size_t numOfAscii = 128; // 128:Number of ASCII characters
93     size_t i = 0;
94     for (; i < lenStr; i++) {
95         auto charaEncode = static_cast<size_t>(wstr[i]);
96         if (charaEncode < numOfAscii) {
97             // 2:Defines the escape range of ASCII characters
98             if (IsEscapeRange(charaEncode)) {
99                 output += reviseChar[charaEncode];
100             } else {
101                 output += str.substr(i, 1);
102             }
103         } else if (charaEncode <= 0x000007FF) { // Convert the Unicode code into two bytes
104             std::string output1 = reviseChar[0x000000C0 | (charaEncode / 64)]; // 64:the first byte
105             std::string output2 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
106             output += output1 + output2;
107         } else if ((charaEncode >= 0x0000E000) || (charaEncode <= 0x0000D7FF)) {
108             std::string output1 = reviseChar[0x000000E0 | (charaEncode / 4096)]; // 4096:Acquisition method
109             std::string output2 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:second byte
110             std::string output3 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
111             output += output1 + output2 + output3;
112         } else {
113             const size_t charaEncode1 = static_cast<size_t>(str[++i]) & 1023; // 1023:Convert codes
114             charaEncode = 65536 + (((charaEncode & 1023) << 10) | charaEncode1); // 65536:Specific transcoding
115             std::string output1 = reviseChar[0x000000F0 | (charaEncode / 262144)]; // 262144:the first byte
116             std::string output2 = reviseChar[numOfAscii | ((charaEncode / 4096) & 0x0000003F)]; // 4096:second byte
117             std::string output3 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:third byte
118             std::string output4 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
119             output += output1 + output2 + output3 + output4;
120         }
121     }
122     return output;
123 }
124 
DecimalToPercentHexString(uint8_t n)125 static std::string DecimalToPercentHexString(uint8_t n)
126 {
127     std::string tem = "%";
128     return tem + OHOS::Url::HEX_CHAR_MAP[(n >> OHOS::Url::INT_SHIFT_SIZE) & 0xf] + OHOS::Url::HEX_CHAR_MAP[n & 0xf];
129 }
130 
ToString(napi_env env,std::vector<std::string> & searchParams)131 napi_value ToString(napi_env env, std::vector<std::string> &searchParams)
132 {
133     std::string output = "";
134     std::string reviseChar[256] = {""}; // 256:Array length
135     for (size_t i = 0; i < 256; ++i) { // 256:Array length
136         size_t j = i;
137         std::stringstream ioss;
138         std::string str1 = "";
139         ioss << std::hex << j;
140         ioss >> str1;
141         transform(str1.begin(), str1.end(), str1.begin(), ::toupper);
142         if (i < 16) { // 16:Total number of 0-F
143             reviseChar[i] = '%' + ("0" + str1);
144         } else {
145             reviseChar[i] = '%' + str1;
146         }
147     }
148     reviseChar[0x20] = "+"; // 0x20:ASCII value of spaces
149     const size_t lenStr = searchParams.size();
150     napi_value result = nullptr;
151     if (lenStr == 0) {
152         napi_create_string_utf8(env, output.c_str(), output.size(), &result);
153         return result;
154     }
155     std::string firstStrKey = ReviseStr(searchParams[0], reviseChar);
156     std::string firstStrValue = ReviseStr(searchParams[1], reviseChar);
157     output = firstStrKey + "=" + firstStrValue;
158     if (lenStr % 2 == 0) { // 2:Divisible by 2
159         size_t pos = 2; // 2:Initial Position
160         for (; pos < lenStr; pos += 2) { // 2:Searching for the number and number of keys and values
161             std::string strKey = ReviseStr(searchParams[pos], reviseChar);
162             std::string strValue = ReviseStr(searchParams[pos + 1], reviseChar);
163             output += +"&" + strKey + "=" + strValue;
164         }
165     }
166     napi_create_string_utf8(env, output.c_str(), output.size(), &result);
167     return result;
168 }
169 
GetParamsStrig(napi_env env,const napi_value tempStr)170 static std::vector<std::string> GetParamsStrig(napi_env env, const napi_value tempStr)
171 {
172     std::vector<std::string> vec;
173     size_t arraySize = 0;
174     uint32_t length = 0;
175     napi_get_array_length(env, tempStr, &length);
176     napi_value napiStr = nullptr;
177     for (size_t i = 0; i < length; i++) {
178         napi_get_element(env, tempStr, i, &napiStr);
179         if (napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize) != napi_ok) {
180             HILOG_ERROR("can not get napiStr size");
181             return vec;
182         }
183         if (arraySize > 0) {
184             std::string cstr = "";
185             cstr.resize(arraySize);
186             if (napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize) != napi_ok) {
187                 HILOG_ERROR("can not get napiStr size");
188                 return vec;
189             }
190             vec.push_back(cstr);
191         } else {
192             vec.push_back("");
193         }
194     }
195     return vec;
196 }
197 
198 HWTEST_F(NativeEngineTest, testUrlConstructs001, testing::ext::TestSize.Level0)
199 {
200     OHOS::Url::URL url("https://example.org:81/a/b/c?query#fragment");
201     std::string output;
202     napi_env env = (napi_env)engine_;
203     DealNapiStrValue(env, url.GetPath(env), output);
204     ASSERT_STREQ(output.c_str(), "/a/b/c");
205 }
206 
207 HWTEST_F(NativeEngineTest, testUrlConstructs002, testing::ext::TestSize.Level0)
208 {
209     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
210     std::string output;
211     napi_env env = (napi_env)engine_;
212     DealNapiStrValue(env, url.GetPath(env), output);
213     ASSERT_STREQ(output.c_str(), "/directory/file");
214 }
215 
216 HWTEST_F(NativeEngineTest, testUrlConstructs003, testing::ext::TestSize.Level0)
217 {
218     OHOS::Url::URL url("../baz", "http://example.org/foo/bar");
219     std::string output;
220     napi_env env = (napi_env)engine_;
221     DealNapiStrValue(env, url.GetPath(env), output);
222     ASSERT_STREQ(output.c_str(), "/baz");
223 }
224 
225 HWTEST_F(NativeEngineTest, testUrlConstructs004, testing::ext::TestSize.Level0)
226 {
227     OHOS::Url::URL url("/../sca/./path/path/../scasa/jjjjj", "http://www.example.com");
228     std::string output;
229     napi_env env = (napi_env)engine_;
230     DealNapiStrValue(env, url.GetPath(env), output);
231     ASSERT_STREQ(output.c_str(), "/sca/path/scasa/jjjjj");
232 }
233 
234 HWTEST_F(NativeEngineTest, testUrlConstructs005, testing::ext::TestSize.Level0)
235 {
236     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
237     std::string output;
238     napi_env env = (napi_env)engine_;
239     DealNapiStrValue(env, url.GetScheme(env), output);
240     ASSERT_STREQ(output.c_str(), "http:");
241 }
242 
243 HWTEST_F(NativeEngineTest, testUrlConstructs006, testing::ext::TestSize.Level0)
244 {
245     OHOS::Url::URL base("http://www.example.com");
246     OHOS::Url::URL url("//sca/./path/./scasa#", base);
247     std::string output;
248     napi_env env = (napi_env)engine_;
249     DealNapiStrValue(env, url.GetPath(env), output);
250     ASSERT_STREQ(output.c_str(), "/path/scasa");
251 }
252 
253 HWTEST_F(NativeEngineTest, testUrlConstructs007, testing::ext::TestSize.Level0)
254 {
255     OHOS::Url::URL base("http://www.example.com");
256     OHOS::Url::URL url("/dire/query", base);
257     std::string output;
258     napi_env env = (napi_env)engine_;
259     DealNapiStrValue(env, url.GetPath(env), output);
260     ASSERT_STREQ(output.c_str(), "/dire/query");
261 }
262 
263 HWTEST_F(NativeEngineTest, testUrlConstructs008, testing::ext::TestSize.Level0)
264 {
265     OHOS::Url::URL base("http://www.example.com");
266     OHOS::Url::URL url("foo/bar//fragment", base);
267     std::string output;
268     napi_env env = (napi_env)engine_;
269     DealNapiStrValue(env, url.GetPath(env), output);
270     ASSERT_STREQ(output.c_str(), "/foo/bar//fragment");
271 }
272 
273 HWTEST_F(NativeEngineTest, testUrlConstructs009, testing::ext::TestSize.Level0)
274 {
275     OHOS::Url::URL base("http://www.example.com");
276     OHOS::Url::URL url("/../sca/./path/./s#casa", base);
277     std::string output;
278     napi_env env = (napi_env)engine_;
279     DealNapiStrValue(env, url.GetPath(env), output);
280     ASSERT_STREQ(output.c_str(), "/sca/path/s");
281 }
282 
283 HWTEST_F(NativeEngineTest, testUrlConstructs010, testing::ext::TestSize.Level0)
284 {
285     OHOS::Url::URL base("http://www.example.com");
286     OHOS::Url::URL url("/../sca/./path/./sca?sa", base);
287     std::string output;
288     napi_env env = (napi_env)engine_;
289     DealNapiStrValue(env, url.GetPath(env), output);
290     ASSERT_STREQ(output.c_str(), "/sca/path/sca");
291 }
292 
293 HWTEST_F(NativeEngineTest, testUrlConstructs011, testing::ext::TestSize.Level0)
294 {
295     OHOS::Url::URL base("http://www.example.com");
296     OHOS::Url::URL url("", base);
297     std::string output;
298     napi_env env = (napi_env)engine_;
299     DealNapiStrValue(env, url.GetPath(env), output);
300     ASSERT_STREQ(output.c_str(), "/");
301 }
302 
303 HWTEST_F(NativeEngineTest, testUrlConstructs012, testing::ext::TestSize.Level0)
304 {
305     OHOS::Url::URL url("file://\\/www.example.com");
306     std::string output;
307     napi_env env = (napi_env)engine_;
308     DealNapiStrValue(env, url.GetScheme(env), output);
309     ASSERT_STREQ(output.c_str(), "file:");
310 }
311 
312 HWTEST_F(NativeEngineTest, testUrlConstructs013, testing::ext::TestSize.Level0)
313 {
314     OHOS::Url::URL url("file:///www.example.com");
315     std::string output;
316     napi_env env = (napi_env)engine_;
317     DealNapiStrValue(env, url.GetScheme(env), output);
318     ASSERT_STREQ(output.c_str(), "file:");
319 }
320 
321 HWTEST_F(NativeEngineTest, testUrlConstructs014, testing::ext::TestSize.Level0)
322 {
323     OHOS::Url::URL url("http1://www.example.com");
324     std::string output;
325     napi_env env = (napi_env)engine_;
326     DealNapiStrValue(env, url.GetScheme(env), output);
327     ASSERT_STREQ(output.c_str(), "http1:");
328 }
329 
330 HWTEST_F(NativeEngineTest, testUrlConstructs015, testing::ext::TestSize.Level0)
331 {
332     OHOS::Url::URL url("http2://www.example.com:22/adfee/kk?a=4#saf");
333     std::string output;
334     napi_env env = (napi_env)engine_;
335     DealNapiStrValue(env, url.GetScheme(env), output);
336     ASSERT_STREQ(output.c_str(), "http2:");
337 }
338 
339 HWTEST_F(NativeEngineTest, testUrlConstructs016, testing::ext::TestSize.Level0)
340 {
341     OHOS::Url::URL url("http2://username:password@www.example.com:22/adfee/kk?a=4#saf");
342     std::string output;
343     napi_env env = (napi_env)engine_;
344     DealNapiStrValue(env, url.GetScheme(env), output);
345     ASSERT_STREQ(output.c_str(), "http2:");
346 }
347 
348 HWTEST_F(NativeEngineTest, testUrlConstructs017, testing::ext::TestSize.Level0)
349 {
350     OHOS::Url::URL url("http://");
351     napi_env env = (napi_env)engine_;
352     napi_value result = url.GetOnOrOff(env);
353     bool value = false;
354     napi_get_value_bool(env, result, &value);
355     ASSERT_FALSE(value);
356 }
357 
358 HWTEST_F(NativeEngineTest, testUrlConstructs018, testing::ext::TestSize.Level0)
359 {
360     OHOS::Url::URL url("http://username:password@/adfee/kk?a=4#saf");
361     napi_env env = (napi_env)engine_;
362     napi_value result = url.GetOnOrOff(env);
363     bool value = false;
364     napi_get_value_bool(env, result, &value);
365     ASSERT_FALSE(value);
366 }
367 
368 HWTEST_F(NativeEngineTest, testUrlConstructs019, testing::ext::TestSize.Level0)
369 {
370     OHOS::Url::URL url("http://username:password@/adfee/kk?a=4#saf", "");
371     napi_env env = (napi_env)engine_;
372     napi_value result = url.GetOnOrOff(env);
373     bool value = false;
374     napi_get_value_bool(env, result, &value);
375     ASSERT_FALSE(value);
376 }
377 
378 HWTEST_F(NativeEngineTest, testUrlConstructs020, testing::ext::TestSize.Level0)
379 {
380     OHOS::Url::URL url("http://username:password@sda/adfee/kk?a=4#saf", "http://sads/sad");
381     napi_env env = (napi_env)engine_;
382     napi_value result = url.GetOnOrOff(env);
383     bool value = false;
384     napi_get_value_bool(env, result, &value);
385     ASSERT_TRUE(value);
386 }
387 
388 HWTEST_F(NativeEngineTest, testUrlConstructs021, testing::ext::TestSize.Level0)
389 {
390     OHOS::Url::URL url("//fdsa", "http://sad");
391     napi_env env = (napi_env)engine_;
392     napi_value result = url.GetOnOrOff(env);
393     bool value = false;
394     napi_get_value_bool(env, result, &value);
395     ASSERT_TRUE(value);
396 }
397 
398 HWTEST_F(NativeEngineTest, testUrlConstructs022, testing::ext::TestSize.Level0)
399 {
400     OHOS::Url::URL url("-http://username:password@/adfee/kk?a=4#saf");
401     napi_env env = (napi_env)engine_;
402     napi_value result = url.GetOnOrOff(env);
403     bool value = false;
404     napi_get_value_bool(env, result, &value);
405     ASSERT_FALSE(value);
406 }
407 
408 HWTEST_F(NativeEngineTest, testUrlConstructs023, testing::ext::TestSize.Level0)
409 {
410     OHOS::Url::URL base("http://www.example.com");
411     OHOS::Url::URL url("//asd", base);
412     napi_env env = (napi_env)engine_;
413     napi_value result = url.GetOnOrOff(env);
414     bool value = false;
415     napi_get_value_bool(env, result, &value);
416     ASSERT_TRUE(value);
417 }
418 
419 HWTEST_F(NativeEngineTest, testUrlProtocol001, testing::ext::TestSize.Level0)
420 {
421     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
422     std::string output;
423     napi_env env = (napi_env)engine_;
424     DealNapiStrValue(env, url.GetScheme(env), output);
425     ASSERT_STREQ(output.c_str(), "http:");
426 }
427 
428 HWTEST_F(NativeEngineTest, testUrlProtocol002, testing::ext::TestSize.Level0)
429 {
430     OHOS::Url::URL url("ftp://username:password@host:8080/directory/file?query#fragment");
431     std::string output;
432     napi_env env = (napi_env)engine_;
433     DealNapiStrValue(env, url.GetScheme(env), output);
434     ASSERT_STREQ(output.c_str(), "ftp:");
435 }
436 
437 HWTEST_F(NativeEngineTest, testUrlProtocol003, testing::ext::TestSize.Level0)
438 {
439     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
440     std::string output;
441     napi_env env = (napi_env)engine_;
442     DealNapiStrValue(env, url.GetScheme(env), output);
443     ASSERT_STREQ(output.c_str(), "https:");
444 }
445 
446 HWTEST_F(NativeEngineTest, testUrlSetScheme001, testing::ext::TestSize.Level0)
447 {
448     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
449     std::string output;
450     napi_env env = (napi_env)engine_;
451     DealNapiStrValue(env, url.GetScheme(env), output);
452     ASSERT_STREQ(output.c_str(), "https:");
453     url.SetScheme("ftp:");
454     DealNapiStrValue(env, url.GetScheme(env), output);
455     ASSERT_STREQ(output.c_str(), "ftp:");
456 }
457 
458 HWTEST_F(NativeEngineTest, testUrlSetScheme002, testing::ext::TestSize.Level0)
459 {
460     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
461     std::string output;
462     napi_env env = (napi_env)engine_;
463     DealNapiStrValue(env, url.GetScheme(env), output);
464     ASSERT_STREQ(output.c_str(), "https:");
465     url.SetScheme("666");
466     DealNapiStrValue(env, url.GetScheme(env), output);
467     ASSERT_STREQ(output.c_str(), "https:");
468 }
469 
470 HWTEST_F(NativeEngineTest, testUrlSetScheme003, testing::ext::TestSize.Level0)
471 {
472     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
473     std::string output;
474     napi_env env = (napi_env)engine_;
475     DealNapiStrValue(env, url.GetScheme(env), output);
476     ASSERT_STREQ(output.c_str(), "https:");
477     url.SetScheme("-/+");
478     DealNapiStrValue(env, url.GetScheme(env), output);
479     ASSERT_STREQ(output.c_str(), "https:");
480 }
481 
482 HWTEST_F(NativeEngineTest, testUrlSetScheme004, testing::ext::TestSize.Level0)
483 {
484     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
485     std::string output;
486     napi_env env = (napi_env)engine_;
487     DealNapiStrValue(env, url.GetScheme(env), output);
488     ASSERT_STREQ(output.c_str(), "https:");
489     url.SetScheme("file");
490     DealNapiStrValue(env, url.GetScheme(env), output);
491     ASSERT_STREQ(output.c_str(), "https:");
492 }
493 
494 HWTEST_F(NativeEngineTest, testUrlUsername001, testing::ext::TestSize.Level0)
495 {
496     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
497     std::string output;
498     napi_env env = (napi_env)engine_;
499     DealNapiStrValue(env, url.GetUsername(env), output);
500     ASSERT_STREQ(output.c_str(), "username");
501 }
502 
503 HWTEST_F(NativeEngineTest, testUrlUsername002, testing::ext::TestSize.Level0)
504 {
505     OHOS::Url::URL url("http://zhao:password@host:8080/directory/file?query#fragment");
506     std::string output;
507     napi_env env = (napi_env)engine_;
508     DealNapiStrValue(env, url.GetUsername(env), output);
509     ASSERT_STREQ(output.c_str(), "zhao");
510 }
511 
512 HWTEST_F(NativeEngineTest, testUrlUsername003, testing::ext::TestSize.Level0)
513 {
514     OHOS::Url::URL url("http://skk:password@host:8080/directory/file?query#fragment");
515     std::string output;
516     napi_env env = (napi_env)engine_;
517     DealNapiStrValue(env, url.GetUsername(env), output);
518     ASSERT_STREQ(output.c_str(), "skk");
519 }
520 
521 HWTEST_F(NativeEngineTest, testUrlSetUsername001, testing::ext::TestSize.Level0)
522 {
523     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
524     std::string output;
525     napi_env env = (napi_env)engine_;
526     DealNapiStrValue(env, url.GetUsername(env), output);
527     ASSERT_STREQ(output.c_str(), "username");
528     url.SetUsername("666");
529     DealNapiStrValue(env, url.GetUsername(env), output);
530     ASSERT_STREQ(output.c_str(), "666");
531 }
532 
533 HWTEST_F(NativeEngineTest, testUrlSetUsername002, testing::ext::TestSize.Level0)
534 {
535     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
536     std::string output;
537     napi_env env = (napi_env)engine_;
538     DealNapiStrValue(env, url.GetUsername(env), output);
539     ASSERT_STREQ(output.c_str(), "username");
540     url.SetUsername("");
541     DealNapiStrValue(env, url.GetUsername(env), output);
542     ASSERT_STREQ(output.c_str(), "");
543 }
544 
545 HWTEST_F(NativeEngineTest, testUrlPassword001, testing::ext::TestSize.Level0)
546 {
547     OHOS::Url::URL url("http://username:11@host:8080/directory/file?query#fragment");
548     std::string output;
549     napi_env env = (napi_env)engine_;
550     DealNapiStrValue(env, url.GetPassword(env), output);
551     ASSERT_STREQ(output.c_str(), "11");
552 }
553 
554 HWTEST_F(NativeEngineTest, testUrlPassword002, testing::ext::TestSize.Level0)
555 {
556     OHOS::Url::URL url("http://username:23aa@host:8080/directory/file?query#fragment");
557     std::string output;
558     napi_env env = (napi_env)engine_;
559     DealNapiStrValue(env, url.GetPassword(env), output);
560     ASSERT_STREQ(output.c_str(), "23aa");
561 }
562 
563 HWTEST_F(NativeEngineTest, testUrlPassword003, testing::ext::TestSize.Level0)
564 {
565     OHOS::Url::URL url("http://username@host:8080/directory/file?query#fragment");
566     std::string output;
567     napi_env env = (napi_env)engine_;
568     DealNapiStrValue(env, url.GetPassword(env), output);
569     ASSERT_STREQ(output.c_str(), "");
570 }
571 
572 HWTEST_F(NativeEngineTest, testUrlSetPassword001, testing::ext::TestSize.Level0)
573 {
574     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
575     std::string output;
576     napi_env env = (napi_env)engine_;
577     DealNapiStrValue(env, url.GetPassword(env), output);
578     ASSERT_STREQ(output.c_str(), "password");
579     url.SetPassword("666");
580     DealNapiStrValue(env, url.GetPassword(env), output);
581     ASSERT_STREQ(output.c_str(), "666");
582 }
583 
584 HWTEST_F(NativeEngineTest, testUrlSetPassword002, testing::ext::TestSize.Level0)
585 {
586     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
587     std::string output;
588     napi_env env = (napi_env)engine_;
589     DealNapiStrValue(env, url.GetPassword(env), output);
590     ASSERT_STREQ(output.c_str(), "password");
591     url.SetPassword("");
592     DealNapiStrValue(env, url.GetPassword(env), output);
593     ASSERT_STREQ(output.c_str(), "");
594 }
595 
596 HWTEST_F(NativeEngineTest, testUrlHost001, testing::ext::TestSize.Level0)
597 {
598     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
599     std::string output;
600     napi_env env = (napi_env)engine_;
601     DealNapiStrValue(env, url.GetHost(env), output);
602     ASSERT_STREQ(output.c_str(), "host:8080");
603 }
604 
605 HWTEST_F(NativeEngineTest, testUrlHost002, testing::ext::TestSize.Level0)
606 {
607     OHOS::Url::URL url("http://username:password@hosthost/directory/file?query#fragment");
608     std::string output;
609     napi_env env = (napi_env)engine_;
610     DealNapiStrValue(env, url.GetHost(env), output);
611     ASSERT_STREQ(output.c_str(), "hosthost");
612 }
613 
614 HWTEST_F(NativeEngineTest, testUrlHost003, testing::ext::TestSize.Level0)
615 {
616     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
617     std::string output;
618     napi_env env = (napi_env)engine_;
619     DealNapiStrValue(env, url.GetHost(env), output);
620     ASSERT_STREQ(output.c_str(), "host:199");
621 }
622 
623 HWTEST_F(NativeEngineTest, testUrlSetHost001, testing::ext::TestSize.Level0)
624 {
625     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
626     std::string output;
627     napi_env env = (napi_env)engine_;
628     DealNapiStrValue(env, url.GetHost(env), output);
629     ASSERT_STREQ(output.c_str(), "host:199");
630     url.SetHost("0.0.0.0.0:199");
631     DealNapiStrValue(env, url.GetHost(env), output);
632     ASSERT_STREQ(output.c_str(), "0.0.0.0.0:199");
633 }
634 
635 HWTEST_F(NativeEngineTest, testUrlSetHost002, testing::ext::TestSize.Level0)
636 {
637     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
638     std::string output;
639     napi_env env = (napi_env)engine_;
640     DealNapiStrValue(env, url.GetHost(env), output);
641     ASSERT_STREQ(output.c_str(), "host:199");
642     url.SetHost("");
643     DealNapiStrValue(env, url.GetHost(env), output);
644     ASSERT_STREQ(output.c_str(), "host:199");
645 }
646 
647 HWTEST_F(NativeEngineTest, testUrlSetHost003, testing::ext::TestSize.Level0)
648 {
649     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
650     std::string output;
651     napi_env env = (napi_env)engine_;
652     DealNapiStrValue(env, url.GetHost(env), output);
653     ASSERT_STREQ(output.c_str(), "host:199");
654     url.SetHost("/");
655     DealNapiStrValue(env, url.GetHost(env), output);
656     ASSERT_STREQ(output.c_str(), "host:199");
657 }
658 
659 HWTEST_F(NativeEngineTest, testUrlSetHost004, testing::ext::TestSize.Level0)
660 {
661     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
662     std::string output;
663     napi_env env = (napi_env)engine_;
664     DealNapiStrValue(env, url.GetHost(env), output);
665     ASSERT_STREQ(output.c_str(), "host:199");
666     url.SetHost("asdzxc:54/");
667     napi_value result = url.GetOnOrOff(env);
668     bool value = false;
669     napi_get_value_bool(env, result, &value);
670     ASSERT_TRUE(value);
671 }
672 
673 HWTEST_F(NativeEngineTest, testUrlSetHref001, testing::ext::TestSize.Level0)
674 {
675     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
676     std::string output;
677     napi_env env = (napi_env)engine_;
678     DealNapiStrValue(env, url.GetHost(env), output);
679     ASSERT_STREQ(output.c_str(), "host:199");
680     url.SetHref("http:example.com");
681     DealNapiStrValue(env, url.GetHost(env), output);
682     ASSERT_STREQ(output.c_str(), "example.com");
683 }
684 
685 HWTEST_F(NativeEngineTest, testUrlSetHref002, testing::ext::TestSize.Level0)
686 {
687     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
688     std::string output;
689     napi_env env = (napi_env)engine_;
690     DealNapiStrValue(env, url.GetHost(env), output);
691     ASSERT_STREQ(output.c_str(), "host:199");
692     url.SetHref("   http:example.com");
693     DealNapiStrValue(env, url.GetHost(env), output);
694     ASSERT_STREQ(output.c_str(), "example.com");
695 }
696 
697 HWTEST_F(NativeEngineTest, testUrlHostname001, testing::ext::TestSize.Level0)
698 {
699     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
700     std::string output;
701     napi_env env = (napi_env)engine_;
702     DealNapiStrValue(env, url.GetHostname(env), output);
703     ASSERT_STREQ(output.c_str(), "host");
704 }
705 
706 HWTEST_F(NativeEngineTest, testUrlHostname002, testing::ext::TestSize.Level0)
707 {
708     OHOS::Url::URL url("http://username:password@host123:8080/directory/file?query#fragment");
709     std::string output;
710     napi_env env = (napi_env)engine_;
711     DealNapiStrValue(env, url.GetHostname(env), output);
712     ASSERT_STREQ(output.c_str(), "host123");
713 }
714 
715 HWTEST_F(NativeEngineTest, testUrlHostname003, testing::ext::TestSize.Level0)
716 {
717     OHOS::Url::URL url("http://username:password@885ssa:8080/directory/file?query#fragment");
718     std::string output;
719     napi_env env = (napi_env)engine_;
720     DealNapiStrValue(env, url.GetHostname(env), output);
721     ASSERT_STREQ(output.c_str(), "885ssa");
722 }
723 
724 HWTEST_F(NativeEngineTest, testUrlPort001, testing::ext::TestSize.Level0)
725 {
726     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
727     std::string output;
728     napi_env env = (napi_env)engine_;
729     DealNapiStrValue(env, url.GetPort(env), output);
730     ASSERT_STREQ(output.c_str(), "8080");
731 }
732 
733 HWTEST_F(NativeEngineTest, testUrlPort002, testing::ext::TestSize.Level0)
734 {
735     OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
736     std::string output;
737     napi_env env = (napi_env)engine_;
738     DealNapiStrValue(env, url.GetPort(env), output);
739     ASSERT_STREQ(output.c_str(), "100");
740 }
741 
742 
743 HWTEST_F(NativeEngineTest, testUrlPort003, testing::ext::TestSize.Level0)
744 {
745     OHOS::Url::URL url("http://username:password@host/directory/file?query#fragment");
746     std::string output;
747     napi_env env = (napi_env)engine_;
748     DealNapiStrValue(env, url.GetPort(env), output);
749     ASSERT_STREQ(output.c_str(), "");
750 }
751 
752 HWTEST_F(NativeEngineTest, testUrlPort004, testing::ext::TestSize.Level0)
753 {
754     OHOS::Url::URL url("http://username:password@host:655656/directory/file?query#fragment");
755     napi_env env = (napi_env)engine_;
756     napi_value result = url.GetOnOrOff(env);
757     bool value = false;
758     napi_get_value_bool(env, result, &value);
759     ASSERT_FALSE(value);
760 }
761 
762 HWTEST_F(NativeEngineTest, testUrlPort005, testing::ext::TestSize.Level0)
763 {
764     OHOS::Url::URL url("http://username:password@host:6c3/directory/file?query#fragment");
765     napi_env env = (napi_env)engine_;
766     napi_value result = url.GetOnOrOff(env);
767     bool value = false;
768     napi_get_value_bool(env, result, &value);
769     ASSERT_FALSE(value);
770 }
771 
772 HWTEST_F(NativeEngineTest, testUrlSetPort001, testing::ext::TestSize.Level0)
773 {
774     OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
775     std::string output;
776     napi_env env = (napi_env)engine_;
777     DealNapiStrValue(env, url.GetPort(env), output);
778     ASSERT_STREQ(output.c_str(), "100");
779     url.SetPort("600?");
780     DealNapiStrValue(env, url.GetPort(env), output);
781     ASSERT_STREQ(output.c_str(), "600");
782 }
783 
784 HWTEST_F(NativeEngineTest, testUrlPathname001, testing::ext::TestSize.Level0)
785 {
786     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
787     std::string output;
788     napi_env env = (napi_env)engine_;
789     DealNapiStrValue(env, url.GetPath(env), output);
790     ASSERT_STREQ(output.c_str(), "/directory/file");
791 }
792 
793 HWTEST_F(NativeEngineTest, testUrlPathname002, testing::ext::TestSize.Level0)
794 {
795     OHOS::Url::URL url("http://username:password@host:8080/directory?query#fragment");
796     std::string output;
797     napi_env env = (napi_env)engine_;
798     DealNapiStrValue(env, url.GetPath(env), output);
799     ASSERT_STREQ(output.c_str(), "/directory");
800 }
801 
802 HWTEST_F(NativeEngineTest, testUrlPathname003, testing::ext::TestSize.Level0)
803 {
804     OHOS::Url::URL url("http2://username:password@host:8080?query#fragment");
805     std::string output;
806     napi_env env = (napi_env)engine_;
807     DealNapiStrValue(env, url.GetPath(env), output);
808     ASSERT_STREQ(output.c_str(), "");
809 }
810 
811 HWTEST_F(NativeEngineTest, testUrlPathname004, testing::ext::TestSize.Level0)
812 {
813     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
814     napi_env env = (napi_env)engine_;
815     napi_value result = url.GetOnOrOff(env);
816     bool value = false;
817     napi_get_value_bool(env, result, &value);
818     ASSERT_TRUE(value);
819 }
820 
821 HWTEST_F(NativeEngineTest, testUrlSetPath001, testing::ext::TestSize.Level0)
822 {
823     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
824     std::string output;
825     napi_env env = (napi_env)engine_;
826     DealNapiStrValue(env, url.GetPath(env), output);
827     ASSERT_STREQ(output.c_str(), "/");
828     url.SetPath("\\D:");
829     DealNapiStrValue(env, url.GetPath(env), output);
830     ASSERT_STREQ(output.c_str(), "/%5CD:");
831 }
832 
833 HWTEST_F(NativeEngineTest, testUrlSetPath002, testing::ext::TestSize.Level0)
834 {
835     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
836     std::string output;
837     napi_env env = (napi_env)engine_;
838     DealNapiStrValue(env, url.GetPath(env), output);
839     ASSERT_STREQ(output.c_str(), "/");
840     url.SetPath(":\\D:");
841     DealNapiStrValue(env, url.GetPath(env), output);
842     ASSERT_STREQ(output.c_str(), "/:%5CD:");
843 }
844 
845 HWTEST_F(NativeEngineTest, testUrlSetPath003, testing::ext::TestSize.Level0)
846 {
847     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
848     std::string output;
849     napi_env env = (napi_env)engine_;
850     DealNapiStrValue(env, url.GetPath(env), output);
851     ASSERT_STREQ(output.c_str(), "/");
852     url.SetPath("::");
853     DealNapiStrValue(env, url.GetPath(env), output);
854     ASSERT_STREQ(output.c_str(), "/::");
855 }
856 
857 HWTEST_F(NativeEngineTest, testUrlSetPath004, testing::ext::TestSize.Level0)
858 {
859     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
860     std::string output;
861     napi_env env = (napi_env)engine_;
862     DealNapiStrValue(env, url.GetPath(env), output);
863     ASSERT_STREQ(output.c_str(), "/");
864     url.SetPath("");
865     DealNapiStrValue(env, url.GetPath(env), output);
866     ASSERT_STREQ(output.c_str(), "/");
867 }
868 
869 HWTEST_F(NativeEngineTest, testUrlSetPath005, testing::ext::TestSize.Level0)
870 {
871     OHOS::Url::URL url("file://hostsasf");
872     std::string output;
873     napi_env env = (napi_env)engine_;
874     url.SetPath("/askdj");
875     DealNapiStrValue(env, url.GetPath(env), output);
876     ASSERT_STREQ(output.c_str(), "/askdj");
877 }
878 
879 HWTEST_F(NativeEngineTest, testUrlSearch001, testing::ext::TestSize.Level0)
880 {
881     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq#fragment");
882     std::string output;
883     napi_env env = (napi_env)engine_;
884     DealNapiStrValue(env, url.GetSearch(env), output);
885     ASSERT_STREQ(output.c_str(), "?query=qqqq");
886 }
887 
888 HWTEST_F(NativeEngineTest, testUrlSearch002, testing::ext::TestSize.Level0)
889 {
890     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq&ll=pp#fragment");
891     std::string output;
892     napi_env env = (napi_env)engine_;
893     DealNapiStrValue(env, url.GetSearch(env), output);
894     ASSERT_STREQ(output.c_str(), "?query=qqqq&ll=pp");
895 }
896 
897 HWTEST_F(NativeEngineTest, testUrlSearch003, testing::ext::TestSize.Level0)
898 {
899     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
900     std::string output;
901     napi_env env = (napi_env)engine_;
902     DealNapiStrValue(env, url.GetSearch(env), output);
903     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
904 }
905 
906 HWTEST_F(NativeEngineTest, testUrlSetSearch001, testing::ext::TestSize.Level0)
907 {
908     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
909     std::string output;
910     napi_env env = (napi_env)engine_;
911     DealNapiStrValue(env, url.GetSearch(env), output);
912     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
913     url.SetSearch("");
914     DealNapiStrValue(env, url.GetSearch(env), output);
915     ASSERT_STREQ(output.c_str(), "");
916 }
917 
918 HWTEST_F(NativeEngineTest, testUrlSetSearch002, testing::ext::TestSize.Level0)
919 {
920     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
921     std::string output;
922     napi_env env = (napi_env)engine_;
923     DealNapiStrValue(env, url.GetSearch(env), output);
924     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
925     url.SetSearch("?444=555");
926     DealNapiStrValue(env, url.GetSearch(env), output);
927     ASSERT_STREQ(output.c_str(), "?444=555");
928 }
929 
930 HWTEST_F(NativeEngineTest, testUrlSetSearch003, testing::ext::TestSize.Level0)
931 {
932     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
933     std::string output;
934     napi_env env = (napi_env)engine_;
935     DealNapiStrValue(env, url.GetSearch(env), output);
936     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
937     url.SetSearch("444=555");
938     DealNapiStrValue(env, url.GetSearch(env), output);
939     ASSERT_STREQ(output.c_str(), "?444=555");
940 }
941 
942 HWTEST_F(NativeEngineTest, testUrlSetSearch004, testing::ext::TestSize.Level0)
943 {
944     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
945     std::string output;
946     napi_env env = (napi_env)engine_;
947     DealNapiStrValue(env, url.GetSearch(env), output);
948     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
949     url.SetSearch("?##44=55");
950     DealNapiStrValue(env, url.GetSearch(env), output);
951     ASSERT_STREQ(output.c_str(), "?%23%2344=55");
952 }
953 
954 HWTEST_F(NativeEngineTest, testUrlGetFragment001, testing::ext::TestSize.Level0)
955 {
956     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
957     std::string output;
958     napi_env env = (napi_env)engine_;
959     DealNapiStrValue(env, url.GetFragment(env), output);
960     ASSERT_STREQ(output.c_str(), "#fragment");
961 }
962 
963 HWTEST_F(NativeEngineTest, testUrlGetFragment002, testing::ext::TestSize.Level0)
964 {
965     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
966     std::string output;
967     napi_env env = (napi_env)engine_;
968     DealNapiStrValue(env, url.GetFragment(env), output);
969     ASSERT_STREQ(output.c_str(), "#fragment");
970 }
971 
972 HWTEST_F(NativeEngineTest, testUrlGetFragment003, testing::ext::TestSize.Level0)
973 {
974     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
975     std::string output;
976     napi_env env = (napi_env)engine_;
977     DealNapiStrValue(env, url.GetFragment(env), output);
978     ASSERT_STREQ(output.c_str(), "#123456");
979 }
980 
981 HWTEST_F(NativeEngineTest, testUrlSetFragment001, testing::ext::TestSize.Level0)
982 {
983     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
984     std::string output;
985     napi_env env = (napi_env)engine_;
986     DealNapiStrValue(env, url.GetFragment(env), output);
987     ASSERT_STREQ(output.c_str(), "#123456");
988     url.SetFragment("");
989     DealNapiStrValue(env, url.GetFragment(env), output);
990     ASSERT_STREQ(output.c_str(), "");
991 }
992 
993 HWTEST_F(NativeEngineTest, testUrlSetFragment002, testing::ext::TestSize.Level0)
994 {
995     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
996     std::string output;
997     napi_env env = (napi_env)engine_;
998     DealNapiStrValue(env, url.GetFragment(env), output);
999     ASSERT_STREQ(output.c_str(), "#123456");
1000     url.SetFragment("#445566");
1001     DealNapiStrValue(env, url.GetFragment(env), output);
1002     ASSERT_STREQ(output.c_str(), "#445566");
1003 }
1004 
1005 HWTEST_F(NativeEngineTest, testUrlSetFragment003, testing::ext::TestSize.Level0)
1006 {
1007     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
1008     std::string output;
1009     napi_env env = (napi_env)engine_;
1010     DealNapiStrValue(env, url.GetFragment(env), output);
1011     ASSERT_STREQ(output.c_str(), "#123456");
1012     url.SetFragment("445566");
1013     DealNapiStrValue(env, url.GetFragment(env), output);
1014     ASSERT_STREQ(output.c_str(), "#445566");
1015 }
1016 
1017 HWTEST_F(NativeEngineTest, testUrlIPV6001, testing::ext::TestSize.Level0)
1018 {
1019     OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C:417A]/index.html");
1020     napi_env env = (napi_env)engine_;
1021     napi_value result = url.GetIsIpv6(env);
1022     bool value = false;
1023     napi_get_value_bool(env, result, &value);
1024     ASSERT_TRUE(value);
1025 }
1026 
1027 HWTEST_F(NativeEngineTest, testUrlIPV6002, testing::ext::TestSize.Level0)
1028 {
1029     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1030     napi_env env = (napi_env)engine_;
1031     napi_value result = url.GetIsIpv6(env);
1032     bool value = false;
1033     napi_get_value_bool(env, result, &value);
1034     ASSERT_FALSE(value);
1035 }
1036 
1037 HWTEST_F(NativeEngineTest, testUrlIPV6003, testing::ext::TestSize.Level0)
1038 {
1039     OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C.417A]/index.html");
1040     napi_env env = (napi_env)engine_;
1041     napi_value result = url.GetIsIpv6(env);
1042     bool value = false;
1043     napi_get_value_bool(env, result, &value);
1044     ASSERT_FALSE(value);
1045 }
1046 
1047 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff001, testing::ext::TestSize.Level0)
1048 {
1049     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1050     napi_env env = (napi_env)engine_;
1051     napi_value result = url.GetOnOrOff(env);
1052     bool value = false;
1053     napi_get_value_bool(env, result, &value);
1054     ASSERT_TRUE(value);
1055 }
1056 
1057 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff002, testing::ext::TestSize.Level0)
1058 {
1059     OHOS::Url::URL url("http://192.168.259.551:80/index.html");
1060     napi_env env = (napi_env)engine_;
1061     napi_value result = url.GetOnOrOff(env);
1062     bool value = false;
1063     napi_get_value_bool(env, result, &value);
1064     ASSERT_FALSE(value);
1065 }
1066 
1067 HWTEST_F(NativeEngineTest, testUrlSetHostname001, testing::ext::TestSize.Level0)
1068 {
1069     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1070     napi_env env = (napi_env)engine_;
1071     std::string output;
1072     std::string value = "host";
1073     url.SetHostname(value);
1074     DealNapiStrValue(env, url.GetHostname(env), output);
1075     ASSERT_STREQ(output.c_str(), "host");
1076 }
1077 
1078 HWTEST_F(NativeEngineTest, testUrlSetHostname002, testing::ext::TestSize.Level0)
1079 {
1080     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1081     napi_env env = (napi_env)engine_;
1082     std::string output;
1083     std::string value = "";
1084     url.SetHostname(value);
1085     DealNapiStrValue(env, url.GetHostname(env), output);
1086     ASSERT_STREQ(output.c_str(), "255.255.255.1");
1087 }
1088 
1089 HWTEST_F(NativeEngineTest, testUrlSetHostname003, testing::ext::TestSize.Level0)
1090 {
1091     OHOS::Url::URL url("file:///www.example.com");
1092     napi_env env = (napi_env)engine_;
1093     std::string value = "localhost/";
1094     url.SetHostname(value);
1095     napi_value result = url.GetOnOrOff(env);
1096     bool value1 = false;
1097     napi_get_value_bool(env, result, &value1);
1098     ASSERT_TRUE(value1);
1099 }
1100 
1101 HWTEST_F(NativeEngineTest, testUrlSearchParams001, testing::ext::TestSize.Level0)
1102 {
1103     OHOS::Url::URL url("http://username:password@host:8080/directory/file?foo=1&bar=2");
1104     std::string output;
1105     napi_env env = (napi_env)engine_;
1106     DealNapiStrValue(env, url.GetSearch(env), output);
1107     ASSERT_STREQ(output.c_str(), "?foo=1&bar=2");
1108 }
1109 
1110 HWTEST_F(NativeEngineTest, testUrlSearchParams002, testing::ext::TestSize.Level0)
1111 {
1112     OHOS::Url::URL url("https://example.com?d=value1&c=value2&b=大&4=key4");
1113     std::string output;
1114     napi_env env = (napi_env)engine_;
1115     DealNapiStrValue(env, url.GetSearch(env), output);
1116     ASSERT_STREQ(output.c_str(), "?d=value1&c=value2&b=大&4=key4");
1117 }
1118 
1119 HWTEST_F(NativeEngineTest, testUrlSearchParams003, testing::ext::TestSize.Level0)
1120 {
1121     OHOS::Url::URL url("http://username:password@host:8080/directory/file?你好=china#qwer=da");
1122     std::string output;
1123     napi_env env = (napi_env)engine_;
1124     DealNapiStrValue(env, url.GetSearch(env), output);
1125     ASSERT_STREQ(output.c_str(), "?你好=china");
1126 }
1127 
1128 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend001, testing::ext::TestSize.Level0)
1129 {
1130     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1131     std::string output;
1132     napi_env env = (napi_env)engine_;
1133     napi_value input1 = StrToNapiValue(env, "ma");
1134     napi_value input2 = StrToNapiValue(env, "jk");
1135     params.Append(env, input1, input2);
1136     napi_value tempValue = params.GetArray(env);
1137     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1138     DealNapiStrValue(env, ToString(env, paramsString), output);
1139     ASSERT_STREQ(output.c_str(), "ma=jk");
1140 }
1141 
1142 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend002, testing::ext::TestSize.Level0)
1143 {
1144     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1145     std::string output;
1146     napi_env env = (napi_env)engine_;
1147     napi_value input1 = StrToNapiValue(env, "ma 大");
1148     napi_value input2 = StrToNapiValue(env, "jk¥");
1149     params.Append(env, input1, input2);
1150     napi_value tempValue = params.GetArray(env);
1151     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1152     DealNapiStrValue(env, ToString(env, paramsString), output);
1153     ASSERT_STREQ(output.c_str(), "ma+%E5%A4%A7=jk%EF%BF%A5");
1154 }
1155 
1156 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend003, testing::ext::TestSize.Level0)
1157 {
1158     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1159     std::string output;
1160     napi_env env = (napi_env)engine_;
1161     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1162     napi_value input2 = StrToNapiValue(env, "jk");
1163     params.Append(env, input1, input2);
1164     napi_value tempValue = params.GetArray(env);
1165     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1166     DealNapiStrValue(env, ToString(env, paramsString), output);
1167     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1168 }
1169 
1170 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend004, testing::ext::TestSize.Level0)
1171 {
1172     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1173     std::string output;
1174     napi_env env = (napi_env)engine_;
1175     napi_value result = nullptr;
1176     napi_get_undefined(env, &result);
1177     napi_value input2 = StrToNapiValue(env, "jk");
1178     params.Append(env, result, input2);
1179     DealNapiStrValue(env, params.Get(env, input2), output);
1180     ASSERT_STREQ(output.c_str(), "");
1181 }
1182 
1183 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend005, testing::ext::TestSize.Level0)
1184 {
1185     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1186     std::string output;
1187     napi_env env = (napi_env)engine_;
1188     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1189     napi_value result = nullptr;
1190     napi_get_undefined(env, &result);
1191     params.Append(env, input1, result);
1192     DealNapiStrValue(env, params.Get(env, input1), output);
1193     ASSERT_STREQ(output.c_str(), "");
1194 }
1195 
1196 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete001, testing::ext::TestSize.Level0)
1197 {
1198     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1199     std::string output;
1200     napi_env env = (napi_env)engine_;
1201     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1202     napi_value input2 = StrToNapiValue(env, "jk");
1203     params.Append(env, input1, input2);
1204     params.Delete(env, input1);
1205     napi_value tempValue = params.GetArray(env);
1206     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1207     DealNapiStrValue(env, ToString(env, paramsString), output);
1208     ASSERT_STREQ(output.c_str(), "");
1209 }
1210 
1211 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete002, testing::ext::TestSize.Level0)
1212 {
1213     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1214     std::string output;
1215     napi_env env = (napi_env)engine_;
1216     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1217     napi_value input2 = StrToNapiValue(env, "jk");
1218     params.Append(env, input1, input2);
1219     napi_value input3 = StrToNapiValue(env, "ma");
1220     napi_value input4 = StrToNapiValue(env, "jk");
1221     params.Append(env, input3, input4);
1222     params.Delete(env, input1);
1223     napi_value tempValue = params.GetArray(env);
1224     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1225     DealNapiStrValue(env, ToString(env, paramsString), output);
1226     ASSERT_STREQ(output.c_str(), "ma=jk");
1227 }
1228 
1229 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete003, testing::ext::TestSize.Level0)
1230 {
1231     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1232     std::string output;
1233     napi_env env = (napi_env)engine_;
1234     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1235     napi_value input2 = StrToNapiValue(env, "jk");
1236     params.Append(env, input1, input2);
1237     napi_value input3 = StrToNapiValue(env, "ma");
1238     napi_value input4 = StrToNapiValue(env, "jk");
1239     params.Append(env, input3, input4);
1240     params.Delete(env, input1);
1241     params.Delete(env, input3);
1242     napi_value tempValue = params.GetArray(env);
1243     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1244     DealNapiStrValue(env, ToString(env, paramsString), output);
1245     ASSERT_STREQ(output.c_str(), "");
1246 }
1247 
1248 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete004, testing::ext::TestSize.Level0)
1249 {
1250     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1251     std::string output;
1252     napi_env env = (napi_env)engine_;
1253     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1254     napi_value input2 = StrToNapiValue(env, "jk");
1255     params.Append(env, input1, input2);
1256     napi_value input3 = StrToNapiValue(env, "ma");
1257     napi_value input4 = StrToNapiValue(env, "jk");
1258     params.Append(env, input3, input4);
1259     napi_value result = nullptr;
1260     napi_get_undefined(env, &result);
1261     params.Delete(env, result);
1262     DealNapiStrValue(env, params.Get(env, input3), output);
1263     ASSERT_STREQ(output.c_str(), "jk");
1264 }
1265 
1266 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet001, testing::ext::TestSize.Level0)
1267 {
1268     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1269     std::string output;
1270     napi_env env = (napi_env)engine_;
1271     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1272     napi_value input2 = StrToNapiValue(env, "jk");
1273     params.Append(env, input1, input2);
1274     DealNapiStrValue(env, params.Get(env, input1), output);
1275     ASSERT_STREQ(output.c_str(), "jk");
1276 }
1277 
1278 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet002, testing::ext::TestSize.Level0)
1279 {
1280     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1281     std::string output;
1282     napi_env env = (napi_env)engine_;
1283     napi_value input1 = StrToNapiValue(env, "jk");
1284     DealNapiStrValue(env, params.Get(env, input1), output);
1285     ASSERT_STREQ(output.c_str(), "");
1286 }
1287 
1288 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet003, testing::ext::TestSize.Level0)
1289 {
1290     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1291     std::string output;
1292     napi_env env = (napi_env)engine_;
1293     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1294     napi_value input2 = StrToNapiValue(env, "jk");
1295     params.Append(env, input1, input2);
1296     DealNapiStrValue(env, params.Get(env, input1), output);
1297     ASSERT_STREQ(output.c_str(), "jk");
1298 }
1299 
1300 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet004, testing::ext::TestSize.Level0)
1301 {
1302     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1303     std::string output;
1304     napi_env env = (napi_env)engine_;
1305     napi_value input1 = StrToNapiValue(env, "hello, \U0001F600 world!");
1306     DealNapiStrValue(env, params.Get(env, input1), output);
1307     ASSERT_STREQ(output.c_str(), "");
1308 }
1309 
1310 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet005, testing::ext::TestSize.Level0)
1311 {
1312     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1313     std::string output;
1314     napi_env env = (napi_env)engine_;
1315     napi_value result = nullptr;
1316     napi_get_undefined(env, &result);
1317     DealNapiStrValue(env, params.Get(env, result), output);
1318     ASSERT_STREQ(output.c_str(), "");
1319 }
1320 
1321 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet006, testing::ext::TestSize.Level0)
1322 {
1323     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1324     std::string output;
1325     napi_env env = (napi_env)engine_;
1326     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1327     napi_value input2 = StrToNapiValue(env, "jk");
1328     napi_value input3 = StrToNapiValue(env, "asd");
1329     params.Append(env, input1, input2);
1330     DealNapiStrValue(env, params.Get(env, input3), output);
1331     ASSERT_STREQ(output.c_str(), "");
1332 }
1333 
1334 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll001, testing::ext::TestSize.Level0)
1335 {
1336     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1337     std::string output;
1338     napi_env env = (napi_env)engine_;
1339     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1340     napi_value input2 = StrToNapiValue(env, "jk");
1341     params.Append(env, input1, input2);
1342     napi_value input3 = StrToNapiValue(env, "jk");
1343     DealNapiStrValue(env, params.GetAll(env, input3), output);
1344     ASSERT_STREQ(output.c_str(), "");
1345 }
1346 
1347 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll002, testing::ext::TestSize.Level0)
1348 {
1349     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1350     std::string output;
1351     napi_env env = (napi_env)engine_;
1352     napi_value input1 = StrToNapiValue(env, "ma");
1353     napi_value input2 = StrToNapiValue(env, "jk");
1354     params.Append(env, input1, input2);
1355     napi_value input3 = StrToNapiValue(env, "jk1");
1356     DealNapiStrValue(env, params.GetAll(env, input3), output);
1357     ASSERT_STREQ(output.c_str(), "");
1358 }
1359 
1360 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll003, testing::ext::TestSize.Level0)
1361 {
1362     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1363     std::string output;
1364     napi_env env = (napi_env)engine_;
1365     napi_value input1 = StrToNapiValue(env, "#[%@]");
1366     napi_value input2 = StrToNapiValue(env, "jk");
1367     params.Append(env, input1, input2);
1368     napi_value input3 = StrToNapiValue(env, "ma1");
1369     napi_value input4 = StrToNapiValue(env, "jk1");
1370     params.Append(env, input3, input4);
1371     napi_value input5 = StrToNapiValue(env, "jk2");
1372     DealNapiStrValue(env, params.GetAll(env, input5), output);
1373     ASSERT_STREQ(output.c_str(), "");
1374 }
1375 
1376 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll004, testing::ext::TestSize.Level0)
1377 {
1378     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1379     std::string output;
1380     napi_env env = (napi_env)engine_;
1381     napi_value result = nullptr;
1382     napi_get_undefined(env, &result);
1383     DealNapiStrValue(env, params.GetAll(env, result), output);
1384     ASSERT_STREQ(output.c_str(), "");
1385 }
1386 
1387 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll005, testing::ext::TestSize.Level0)
1388 {
1389     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1390     std::string output;
1391     napi_env env = (napi_env)engine_;
1392     napi_value input1 = StrToNapiValue(env, "jk");
1393     DealNapiStrValue(env, params.GetAll(env, input1), output);
1394     ASSERT_STREQ(output.c_str(), "");
1395 }
1396 
1397 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll006, testing::ext::TestSize.Level0)
1398 {
1399     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1400     std::string output;
1401     napi_env env = (napi_env)engine_;
1402     napi_value input1 = StrToNapiValue(env, "ma");
1403     napi_value input2 = StrToNapiValue(env, "jk");
1404     params.Append(env, input1, input2);
1405     napi_value input3 = StrToNapiValue(env, "ma");
1406     DealNapiStrValue(env, params.GetAll(env, input3), output);
1407     ASSERT_STREQ(output.c_str(), "");
1408 }
1409 
1410 HWTEST_F(NativeEngineTest, testUrlSearchParamsToUSVString001, testing::ext::TestSize.Level0)
1411 {
1412     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1413     std::string output;
1414     napi_env env = (napi_env)engine_;
1415     napi_value input1 = StrToNapiValue(env, "你好");
1416     napi_value input2 = StrToNapiValue(env, "안녕하세요");
1417     params.Append(env, input1, input2);
1418     napi_value input3 = StrToNapiValue(env, "[saa]");
1419     napi_value input4 = StrToNapiValue(env, "{aas}");
1420     params.Append(env, input3, input4);
1421     napi_value input5 = StrToNapiValue(env, "你好");
1422     DealNapiStrValue(env, params.Get(env, input5), output);
1423     ASSERT_STREQ(output.c_str(), "안녕하세요");
1424 }
1425 
1426 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas001, testing::ext::TestSize.Level0)
1427 {
1428     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1429     std::string output;
1430     napi_env env = (napi_env)engine_;
1431     napi_value input1 = StrToNapiValue(env, "ma");
1432     DealNapiStrValue(env, params.IsHas(env, input1), output);
1433     ASSERT_STREQ(output.c_str(), "");
1434 }
1435 
1436 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas002, testing::ext::TestSize.Level0)
1437 {
1438     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1439     std::string output;
1440     napi_env env = (napi_env)engine_;
1441     napi_value input1 = StrToNapiValue(env, "ma");
1442     napi_value input2 = StrToNapiValue(env, "jk");
1443     params.Append(env, input1, input2);
1444     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1445     napi_value input4 = StrToNapiValue(env, "jk1");
1446     params.Append(env, input3, input4);
1447     DealNapiStrValue(env, params.IsHas(env, input1), output);
1448     ASSERT_STREQ(output.c_str(), "");
1449 }
1450 
1451 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas003, testing::ext::TestSize.Level0)
1452 {
1453     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1454     std::string output;
1455     napi_env env = (napi_env)engine_;
1456     napi_value input1 = StrToNapiValue(env, "ma");
1457     napi_value input2 = StrToNapiValue(env, "jk");
1458     params.Append(env, input1, input2);
1459     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1460     napi_value input4 = StrToNapiValue(env, "jk1");
1461     params.Append(env, input3, input4);
1462     DealNapiStrValue(env, params.IsHas(env, input3), output);
1463     ASSERT_STREQ(output.c_str(), "");
1464 }
1465 
1466 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas004, testing::ext::TestSize.Level0)
1467 {
1468     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1469     std::string output;
1470     napi_env env = (napi_env)engine_;
1471     napi_value input1 = StrToNapiValue(env, "ma");
1472     napi_value input2 = StrToNapiValue(env, "jk");
1473     params.Append(env, input1, input2);
1474     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1475     napi_value input4 = StrToNapiValue(env, "jk1");
1476     params.Append(env, input3, input4);
1477     napi_value result = nullptr;
1478     napi_get_undefined(env, &result);
1479     DealNapiStrValue(env, params.IsHas(env, result), output);
1480     ASSERT_STREQ(output.c_str(), "");
1481 }
1482 
1483 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet001, testing::ext::TestSize.Level0)
1484 {
1485     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1486     std::string output;
1487     napi_env env = (napi_env)engine_;
1488     napi_value input1 = StrToNapiValue(env, "ma");
1489     napi_value input2 = StrToNapiValue(env, "jk");
1490     params.Append(env, input1, input2);
1491     napi_value input3 = StrToNapiValue(env, "aa");
1492     params.Set(env, input1, input3);
1493     napi_value tempValue = params.GetArray(env);
1494     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1495     DealNapiStrValue(env, ToString(env, paramsString), output);
1496     ASSERT_STREQ(output.c_str(), "ma=aa");
1497 }
1498 
1499 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet002, testing::ext::TestSize.Level0)
1500 {
1501     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1502     std::string output;
1503     napi_env env = (napi_env)engine_;
1504     napi_value input1 = StrToNapiValue(env, "ma1");
1505     napi_value input2 = StrToNapiValue(env, "aa");
1506     params.Append(env, input1, input2);
1507     params.Set(env, input1, input2);
1508     napi_value tempValue = params.GetArray(env);
1509     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1510     DealNapiStrValue(env, ToString(env, paramsString), output);
1511     ASSERT_STREQ(output.c_str(), "ma1=aa");
1512 }
1513 
1514 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet003, testing::ext::TestSize.Level0)
1515 {
1516     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1517     std::string output;
1518     napi_env env = (napi_env)engine_;
1519     napi_value input1 = StrToNapiValue(env, "ma");
1520     napi_value input2 = StrToNapiValue(env, "jk");
1521     params.Append(env, input1, input2);
1522     napi_value input3 = StrToNapiValue(env, "ma1");
1523     napi_value input4 = StrToNapiValue(env, "aa");
1524     params.Set(env, input3, input4);
1525     napi_value tempValue = params.GetArray(env);
1526     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1527     DealNapiStrValue(env, ToString(env, paramsString), output);
1528     ASSERT_STREQ(output.c_str(), "ma=jk&ma1=aa");
1529 }
1530 
1531 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet004, testing::ext::TestSize.Level0)
1532 {
1533     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1534     std::string output;
1535     napi_env env = (napi_env)engine_;
1536     napi_value input1 = StrToNapiValue(env, "ma1");
1537     napi_value input2 = StrToNapiValue(env, "aa");
1538     params.Append(env, input1, input2);
1539     napi_value result = nullptr;
1540     napi_get_undefined(env, &result);
1541     params.Set(env, result, input2);
1542     napi_value tempValue = params.GetArray(env);
1543     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1544     DealNapiStrValue(env, ToString(env, paramsString), output);
1545     ASSERT_STREQ(output.c_str(), "ma1=aa");
1546 }
1547 
1548 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet005, testing::ext::TestSize.Level0)
1549 {
1550     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1551     std::string output;
1552     napi_env env = (napi_env)engine_;
1553     napi_value input1 = StrToNapiValue(env, "ma1");
1554     napi_value input2 = StrToNapiValue(env, "aa");
1555     params.Append(env, input1, input2);
1556     napi_value result = nullptr;
1557     napi_get_undefined(env, &result);
1558     params.Set(env, input1, result);
1559     napi_value tempValue = params.GetArray(env);
1560     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1561     DealNapiStrValue(env, ToString(env, paramsString), output);
1562     ASSERT_STREQ(output.c_str(), "ma1=aa");
1563 }
1564 
1565 
1566 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort001, testing::ext::TestSize.Level0)
1567 {
1568     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1569     std::string output;
1570     napi_env env = (napi_env)engine_;
1571     napi_value input1 = StrToNapiValue(env, "ma");
1572     napi_value input2 = StrToNapiValue(env, "jk");
1573     params.Append(env, input1, input2);
1574     napi_value input3 = StrToNapiValue(env, "a");
1575     napi_value input4 = StrToNapiValue(env, "jk1");
1576     params.Append(env, input3, input4);
1577     params.Sort();
1578     napi_value tempValue = params.GetArray(env);
1579     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1580     DealNapiStrValue(env, ToString(env, paramsString), output);
1581     ASSERT_STREQ(output.c_str(), "a=jk1&ma=jk");
1582 }
1583 
1584 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort002, testing::ext::TestSize.Level0)
1585 {
1586     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1587     std::string output;
1588     napi_env env = (napi_env)engine_;
1589     napi_value input1 = StrToNapiValue(env, "ma");
1590     napi_value input2 = StrToNapiValue(env, "jk");
1591     params.Append(env, input1, input2);
1592     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1593     napi_value input4 = StrToNapiValue(env, "jk1");
1594     params.Append(env, input3, input4);
1595     params.Sort();
1596     napi_value tempValue = params.GetArray(env);
1597     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1598     DealNapiStrValue(env, ToString(env, paramsString), output);
1599     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1600 }
1601 
1602 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort003, testing::ext::TestSize.Level0)
1603 {
1604     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1605     std::string output;
1606     napi_env env = (napi_env)engine_;
1607     napi_value input1 = StrToNapiValue(env, "ma");
1608     napi_value input2 = StrToNapiValue(env, "jk");
1609     params.Append(env, input1, input2);
1610     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1611     napi_value input4 = StrToNapiValue(env, "jk1");
1612     params.Append(env, input3, input4);
1613     napi_value input5 = StrToNapiValue(env, "a");
1614     napi_value input6 = StrToNapiValue(env, "jk2");
1615     params.Append(env, input5, input6);
1616     params.Sort();
1617     napi_value tempValue = params.GetArray(env);
1618     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1619     DealNapiStrValue(env, ToString(env, paramsString), output);
1620     ASSERT_STREQ(output.c_str(), "a=jk2&foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1621 }
1622 
1623 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString001, testing::ext::TestSize.Level0)
1624 {
1625     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1626     std::string output;
1627     napi_env env = (napi_env)engine_;
1628     napi_value input1 = StrToNapiValue(env, "1 12");
1629     napi_value input2 = StrToNapiValue(env, "jk");
1630     params.Append(env, input1, input2);
1631     napi_value tempValue = params.GetArray(env);
1632     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1633     DealNapiStrValue(env, ToString(env, paramsString), output);
1634     ASSERT_STREQ(output.c_str(), "1+12=jk");
1635 }
1636 
1637 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString002, testing::ext::TestSize.Level0)
1638 {
1639     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1640     std::string output;
1641     napi_env env = (napi_env)engine_;
1642     napi_value input1 = StrToNapiValue(env, "¥=)");
1643     napi_value input2 = StrToNapiValue(env, "jk");
1644     params.Append(env, input1, input2);
1645     napi_value tempValue = params.GetArray(env);
1646     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1647     DealNapiStrValue(env, ToString(env, paramsString), output);
1648     ASSERT_STREQ(output.c_str(), "%EF%BF%A5%3D%29=jk");
1649 }
1650 
1651 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString003, testing::ext::TestSize.Level0)
1652 {
1653     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1654     std::string output;
1655     napi_env env = (napi_env)engine_;
1656     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1657     napi_value input2 = StrToNapiValue(env, "jk");
1658     params.Append(env, input1, input2);
1659     napi_value tempValue = params.GetArray(env);
1660     std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1661     DealNapiStrValue(env, ToString(env, paramsString), output);
1662     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1663 }
1664 
1665 HWTEST_F(NativeEngineTest, testUrlSearchParams, testing::ext::TestSize.Level0)
1666 {
1667     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1668     std::string output;
1669     napi_env env = (napi_env)engine_;
1670     napi_value input1 = StrToNapiValue(env, "ma");
1671     DealNapiStrValue(env, params.IsHas(env, input1), output);
1672     ASSERT_STREQ(output.c_str(), "");
1673 }
1674 
1675 HWTEST_F(NativeEngineTest, testUrlSearchParamsSetArray, testing::ext::TestSize.Level0)
1676 {
1677     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1678     std::string input1 = "jk";
1679     std::string input2 = "ma";
1680     napi_env env = (napi_env)engine_;
1681     std::vector<std::string> vec;
1682     vec.push_back(input1);
1683     vec.push_back(input2);
1684     params.SetArray(env, vec);
1685     napi_value result = params.GetArray(env);
1686     uint32_t length = 0;
1687     napi_value napiStr = nullptr;
1688     size_t arraySize = 0;
1689     napi_get_array_length(env, result, &length);
1690     std::string cstr1 = "";
1691     for (size_t i = 0; i < length; i++) {
1692         napi_get_element(env, result, i, &napiStr);
1693         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1694         if (arraySize > 0) {
1695             napi_get_value_string_utf8(env, napiStr, cstr1.data(), arraySize + 1, &arraySize);
1696         }
1697         if (i == 0) {
1698             ASSERT_STREQ("jk", cstr1.data());
1699         } else {
1700             ASSERT_STREQ(cstr1.data(), "ma");
1701         }
1702     }
1703 }
1704 
1705 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByKeys, testing::ext::TestSize.Level0)
1706 {
1707     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1708     std::string input1 = "jk";
1709     std::string input2 = "ma";
1710     napi_env env = (napi_env)engine_;
1711     std::vector<std::string> vec;
1712     vec.push_back(input1);
1713     vec.push_back(input2);
1714     params.SetArray(env, vec);
1715     napi_value result = params.IterByKeys(env);
1716     uint32_t length = 0;
1717     napi_value napiStr = nullptr;
1718     size_t arraySize = 0;
1719     napi_get_array_length(env, result, &length);
1720     std::string cstr = "";
1721     for (size_t i = 0; i < length; i += 2) {
1722         napi_get_element(env, result, i, &napiStr);
1723         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1724         if (arraySize > 0) {
1725             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1726         }
1727     }
1728     ASSERT_STREQ(cstr.data(), "jk");
1729 }
1730 
1731 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByValues, testing::ext::TestSize.Level0)
1732 {
1733     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1734     std::string input1 = "jk";
1735     std::string input2 = "ma";
1736     napi_env env = (napi_env)engine_;
1737     std::vector<std::string> vec;
1738     vec.push_back(input1);
1739     vec.push_back(input2);
1740     params.SetArray(env, vec);
1741     napi_value result = params.IterByValues(env);
1742     uint32_t length = 0;
1743     napi_value napiStr = nullptr;
1744     size_t arraySize = 0;
1745     napi_get_array_length(env, result, &length);
1746     std::string cstr = "";
1747     for (size_t i = 0; i < length; i++) {
1748         napi_get_element(env, result, i, &napiStr);
1749         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1750         if (arraySize > 0) {
1751             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1752         }
1753     }
1754     ASSERT_STREQ(cstr.data(), "ma");
1755 }
1756 
1757 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries001, testing::ext::TestSize.Level0)
1758 {
1759     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1760     napi_env env = (napi_env)engine_;
1761     napi_value input1 = StrToNapiValue(env, "ma");
1762     napi_value input2 = StrToNapiValue(env, "jk");
1763     params.Append(env, input1, input2);
1764     napi_value input3 = StrToNapiValue(env, "你好");
1765     napi_value input4 = StrToNapiValue(env, "jk1");
1766     params.Append(env, input3, input4);
1767     napi_value input5 = StrToNapiValue(env, "a");
1768     napi_value input6 = StrToNapiValue(env, "jk2");
1769     params.Append(env, input5, input6);
1770     napi_value result = params.Entries(env);
1771     uint32_t length = 0;
1772     napi_value napiStr = nullptr;
1773     size_t arraySize = 0;
1774     napi_get_array_length(env, result, &length);
1775     std::string cstr = "";
1776     for (size_t i = 0; i < length; i++) {
1777         napi_get_element(env, result, i, &napiStr);
1778         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1779         if (arraySize > 0) {
1780             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1781         }
1782     }
1783     ASSERT_EQ(length, 3);
1784 }
1785 
1786 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries002, testing::ext::TestSize.Level0)
1787 {
1788     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1789     napi_env env = (napi_env)engine_;
1790     std::string output;
1791     params.Entries(env);
1792     napi_value input1 = StrToNapiValue(env, "ma");
1793     DealNapiStrValue(env, params.Get(env, input1), output);
1794     ASSERT_STREQ(output.c_str(), "");
1795 }
1796 
1797 HWTEST_F(NativeEngineTest, testUrlutilities001, testing::ext::TestSize.Level0)
1798 {
1799     std::string inPut = "";
1800     OHOS::Url::DecodeSpecialChars(inPut);
1801     inPut = "%1238";
1802     OHOS::Url::DecodeSpecialChars(inPut);
1803     inPut = "    ";
1804     OHOS::Url::DeleteC0OrSpace(inPut);
1805     inPut = "   123  ";
1806     OHOS::Url::DeleteC0OrSpace(inPut);
1807     inPut = "dks	aasdd";
1808     OHOS::Url::DeleteTabOrNewline(inPut);
1809     inPut = "1asdf";
1810     std::string temp = "";
1811     std::bitset<11> flags; // 11:Each bit of a BIT represents a different parsing state.
1812     bool isFalse = OHOS::Url::AnalysisScheme(inPut, temp, flags);
1813     ASSERT_FALSE(isFalse);
1814     inPut = "@Sdf";
1815     OHOS::Url::AnalysisUsernameAndPasswd(inPut, temp, temp, flags);
1816     inPut = "12@3@222@Sdf";
1817     OHOS::Url::AnalysisUsernameAndPasswd(inPut, temp, temp, flags);
1818     inPut = "../../";
1819     std::vector<std::string> temp1;
1820     OHOS::Url::AnalysisPath(inPut, temp1, flags, true);
1821     inPut = "asd#sad";
1822     OHOS::Url::AnalysisOpaqueHost(inPut, temp, flags);
1823     inPut = "asdsad";
1824     OHOS::Url::AnalysisOpaqueHost(inPut, temp, flags);
1825     bool isHexDigit =  OHOS::Url::IsHexDigit('/');
1826     ASSERT_FALSE(isHexDigit);
1827 }
1828 
1829 HWTEST_F(NativeEngineTest, testUrlutilities002, testing::ext::TestSize.Level0)
1830 {
1831     OHOS::Url::UrlData urlDataInfo;
1832     std::string inPut = "192.136.54.22";
1833     std::string temp = "";
1834     std::bitset<11> flags;
1835     OHOS::Url::DealIpv4(inPut);
1836     inPut = "1080:0:0:0:8:800:200C:417A";
1837     OHOS::Url::FormatIpv6(inPut);
1838     inPut = "2136504";
1839     size_t i = 0;
1840     OHOS::Url::SplitNum(inPut, i);
1841     inPut = "192.168.1.55";
1842     OHOS::Url::AnalyseIPv4(inPut, temp, flags);
1843     inPut = "";
1844     OHOS::Url::AnalysisHost(inPut, inPut, flags, true);
1845     inPut = "[asjdhkj";
1846     OHOS::Url::AnalysisHost(inPut, inPut, flags, true);
1847     inPut = "f:11";
1848     bool isTrue = OHOS::Url::ISFileNohost(inPut);
1849     ASSERT_TRUE(isTrue);
1850     inPut = "../../../";
1851     OHOS::Url::AnalysisFilePath(inPut, urlDataInfo, flags);
1852     OHOS::Url::AnalysisFilescheme(inPut, urlDataInfo, flags);
1853     OHOS::Url::AnalyInfoPath(flags, urlDataInfo, inPut);
1854     inPut = "sadwasd";
1855     OHOS::Url::AnalyHostPath(inPut, flags, urlDataInfo);
1856     inPut = "sad@wasd";
1857     OHOS::Url::AnalyStrHost(inPut, urlDataInfo, flags);
1858     inPut = "";
1859     OHOS::Url::AnalyStrHost(inPut, urlDataInfo, flags);
1860     inPut = "//sjalkjd";
1861     urlDataInfo.scheme = "sa";
1862     OHOS::Url::AnalysisNoDefaultProtocol(inPut, urlDataInfo, flags);
1863     inPut = "//sjalkjd";
1864     urlDataInfo.scheme = "";
1865     OHOS::Url::AnalysisNoDefaultProtocol(inPut, urlDataInfo, flags);
1866     inPut = "";
1867     OHOS::Url::AnalysisOnlyHost(inPut, urlDataInfo, flags, i);
1868     bool isHexDigit =  OHOS::Url::IsHexDigit('b');
1869     ASSERT_TRUE(isHexDigit);
1870 }
1871 
GetStringUtf8(napi_env env,napi_value str)1872 std::string GetStringUtf8(napi_env env, napi_value str)
1873 {
1874     std::string buffer = "";
1875     size_t bufferSize = 0;
1876     if (napi_get_value_string_utf8(env, str, nullptr, 0, &bufferSize) != napi_ok) {
1877         HILOG_ERROR("can not get src size");
1878         return buffer;
1879     }
1880     buffer.resize(bufferSize);
1881     if (napi_get_value_string_utf8(env, str, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
1882         HILOG_ERROR("can not get src value");
1883         return buffer;
1884     }
1885     return buffer;
1886 }
1887 
1888 HWTEST_F(NativeEngineTest, testUrlModule001, testing::ext::TestSize.Level0)
1889 {
1890     napi_env env = (napi_env)engine_;
1891     napi_value exports = nullptr;
1892     napi_create_object(env, &exports);
1893     OHOS::Url::Init(env, exports);
1894     napi_value urlClass = nullptr;
1895     napi_value constructorArgs[1] =  { 0 };
1896     std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1897     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1898     napi_get_named_property(env, exports, "Url", &urlClass);
1899     napi_value instance = nullptr;
1900     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1901 
1902     std::string input1 = "www.example.com";
1903     napi_value newValue = nullptr;
1904     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1905     napi_set_named_property(env, instance, "hostname", newValue);
1906     napi_value urlProperty = nullptr;
1907     napi_get_named_property(env, instance, "hostname", &urlProperty);
1908     std::string res = GetStringUtf8(env, urlProperty);
1909     ASSERT_STREQ(res.c_str(), "www.example.com");
1910 
1911     napi_value tempFn = nullptr;
1912     napi_get_named_property(env, instance, "onOrOff", &tempFn);
1913     bool res1 = false;
1914     napi_get_value_bool(env, tempFn, &res1);
1915     ASSERT_TRUE(res1);
1916 
1917     napi_get_named_property(env, instance, "GetIsIpv6", &tempFn);
1918     res1 = true;
1919     napi_get_value_bool(env, tempFn, &res1);
1920     ASSERT_FALSE(res1);
1921 
1922     input1 = "query1";
1923     newValue = nullptr;
1924     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1925     napi_set_named_property(env, instance, "search", newValue);
1926     urlProperty = nullptr;
1927     napi_get_named_property(env, instance, "search", &urlProperty);
1928     res = GetStringUtf8(env, urlProperty);
1929     ASSERT_STREQ(res.c_str(), "?query1");
1930 
1931     input1 = "username1";
1932     newValue = nullptr;
1933     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1934     napi_set_named_property(env, instance, "username", newValue);
1935     urlProperty = nullptr;
1936     napi_get_named_property(env, instance, "username", &urlProperty);
1937     res = GetStringUtf8(env, urlProperty);
1938     ASSERT_STREQ(res.c_str(), "username1");
1939 }
1940 
1941 HWTEST_F(NativeEngineTest, testUrlModule003, testing::ext::TestSize.Level0)
1942 {
1943     napi_env env = (napi_env)engine_;
1944     napi_value exports = nullptr;
1945     napi_create_object(env, &exports);
1946     OHOS::Url::Init(env, exports);
1947     napi_value urlClass = nullptr;
1948     napi_value constructorArgs[1] =  { 0 };
1949     std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1950     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1951     napi_get_named_property(env, exports, "Url", &urlClass);
1952     napi_value instance = nullptr;
1953     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1954 
1955     std::string input1 = "password1";
1956     napi_value newValue = nullptr;
1957     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1958     napi_set_named_property(env, instance, "password", newValue);
1959     napi_value urlProperty = nullptr;
1960     napi_get_named_property(env, instance, "password", &urlProperty);
1961     std::string res = GetStringUtf8(env, urlProperty);
1962     ASSERT_STREQ(res.c_str(), "password1");
1963 
1964     input1 = "www.example.com:11";
1965     newValue = nullptr;
1966     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1967     napi_set_named_property(env, instance, "host", newValue);
1968     urlProperty = nullptr;
1969     napi_get_named_property(env, instance, "host", &urlProperty);
1970     res = GetStringUtf8(env, urlProperty);
1971     ASSERT_STREQ(res.c_str(), "www.example.com:11");
1972 
1973     input1 = "fagment1";
1974     newValue = nullptr;
1975     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1976     napi_set_named_property(env, instance, "hash", newValue);
1977     urlProperty = nullptr;
1978     napi_get_named_property(env, instance, "hash", &urlProperty);
1979     res = GetStringUtf8(env, urlProperty);
1980     ASSERT_STREQ(res.c_str(), "#fagment1");
1981 }
1982 
1983 HWTEST_F(NativeEngineTest, testUrlModule004, testing::ext::TestSize.Level0)
1984 {
1985     napi_env env = (napi_env)engine_;
1986     napi_value exports = nullptr;
1987     napi_create_object(env, &exports);
1988     OHOS::Url::Init(env, exports);
1989     napi_value urlClass = nullptr;
1990     napi_value constructorArgs[1] =  { 0 };
1991     std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1992     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1993     napi_get_named_property(env, exports, "Url", &urlClass);
1994     napi_value instance = nullptr;
1995     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1996 
1997     std::string input1 = "https:";
1998     napi_value newValue = nullptr;
1999     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2000     napi_set_named_property(env, instance, "protocol", newValue);
2001     napi_value urlProperty = nullptr;
2002     napi_get_named_property(env, instance, "protocol", &urlProperty);
2003     std::string res = GetStringUtf8(env, urlProperty);
2004     ASSERT_STREQ(res.c_str(), "https:");
2005 
2006     input1 = "/path/path1";
2007     newValue = nullptr;
2008     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2009     napi_set_named_property(env, instance, "pathname", newValue);
2010     urlProperty = nullptr;
2011     napi_get_named_property(env, instance, "pathname", &urlProperty);
2012     res = GetStringUtf8(env, urlProperty);
2013     ASSERT_STREQ(res.c_str(), "/path/path1");
2014 
2015     input1 = "55";
2016     newValue = nullptr;
2017     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2018     napi_set_named_property(env, instance, "port", newValue);
2019     urlProperty = nullptr;
2020     napi_get_named_property(env, instance, "port", &urlProperty);
2021     res = GetStringUtf8(env, urlProperty);
2022     ASSERT_STREQ(res.c_str(), "55");
2023 
2024     napi_value constructorArgs1[1] =  { 0 };
2025     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs1[0]);
2026     napi_value hrefFn = nullptr;
2027     napi_get_named_property(env, instance, "href", &hrefFn);
2028     napi_value result1 = nullptr;
2029     napi_call_function(env, instance, hrefFn, 1, constructorArgs1, &result1);
2030 
2031     urlProperty = nullptr;
2032     napi_get_named_property(env, instance, "port", &urlProperty);
2033     res = GetStringUtf8(env, urlProperty);
2034     ASSERT_STREQ(res.c_str(), "99");
2035 }
2036 
2037 HWTEST_F(NativeEngineTest, testUrlModule002, testing::ext::TestSize.Level0)
2038 {
2039     napi_env env = (napi_env)engine_;
2040     napi_value exports = nullptr;
2041     napi_create_object(env, &exports);
2042     OHOS::Url::Init(env, exports);
2043     napi_value urlParamsClass = nullptr;
2044     napi_get_named_property(env, exports, "URLParams1", &urlParamsClass);
2045     napi_value instance = nullptr;
2046     napi_new_instance(env, urlParamsClass, 0, nullptr, &instance);
2047 
2048     napi_value paramsFn = nullptr;
2049     napi_get_named_property(env, instance, "append", &paramsFn);
2050     napi_value input1 = StrToNapiValue(env, "ma");
2051     napi_value input2 = StrToNapiValue(env, "jk");
2052     napi_value args[] = { input1, input2 };
2053     napi_value result = nullptr;
2054     napi_call_function(env, instance, paramsFn, 2, args, &result);
2055 
2056     paramsFn = nullptr;
2057     napi_get_named_property(env, instance, "set", &paramsFn);
2058     napi_value input3 = StrToNapiValue(env, "aa");
2059     napi_value args1[] = { input1, input3 };
2060     napi_call_function(env, instance, paramsFn, 2, args1, &result);
2061 
2062     paramsFn = nullptr;
2063     napi_get_named_property(env, instance, "array", &paramsFn);
2064     std::string output = "";
2065     std::vector<std::string> paramsString = GetParamsStrig(env, paramsFn);
2066     DealNapiStrValue(env, ToString(env, paramsString), output);
2067     ASSERT_STREQ(output.c_str(), "ma=aa");
2068     napi_set_named_property(env, instance, "array", paramsFn);
2069 
2070     paramsFn = nullptr;
2071     napi_get_named_property(env, instance, "has", &paramsFn);
2072     napi_value args2[1] = { input1 };
2073     napi_call_function(env, instance, paramsFn, 1, args2, &result);
2074     bool res1 = false;
2075     napi_get_value_bool(env, result, &res1);
2076     ASSERT_TRUE(res1);
2077 }
2078 HWTEST_F(NativeEngineTest, testUrlModule005, testing::ext::TestSize.Level0)
2079 {
2080     napi_env env = (napi_env)engine_;
2081     napi_value exports = nullptr;
2082     napi_create_object(env, &exports);
2083     OHOS::Url::Init(env, exports);
2084     napi_value urlParamsClass = nullptr;
2085     napi_get_named_property(env, exports, "URLParams1", &urlParamsClass);
2086     napi_value instance = nullptr;
2087     napi_new_instance(env, urlParamsClass, 0, nullptr, &instance);
2088     std::string output = "";
2089     napi_value paramsFn = nullptr;
2090     napi_get_named_property(env, instance, "append", &paramsFn);
2091     napi_value input1 = StrToNapiValue(env, "ma");
2092     napi_value result = nullptr;
2093 
2094     paramsFn = nullptr;
2095     napi_get_named_property(env, instance, "set", &paramsFn);
2096     napi_value input3 = StrToNapiValue(env, "aa");
2097     napi_value args1[] = { input1, input3 };
2098     napi_call_function(env, instance, paramsFn, 2, args1, &result);
2099 
2100     paramsFn = nullptr;
2101     napi_get_named_property(env, instance, "sort", &paramsFn);
2102     napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2103 
2104     paramsFn = nullptr;
2105     napi_get_named_property(env, instance, "keys", &paramsFn);
2106     napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2107 
2108     paramsFn = nullptr;
2109     napi_get_named_property(env, instance, "values", &paramsFn);
2110     napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2111 
2112     paramsFn = nullptr;
2113     napi_get_named_property(env, instance, "get", &paramsFn);
2114 
2115     napi_value args3[1] = { input1 };
2116     napi_call_function(env, instance, paramsFn, 1, args3, &result);
2117     DealNapiStrValue(env, result, output);
2118     ASSERT_STREQ(output.c_str(), "aa");
2119 
2120     paramsFn = nullptr;
2121     napi_get_named_property(env, instance, "getAll", &paramsFn);
2122 
2123     napi_value args4[1] = { input1 };
2124     napi_call_function(env, instance, paramsFn, 1, args4, &result);
2125     DealNapiStrValue(env, result, output);
2126     ASSERT_STREQ(output.c_str(), "aa");
2127 
2128     paramsFn = nullptr;
2129     napi_get_named_property(env, instance, "entries", &paramsFn);
2130     napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2131 
2132     paramsFn = nullptr;
2133     napi_get_named_property(env, instance, "delete", &paramsFn);
2134     napi_value args5[1] = { input1 };
2135     napi_call_function(env, instance, paramsFn, 1, args5, &result);
2136     DealNapiStrValue(env, result, output);
2137     ASSERT_STREQ(output.c_str(), "aa");
2138 }
2139 HWTEST_F(NativeEngineTest, testUrlModule006, testing::ext::TestSize.Level0)
2140 {
2141     std::string inPut =  "#1asdf";
2142     std::string temp = "";
2143     std::bitset<11> flags; // 11:Each bit of a BIT represents a different parsing state.
2144     bool isFalse = OHOS::Url::AnalysisScheme(inPut, temp, flags);
2145     ASSERT_FALSE(isFalse);
2146 }
2147 
2148 HWTEST_F(NativeEngineTest, testUrlModule007, testing::ext::TestSize.Level0)
2149 {
2150     std::string inPut =  "";
2151     std::string temp = "";
2152     std::bitset<11> flags(1023) ; // 11:Each bit of a BIT represents a different parsing state.
2153     OHOS::Url::AnalysisScheme(inPut, temp, flags);
2154     long a = flags.to_ulong();
2155     ASSERT_EQ(a, 1023);
2156 }
2157 
2158 HWTEST_F(NativeEngineTest, testUrlModule008, testing::ext::TestSize.Level0)
2159 {
2160     std::string inPut =  "66666";
2161     std::string temp = "";
2162     std::bitset<11> flags(1023) ; // 11:Each bit of a BIT represents a different parsing state.
2163     OHOS::Url::AnalysisScheme(inPut, temp, flags);
2164     long a = flags.to_ulong();
2165     ASSERT_EQ(a, 1023);
2166 }
2167 
2168 HWTEST_F(NativeEngineTest, testUrlutilities009, testing::ext::TestSize.Level0)
2169 {
2170     std::string inPut = "99::1080:0:0:8:800:200C:417A";
2171     OHOS::Url::FormatIpv6(inPut);
2172     ASSERT_STREQ(inPut.c_str(), "99:1080:0:0:8:800:200C:417A");
2173     inPut = "::99:1080:0:0:8:800:200C:417A";
2174     OHOS::Url::FormatIpv6(inPut);
2175     ASSERT_STREQ(inPut.c_str(), "0:99:1080:0:0:8:800:200C:417A");
2176 }
2177 
2178 HWTEST_F(NativeEngineTest, testUrlutilities010, testing::ext::TestSize.Level0)
2179 {
2180     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2181     std::string str = "0x.23.56";
2182     url.SetHostname(str);
2183     ASSERT_STREQ(str.c_str(), "0x.23.56");
2184 }
2185 
2186 HWTEST_F(NativeEngineTest, testUrlutilities011, testing::ext::TestSize.Level0)
2187 {
2188     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2189     std::string str = "0.23.56";
2190     url.SetHostname(str);
2191     ASSERT_STREQ(str.c_str(), "0.23.56");
2192 }
2193 
2194 HWTEST_F(NativeEngineTest, testUrlutilities012, testing::ext::TestSize.Level0)
2195 {
2196     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2197     std::string str = "33."".";
2198     url.SetHostname(str);
2199     ASSERT_STREQ(str.c_str(), "33..");
2200 }
2201 
2202 HWTEST_F(NativeEngineTest, testUrlutilities013, testing::ext::TestSize.Level0)
2203 {
2204     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
2205     std::string str = "111111111.1001000.111.10101";
2206     url.SetHost(str);
2207     ASSERT_STREQ(str.c_str(), "111111111.1001000.111.10101");
2208 }
2209 
2210 HWTEST_F(NativeEngineTest, testUrlutilities014, testing::ext::TestSize.Level0)
2211 {
2212     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
2213     std::string str = "10.11.11111111";
2214     url.SetHost(str);
2215     ASSERT_STREQ(str.c_str(), "10.11.11111111");
2216 }
2217 
2218 HWTEST_F(NativeEngineTest, testUrlutilities015, testing::ext::TestSize.Level0)
2219 {
2220     std::string str = "hello world!";
2221     size_t number = 0;
2222     OHOS::Url::SplitNum(str, number);
2223     ASSERT_STREQ(str.c_str(), "hello world!");
2224 }
2225 
2226 HWTEST_F(NativeEngineTest, testUrlutilities016, testing::ext::TestSize.Level0)
2227 {
2228     std::string input = "H+#LLOWORLD";
2229     std::string scheme = "";
2230     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2231     bool rst = OHOS::Url::AnalysisScheme(input, scheme, flags);
2232     ASSERT_FALSE(rst);
2233 }
2234 
2235 HWTEST_F(NativeEngineTest, testUrlutilities017, testing::ext::TestSize.Level0)
2236 {
2237     std::string input = "H+#LLOWORLD:";
2238     OHOS::Url::UrlData urlinfo;
2239     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2240     size_t pos = 0;
2241     OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2242     ASSERT_STREQ(input.c_str(), "H+#LLOWORLD:");
2243 }
2244 
2245 HWTEST_F(NativeEngineTest, testUrlutilities018, testing::ext::TestSize.Level0)
2246 {
2247     std::string input = "H+#LLOWORLD:65536";
2248     OHOS::Url::UrlData urlinfo;
2249     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2250     size_t pos = 0;
2251     OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2252     ASSERT_STREQ(input.c_str(), "H+#LLOWORLD:65536");
2253 }
2254 
2255 HWTEST_F(NativeEngineTest, testUrlutilities019, testing::ext::TestSize.Level0)
2256 {
2257     std::string input01 = "256";
2258     std::vector<std::string> nums;
2259     nums.push_back(input01);
2260     std::string host;
2261     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2262     OHOS::Url::FormatIpv4(nums, host, flags);
2263     ASSERT_STREQ(host.c_str(), "0.0.1.0");
2264 }
2265 
2266 HWTEST_F(NativeEngineTest, testUrlutilities020, testing::ext::TestSize.Level0)
2267 {
2268     std::string input = "abcdefghi";
2269     std::string input01 = "1";
2270     std::string input02 = "2";
2271     std::vector<std::string> nums;
2272     nums.push_back(input);
2273     nums.push_back(input01);
2274     nums.push_back(input02);
2275     std::string host;
2276     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2277     OHOS::Url::FormatIpv4(nums, host, flags);
2278     ASSERT_EQ(nums.size(), 3);
2279 }
2280 
2281 HWTEST_F(NativeEngineTest, testUrlutilities021, testing::ext::TestSize.Level0)
2282 {
2283     std::string input = "155.155.256.111111111";
2284     std::string host;
2285     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2286     OHOS::Url::AnalyseIPv4(input, host, flags);
2287     ASSERT_STREQ(input.c_str(), "155.155.256.111111111");
2288 }
2289 
2290 HWTEST_F(NativeEngineTest, testUrlutilities022, testing::ext::TestSize.Level0)
2291 {
2292     std::string input = "http://example.com/path/.%2E/to%2eresource";
2293     OHOS::Url::UrlData urlinfo;
2294     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2295     OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2296     ASSERT_STREQ(input.c_str(), "to%2eresource");
2297 }
2298 
2299 HWTEST_F(NativeEngineTest, testUrlutilities023, testing::ext::TestSize.Level0)
2300 {
2301     std::string input = "http://example.com/path/to%2eresource/%2E";
2302     OHOS::Url::UrlData urlinfo;
2303     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2304     OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2305     ASSERT_STREQ(input.c_str(), "%2E");
2306 }
2307 
2308 HWTEST_F(NativeEngineTest, testUrlutilities024, testing::ext::TestSize.Level0)
2309 {
2310     std::string input = ".%2E";
2311     OHOS::Url::UrlData urlinfo;
2312     std::string str = "h:";
2313     urlinfo.path.push_back(str);
2314     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2315     OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2316     ASSERT_STREQ(input.c_str(), ".%2E");
2317 }
2318 
2319 HWTEST_F(NativeEngineTest, testUrlutilities025, testing::ext::TestSize.Level0)
2320 {
2321     std::string input = ".%2E";
2322     OHOS::Url::UrlData urlinfo;
2323     std::string str = "w:";
2324     urlinfo.path.push_back(str);
2325     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2326     OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2327     ASSERT_STREQ(input.c_str(), ".%2E");
2328 }
2329 
2330 HWTEST_F(NativeEngineTest, testUrlutilities026, testing::ext::TestSize.Level0)
2331 {
2332     std::string input = ".%2E";
2333     OHOS::Url::UrlData urlinfo;
2334     std::string str = "z:";
2335     urlinfo.path.push_back(str);
2336     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2337     OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2338     ASSERT_STREQ(input.c_str(), ".%2E");
2339 }
2340 
2341 HWTEST_F(NativeEngineTest, testUrlutilities027, testing::ext::TestSize.Level0)
2342 {
2343     std::string temp = "w:51";
2344     size_t pos = 2;
2345     OHOS::Url::UrlData urlinfo;
2346     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2347     OHOS::Url::AnalysisSpecialFile(temp, pos, urlinfo, flags);
2348     ASSERT_STREQ(temp.c_str(), "w:51");
2349 }
2350 
2351 HWTEST_F(NativeEngineTest, testUrlutilities028, testing::ext::TestSize.Level0)
2352 {
2353     std::string input = "/g";;
2354     OHOS::Url::UrlData urlinfo;
2355     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2356     OHOS::Url::AnalysisFile(input, urlinfo, flags);
2357     ASSERT_STREQ(input.c_str(), "g");
2358 }
2359 
2360 HWTEST_F(NativeEngineTest, testUrlutilities029, testing::ext::TestSize.Level0)
2361 {
2362     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2363     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2364     std::string input = "//abc";
2365     OHOS::Url::UrlData urlinfo;
2366     OHOS::Url::AnalysisFile(input, urlinfo, flags);
2367     ASSERT_STREQ(input.c_str(), "//abc");
2368 }
2369 
2370 HWTEST_F(NativeEngineTest, testUrlutilities030, testing::ext::TestSize.Level0)
2371 {
2372     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2373     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2374     std::string input = "/abc";
2375     OHOS::Url::UrlData urlinfo;
2376     OHOS::Url::AnalyInfoPath(flags, urlinfo, input);
2377     ASSERT_STREQ(input.c_str(), "/abc");
2378 }
2379 
2380 HWTEST_F(NativeEngineTest, testUrlutilities031, testing::ext::TestSize.Level0)
2381 {
2382     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2383     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2384     std::string input = ":h";
2385     OHOS::Url::UrlData urlinfo;
2386     OHOS::Url::AnalyHostPath(input, flags, urlinfo);
2387     ASSERT_TRUE(flags[0]);
2388 }
2389 
2390 HWTEST_F(NativeEngineTest, testUrlutilities032, testing::ext::TestSize.Level0)
2391 {
2392     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2393     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2394     std::string input = "///";
2395     OHOS::Url::UrlData urlinfo;
2396     OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2397     ASSERT_STREQ(input.c_str(), "///");
2398 }
2399 
2400 HWTEST_F(NativeEngineTest, testUrlutilities033, testing::ext::TestSize.Level0)
2401 {
2402     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2403     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2404     std::string input = "//";
2405     OHOS::Url::UrlData urlinfo;
2406     OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2407     ASSERT_STREQ(input.c_str(), "//");
2408 }
2409 
2410 HWTEST_F(NativeEngineTest, testUrlutilities034, testing::ext::TestSize.Level0)
2411 {
2412     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2413     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2414     std::string input = "//::/";
2415     OHOS::Url::UrlData urlinfo;
2416     OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2417     ASSERT_STREQ(input.c_str(), "//::/");
2418 }
2419 
2420 HWTEST_F(NativeEngineTest, testUrlutilities035, testing::ext::TestSize.Level0)
2421 {
2422     std::string input = "abc:d:e";
2423     OHOS::Url::UrlData urlinfo;
2424     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2425     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2426     size_t pos = 0;
2427     OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2428     ASSERT_STREQ(input.c_str(), "abc:d:e");
2429 }
2430 
2431 HWTEST_F(NativeEngineTest, testUrlutilities036, testing::ext::TestSize.Level0)
2432 {
2433     std::string input = "abc:d:e/fg";
2434     OHOS::Url::UrlData urlinfo;
2435     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2436     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2437     size_t pos = 6; // 6:string position
2438     OHOS::Url::ParsingHostAndPath(input, urlinfo, pos, flags);
2439     ASSERT_STREQ(input.c_str(), "abc:d:e/fg");
2440 }
2441 
2442 HWTEST_F(NativeEngineTest, testUrlutilities037, testing::ext::TestSize.Level0)
2443 {
2444     OHOS::Url::UrlData urlData;
2445     OHOS::Url::UrlData baseData;
2446     baseData.path.push_back("");
2447     urlData.path.push_back("");
2448     bool isFile = false;
2449     OHOS::Url::ShorteningPath(urlData, baseData, isFile);
2450     ASSERT_FALSE(isFile);
2451 }
2452 
2453 HWTEST_F(NativeEngineTest, testUrlutilities038, testing::ext::TestSize.Level0)
2454 {
2455     OHOS::Url::UrlData urlData;
2456     OHOS::Url::UrlData baseData;
2457     baseData.path.push_back("a:");
2458     urlData.path.push_back("a");
2459     bool isFile = true;
2460     OHOS::Url::ShorteningPath(urlData, baseData, isFile);
2461     ASSERT_TRUE(isFile);
2462 }
2463 
2464 HWTEST_F(NativeEngineTest, testUrlutilities040, testing::ext::TestSize.Level0)
2465 {
2466     std::string input = ".%2E";
2467     std::vector<std::string> path;
2468     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2469     bool isSpecial = true;
2470     OHOS::Url::AnalysisPath(input, path, flags, isSpecial);
2471     ASSERT_STREQ(input.c_str(), ".%2E");
2472 }
2473 
2474 HWTEST_F(NativeEngineTest, testUrlutilities041, testing::ext::TestSize.Level0)
2475 {
2476     std::string input = "%2E";
2477     std::vector<std::string> path;
2478     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2479     bool isSpecial = true;
2480     OHOS::Url::AnalysisPath(input, path, flags, isSpecial);
2481     ASSERT_STREQ(input.c_str(), "%2E");
2482 }
2483 
2484 HWTEST_F(NativeEngineTest, testUrlutilities042, testing::ext::TestSize.Level0)
2485 {
2486     std::string input = "99::1080:800:200C:417A";
2487     OHOS::Url::FormatIpv6(input);
2488     ASSERT_STREQ(input.c_str(), "99:0:0:0:1080:800:200C:417A");
2489 }
2490 
2491 HWTEST_F(NativeEngineTest, testUrlutilities043, testing::ext::TestSize.Level0)
2492 {
2493     std::string input = "000:1080:800:200C:417A";
2494     std::vector<std::string> ipv6;
2495     ipv6.push_back(input);
2496     OHOS::Url::RemoveLeadingZeros(ipv6);
2497     ASSERT_STREQ(input.c_str(), "000:1080:800:200C:417A");
2498 }
2499 
2500 HWTEST_F(NativeEngineTest, testUrlutilities044, testing::ext::TestSize.Level0)
2501 {
2502     std::string input = "::ffff:192.168.1.1";
2503     std::string host = "";
2504     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2505     OHOS::Url::IPv6Host(input, host, flags);
2506     ASSERT_STREQ(input.c_str(), "::ffff:c0a8:101");
2507 }
2508 
2509 HWTEST_F(NativeEngineTest, testUrlutilities045, testing::ext::TestSize.Level0)
2510 {
2511     std::string input = "w";
2512     OHOS::Url::UrlData urlinfo;
2513     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2514     OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2515     ASSERT_STREQ(input.c_str(), "w");
2516 }
2517 
2518 HWTEST_F(NativeEngineTest, testUrlutilities046, testing::ext::TestSize.Level0)
2519 {
2520     std::string input = "ww:w]wa:b]c/www";
2521     OHOS::Url::UrlData urlinfo;
2522     size_t pos;
2523     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2524     flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2525     OHOS::Url::ParsingHostAndPath(input, urlinfo, pos, flags);
2526     ASSERT_STREQ(input.c_str(), "ww:w]wa:b]c/www");
2527 }
2528 
2529 HWTEST_F(NativeEngineTest, testUrlutilities047, testing::ext::TestSize.Level0)
2530 {
2531     OHOS::Url::UrlData urlData;
2532     std::string s1 = "www";
2533     std::string s2 = "aaa";
2534     std::string s3 = "bbb";
2535     std::string s4 = "ccc";
2536     urlData.path.push_back(s1);
2537     urlData.path.push_back(s2);
2538     urlData.path.push_back(s3);
2539     urlData.path.push_back(s4);
2540     std::string rst = OHOS::Url::BasePathToStr(urlData);
2541     ASSERT_STREQ(rst.c_str(), "www/aaa/bbb/ccc");
2542 }
2543 
2544 HWTEST_F(NativeEngineTest, testUrlutilities048, testing::ext::TestSize.Level0)
2545 {
2546     std::vector<std::string> ipv6;
2547     std::string str = "00ccccc";
2548     ipv6.push_back(str);
2549     OHOS::Url::RemoveLeadingZeros(ipv6);
2550     ASSERT_STREQ(str.c_str(), "00ccccc");
2551 }
2552 
2553 HWTEST_F(NativeEngineTest, testUrlutilities049, testing::ext::TestSize.Level0)
2554 {
2555     std::string input = "//@/aabab";
2556     OHOS::Url::UrlData urlinfo;
2557     std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2558     OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2559     ASSERT_STREQ(input.c_str(), "//@/aabab");
2560 }
2561 
2562 HWTEST_F(NativeEngineTest, testUrlutilities050, testing::ext::TestSize.Level0)
2563 {
2564     std::string input = "99::1080:8:800:200C:417A";
2565     OHOS::Url::FormatIpv6(input);
2566     ASSERT_STREQ(input.c_str(), "99:0:0:1080:8:800:200C:417A");
2567 }
2568 
2569 HWTEST_F(NativeEngineTest, testUrlHelper001, testing::ext::TestSize.Level0)
2570 {
2571     std::string input = "abc~!@#$|[]{}`^%()_+-=";
2572     std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2573     ASSERT_STREQ(urlEncode.c_str(), "abc~!@#$%7C%5B%5D%7B%7D%60%5E%25()_+-=");
2574 
2575     std::string userinfoEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS);
2576     ASSERT_STREQ(userinfoEncode.c_str(), "abc~!@#$%7C%5B%5D%7B%7D%60%5E%()_+-=");
2577 
2578     std::string pathEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS);
2579     ASSERT_STREQ(pathEncode.c_str(), "abc~!@#$|[]%7B%7D%60%5E%()_+-=");
2580 
2581     std::string fragmentEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS);
2582     ASSERT_STREQ(fragmentEncode.c_str(), "abc~!@#$|[]{}`%5E%()_+-=");
2583 
2584     std::string queryEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS);
2585     ASSERT_STREQ(queryEncode.c_str(), "abc~!@#$|[]{}`^%()_+-=");
2586 
2587 }
2588 
2589 HWTEST_F(NativeEngineTest, testUrlHelper002, testing::ext::TestSize.Level0)
2590 {
2591     std::string input = "";
2592     for (uint8_t i = 0; i <= 0x7F; i++) {
2593         input += static_cast<char>(i);
2594     }
2595     std::string out =
2596         "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2597         "%1E%1F%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklm"
2598         "nopqrstuvwxyz%7B%7C%7D~%7F";
2599     // username, password {'%25':'%'}
2600     std::string outUserInfo =
2601         "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2602         "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklm"
2603         "nopqrstuvwxyz%7B%7C%7D~%7F";
2604     // {'%7C': '|', '%5B': '[', '%5D': ']', '%25': '%'}
2605     std::string outPath =
2606         "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2607         "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]%5E_%60abcdefghijklm"
2608         "nopqrstuvwxyz%7B|%7D~%7F";
2609     // hash, fragment {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%25': '%'}
2610     std::string outFragment =
2611         "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2612         "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]%5E_`abcdefghijklm"
2613         "nopqrstuvwxyz{|}~%7F";
2614     // query {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%5E': '^', '%25': '%'}
2615     std::string outQuery =
2616         "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2617         "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]^_`abcdefghijklm"
2618         "nopqrstuvwxyz{|}~%7F";
2619 
2620     std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2621     ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2622     ASSERT_STREQ(
2623         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), outUserInfo.c_str());
2624     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), outPath.c_str());
2625     ASSERT_STREQ(
2626         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), outFragment.c_str());
2627     ASSERT_STREQ(
2628         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), outQuery.c_str());
2629 }
2630 
2631 HWTEST_F(NativeEngineTest, testUrlHelper003, testing::ext::TestSize.Level0)
2632 {
2633     std::string input = "";
2634     char chars[] = { 0x1, 0x7, 0x8, 0xF, 0x25, 0x2F, 0x5B, 0x5D, 0x5E, 0x60, 0x6C, 0x7B, 0x7C, 0x7D, 0x7F, 0x8F, 0xC1,
2635         0xF1, 0xFF };
2636     for (uint8_t i = 0; i < sizeof(chars) / sizeof(char); i++) {
2637         input += chars[i];
2638     }
2639     std::string out = "%01%07%08%0F%25/%5B%5D%5E%60l%7B%7C%7D%7F%8F%C1%F1%FF";
2640     // username, password {'%25':'%'}
2641     std::string outUserInfo = "%01%07%08%0F%/%5B%5D%5E%60l%7B%7C%7D%7F%8F%C1%F1%FF";
2642     // {'%7C': '|', '%5B': '[', '%5D': ']', '%25': '%'}
2643     std::string outPath = "%01%07%08%0F%/[]%5E%60l%7B|%7D%7F%8F%C1%F1%FF";
2644     // hash, fragment {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%25': '%'}
2645     std::string outFragment = "%01%07%08%0F%/[]%5E`l{|}%7F%8F%C1%F1%FF";
2646     // query {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%5E': '^', '%25': '%'}
2647     std::string outQuery = "%01%07%08%0F%/[]^`l{|}%7F%8F%C1%F1%FF";
2648 
2649     std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2650     ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2651     ASSERT_STREQ(
2652         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), outUserInfo.c_str());
2653     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), outPath.c_str());
2654     ASSERT_STREQ(
2655         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), outFragment.c_str());
2656     ASSERT_STREQ(
2657         OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), outQuery.c_str());
2658 }
2659 
2660 HWTEST_F(NativeEngineTest, testUrlHelper004, testing::ext::TestSize.Level0)
2661 {
2662     std::string input = "";
2663     for (uint8_t i = 0x80; i != 0x00; i++) {
2664         input += static_cast<char>(i);
2665     }
2666     std::string out =
2667         "%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F"
2668         "%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF"
2669         "%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF"
2670         "%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF";
2671 
2672     std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2673     ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2674     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2675     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2676     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2677     ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2678 }
2679 
2680 HWTEST_F(NativeEngineTest, testUrlHelper005, testing::ext::TestSize.Level0)
2681 {
2682     std::string input = "abc~!@#$%7C%5B%5D%7B%7D%60%5E%()_+-=%7c";
2683     std::string decodeResult = OHOS::Url::DecodePercentEncoding(input);
2684     ASSERT_STREQ(decodeResult.c_str(), "abc~!@#$|[]{}`^%()_+-=|");
2685     std::string inputTwo = "abc~!@#$|[]{}`^()_+-=";
2686     std::string decodeResultTwo = OHOS::Url::DecodePercentEncoding(inputTwo);
2687     ASSERT_STREQ(decodeResultTwo.c_str(), "abc~!@#$|[]{}`^()_+-=");
2688 }
2689 
2690 HWTEST_F(NativeEngineTest, testUrlHelper006, testing::ext::TestSize.Level0)
2691 {
2692     std::string input = "?foo=1&index=0&url=https%3A%2F%2Fssse?iz=67594&from=article.detail%26x-expires%3D17&ff=&cc";
2693     std::vector<OHOS::Url::KeyValue> params {};
2694     OHOS::Url::StringAnalyzing(input, params);
2695     ASSERT_EQ(params.size(), 6);
2696     ASSERT_STREQ(params[0].first.c_str(), "foo");
2697     ASSERT_STREQ(params[0].second.c_str(), "1");
2698     ASSERT_STREQ(params[1].first.c_str(), "index");
2699     ASSERT_STREQ(params[1].second.c_str(), "0");
2700     ASSERT_STREQ(params[2].first.c_str(), "url");
2701     ASSERT_STREQ(params[2].second.c_str(), "https://ssse?iz=67594");
2702     ASSERT_STREQ(params[3].first.c_str(), "from");
2703     ASSERT_STREQ(params[3].second.c_str(), "article.detail&x-expires=17");
2704     ASSERT_STREQ(params[4].first.c_str(), "ff");
2705     ASSERT_STREQ(params[4].second.c_str(), "");
2706     ASSERT_STREQ(params[5].first.c_str(), "cc");
2707     ASSERT_STREQ(params[5].second.c_str(), "");
2708 }
2709 
2710 HWTEST_F(NativeEngineTest, testUrlHelper007, testing::ext::TestSize.Level0)
2711 {
2712     std::string input = "?bar=2&&&&&foo~!@$%^&*()_+=test+@$%";
2713     std::vector<OHOS::Url::KeyValue> params {};
2714     OHOS::Url::StringAnalyzing(input, params);
2715     ASSERT_EQ(params.size(), 7);
2716     ASSERT_STREQ(params[0].first.c_str(), "bar");
2717     ASSERT_STREQ(params[0].second.c_str(), "2");
2718     ASSERT_STREQ(params[1].first.c_str(), "");
2719     ASSERT_STREQ(params[1].second.c_str(), "");
2720     ASSERT_STREQ(params[2].first.c_str(), "");
2721     ASSERT_STREQ(params[2].second.c_str(), "");
2722     ASSERT_STREQ(params[3].first.c_str(), "");
2723     ASSERT_STREQ(params[3].second.c_str(), "");
2724     ASSERT_STREQ(params[4].first.c_str(), "");
2725     ASSERT_STREQ(params[4].second.c_str(), "");
2726     ASSERT_STREQ(params[5].first.c_str(), "foo~!@$%^");
2727     ASSERT_STREQ(params[5].second.c_str(), "");
2728     ASSERT_STREQ(params[6].first.c_str(), "*()_ ");
2729     ASSERT_STREQ(params[6].second.c_str(), "test @$%");
2730 }
2731 
2732 // 0xxx xxxx 0x00 -0x7F decode, 0x80-0xFF not decode
2733 HWTEST_F(NativeEngineTest, testUrlHelper008, testing::ext::TestSize.Level0)
2734 {
2735     for (int i = 0x00; i <= 0xFF; i++) {
2736         auto tem = DecimalToPercentHexString(i);
2737         //%xx,  char 0xxx xxxx
2738         if (i <= 0x7F) {
2739             ASSERT_STRNE(OHOS::Url::DecodePercentEncoding(tem).c_str(), tem.c_str());
2740         } else {
2741             ASSERT_STREQ(OHOS::Url::DecodePercentEncoding(tem).c_str(), tem.c_str());
2742         }
2743     }
2744 }
2745 
2746 // 10xx xxxx xxxx xxxx , 0x8000-0xFFFF ,
2747 // 0xc080-0xc0BF, 0xDF80-0xDFBF decode
2748 HWTEST_F(NativeEngineTest, testUrlHelper009, testing::ext::TestSize.Level1)
2749 {
2750     for (int i = 0x80; i <= 0xFF; i++) {
2751         auto tem = DecimalToPercentHexString(i);
2752         for (int j = 0x00; j <= 0xFF; j++) {
2753             auto tem1 = tem + DecimalToPercentHexString(j);
2754             //%xx%xx, first char 110X XXXX - 1101 1111;//second char 10XX XXXX - 1011 1111
2755             if ((i >= 0xc0 && i <= 0xDF) && (j >= 0x80 && j <= 0xBF)) {
2756                 // mean can be decode, 2 length
2757                 ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem1).length(), 2);
2758             } else {
2759                 // only part decode or not, 2 length
2760                 ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem1).length(), 2);
2761             }
2762         }
2763     }
2764 }
2765 
2766 // 111x xxxx xxxx xxxx xxxx xxxx, 0xE00000-0xFFFF00
2767 HWTEST_F(NativeEngineTest, testUrlHelper010, testing::ext::TestSize.Level1)
2768 {
2769     for (int i = 0xE00000; i <= 0xFF0000; i++) {
2770         // 16 two byte, 8 one byte,get char from all byte
2771         auto tem3 = DecimalToPercentHexString((i >> 16)) + DecimalToPercentHexString((i >> 8) & 0xFF) +
2772                     DecimalToPercentHexString(i & 0xFF);
2773         // std::cout<<"beigin"<<tem3.c_str()<<std::endl;
2774         //%xx%xx%xx,first char 1110 XXXX - 1110 1111; 0xE0-0xEF
2775         // second char 10XX XXXX - 1011 1111, third char 10XX XXXX - 1011 1111;0x80-0xBF
2776         if (((i & 0xFF0000) >= 0xE00000 && (i & 0xFF0000) <= 0xEF0000) &&
2777             ((i & 0x00FF00) >= 0x008000 && (i & 0x00FF00) <= 0x00BF00) &&
2778             ((i & 0x0000FF) >= 0x000080 && (i & 0x0000FF) <= 0x0000BF)) {
2779             // 3 legnth
2780             ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem3).length(), 3);
2781 
2782         } else {
2783             // 3 legnth
2784             ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem3).length(), 3);
2785         }
2786     }
2787 }
2788 
2789 // 1111 0XXX xxxx xxxx xxxx xxxx xxxx xxxx
2790 //  0xF0-0xF7,
2791 HWTEST_F(NativeEngineTest, testUrlHelper011, testing::ext::TestSize.Level1)
2792 {
2793     // pick up part,for 0x00-0xFF to large, will run to long time
2794     int last[] = { 0x00, 0x1F, 0x20, 0x2F, 0x7F, 0x80, 0x81, 0xBF, 0xFF };
2795     for (int i = 0xF00000; i <= 0xFF0000; i++) {
2796         auto tem = DecimalToPercentHexString((i >> 16)) + DecimalToPercentHexString((i >> 8) & 0xFF) +
2797                    DecimalToPercentHexString(i & 0xFF);
2798         for (int k1 = 0; k1 <= sizeof(last) / sizeof(int); k1++) {
2799             auto tem4 = tem + DecimalToPercentHexString(last[k1]);
2800             //%xx%xx%xx%xx,first char 1111 0XXX - 1111 0111;0xF0-0xF7
2801             // second char 10XX XXXX - 1011 1111;0x80-0xBF
2802             // third char 10XX XXXX - 1011 1111;0x80-0xBF
2803             // fourth char 10XX XXXX - 1011 1111;0x80-0xBF
2804             if (((i & 0xFF0000) >= 0xF00000 && (i & 0xFF0000) <= 0xF70000) &&
2805                 ((i & 0x00FF00) >= 0x008000 && (i & 0x00FF00) <= 0x00BF00) &&
2806                 ((i & 0x0000FF) >= 0x000080 && (i & 0x0000FF) <= 0x0000BF) && (last[k1] >= 0x80 && last[k1] <= 0xBF)) {
2807                 ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem4).length(), 4);
2808             } else {
2809                 ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem4).length(), 4);
2810             }
2811         }
2812     }
2813 }
2814 
2815 HWTEST_F(NativeEngineTest, testUrlHostname004, testing::ext::TestSize.Level0)
2816 {
2817     OHOS::Url::URL url("http://example.com/path");
2818     std::string output;
2819     napi_env env = (napi_env)engine_;
2820     DealNapiStrValue(env, url.GetHostname(env), output);
2821     ASSERT_STREQ(output.c_str(), "example.com");
2822     url.SetHostname("newhost.org");
2823     DealNapiStrValue(env, url.GetHostname(env), output);
2824     ASSERT_STREQ(output.c_str(), "newhost.org");
2825 }
2826 
2827 HWTEST_F(NativeEngineTest, testUrlHostname005, testing::ext::TestSize.Level0)
2828 {
2829     OHOS::Url::URL url("http://[2001:db8::1]/file");
2830     std::string output;
2831     napi_env env = (napi_env)engine_;
2832     DealNapiStrValue(env, url.GetHostname(env), output);
2833     ASSERT_STREQ(output.c_str(), "[2001:db8::1]");
2834     url.SetHostname("new.ipv6.host");
2835     DealNapiStrValue(env, url.GetHostname(env), output);
2836     ASSERT_STREQ(output.c_str(), "new.ipv6.host");
2837 }
2838 
2839 HWTEST_F(NativeEngineTest, testUrlSearch004, testing::ext::TestSize.Level0)
2840 {
2841     OHOS::Url::URL url("http://example.com?q=test");
2842     std::string output;
2843     napi_env env = (napi_env)engine_;
2844     DealNapiStrValue(env, url.GetSearch(env), output);
2845     ASSERT_STREQ(output.c_str(), "?q=test");
2846     url.SetSearch("filter=active");
2847     DealNapiStrValue(env, url.GetSearch(env), output);
2848     ASSERT_STREQ(output.c_str(), "?filter=active");
2849 }
2850 
2851 HWTEST_F(NativeEngineTest, testUrlSearch005, testing::ext::TestSize.Level0)
2852 {
2853     OHOS::Url::URL url("https://example.com/#section");
2854     std::string output;
2855     napi_env env = (napi_env)engine_;
2856     DealNapiStrValue(env, url.GetSearch(env), output);
2857     ASSERT_STREQ(output.c_str(), "");
2858     url.SetSearch("debug=1&cache=false");
2859     DealNapiStrValue(env, url.GetSearch(env), output);
2860     ASSERT_STREQ(output.c_str(), "?debug=1&cache=false");
2861 }
2862 
2863 HWTEST_F(NativeEngineTest, testUrlUsername004, testing::ext::TestSize.Level0)
2864 {
2865     OHOS::Url::URL url("ftp://john@example.com/file");
2866     std::string output;
2867     napi_env env = (napi_env)engine_;
2868     DealNapiStrValue(env, url.GetUsername(env), output);
2869     ASSERT_STREQ(output.c_str(), "john");
2870     url.SetUsername("admin_user");
2871     DealNapiStrValue(env, url.GetUsername(env), output);
2872     ASSERT_STREQ(output.c_str(), "admin_user");
2873 }
2874 
2875 HWTEST_F(NativeEngineTest, testUrlUsername005, testing::ext::TestSize.Level0)
2876 {
2877     OHOS::Url::URL url("https://example.com/resource");
2878     std::string output;
2879     napi_env env = (napi_env)engine_;
2880     DealNapiStrValue(env, url.GetUsername(env), output);
2881     ASSERT_STREQ(output.c_str(), "");
2882     url.SetUsername("special#user@name");
2883     DealNapiStrValue(env, url.GetUsername(env), output);
2884     ASSERT_STREQ(output.c_str(), "special%23user%40name");
2885 }
2886 
2887 HWTEST_F(NativeEngineTest, testUrlPassword004, testing::ext::TestSize.Level0)
2888 {
2889     OHOS::Url::URL url("https://user:pass123@example.com");
2890     std::string output;
2891     napi_env env = (napi_env)engine_;
2892     DealNapiStrValue(env, url.GetPassword(env), output);
2893     ASSERT_STREQ(output.c_str(), "pass123");
2894     url.SetPassword("new@secure!pwd");
2895     DealNapiStrValue(env, url.GetPassword(env), output);
2896     ASSERT_STREQ(output.c_str(), "new%40secure!pwd");
2897 }
2898 
2899 HWTEST_F(NativeEngineTest, testUrlPassword005, testing::ext::TestSize.Level0)
2900 {
2901     OHOS::Url::URL url("http://example.com");
2902     std::string output;
2903     napi_env env = (napi_env)engine_;
2904     DealNapiStrValue(env, url.GetPassword(env), output);
2905     ASSERT_STREQ(output.c_str(), "");
2906     url.SetPassword("pwd:with:colons");
2907     DealNapiStrValue(env, url.GetPassword(env), output);
2908     ASSERT_STREQ(output.c_str(), "pwd%3Awith%3Acolons");
2909 }
2910 
2911 HWTEST_F(NativeEngineTest, testUrlHost004, testing::ext::TestSize.Level0)
2912 {
2913     OHOS::Url::URL url("http://localhost:8080");
2914     std::string output;
2915     napi_env env = (napi_env)engine_;
2916     DealNapiStrValue(env, url.GetHost(env), output);
2917     ASSERT_STREQ(output.c_str(), "localhost:8080");
2918     url.SetHost("newdomain.com:9090");
2919     DealNapiStrValue(env, url.GetHost(env), output);
2920     ASSERT_STREQ(output.c_str(), "newdomain.com:9090");
2921 }
2922 
2923 HWTEST_F(NativeEngineTest, testUrlHost005, testing::ext::TestSize.Level0)
2924 {
2925     OHOS::Url::URL url("https://[2001:db8:1::2]");
2926     std::string output;
2927     napi_env env = (napi_env)engine_;
2928     DealNapiStrValue(env, url.GetHost(env), output);
2929     ASSERT_STREQ(output.c_str(), "[2001:db8:1::2]");
2930     url.SetHost("xn--fiqs8s:443");
2931     DealNapiStrValue(env, url.GetHost(env), output);
2932     ASSERT_STREQ(output.c_str(), "xn--fiqs8s:443");
2933 }
2934 
2935 HWTEST_F(NativeEngineTest, testUrlFragment001, testing::ext::TestSize.Level0)
2936 {
2937     OHOS::Url::URL url("http://example.com#section1");
2938     std::string output;
2939     napi_env env = (napi_env)engine_;
2940     DealNapiStrValue(env, url.GetFragment(env), output);
2941     ASSERT_STREQ(output.c_str(), "#section1");
2942     url.SetFragment("new_section");
2943     DealNapiStrValue(env, url.GetFragment(env), output);
2944     ASSERT_STREQ(output.c_str(), "#new_section");
2945 }
2946 
2947 HWTEST_F(NativeEngineTest, testUrlFragment002, testing::ext::TestSize.Level0)
2948 {
2949     OHOS::Url::URL url("https://example.com");
2950     std::string output;
2951     napi_env env = (napi_env)engine_;
2952     DealNapiStrValue(env, url.GetFragment(env), output);
2953     ASSERT_STREQ(output.c_str(), "");
2954     url.SetFragment("中文锚点");
2955     DealNapiStrValue(env, url.GetFragment(env), output);
2956     ASSERT_TRUE(output.find("%E4%B8%AD%E6%96%87%E9%94%9A%E7%82%B9") != std::string::npos);
2957 }
2958 
2959 HWTEST_F(NativeEngineTest, testUrlScheme001, testing::ext::TestSize.Level0)
2960 {
2961     OHOS::Url::URL url("https://secure.site");
2962     std::string output;
2963     napi_env env = (napi_env)engine_;
2964     DealNapiStrValue(env, url.GetScheme(env), output);
2965     ASSERT_STREQ(output.c_str(), "https:");
2966     url.SetScheme("ftp");
2967     DealNapiStrValue(env, url.GetScheme(env), output);
2968     ASSERT_STREQ(output.c_str(), "https:");
2969 }
2970 
2971 HWTEST_F(NativeEngineTest, testUrlScheme002, testing::ext::TestSize.Level0)
2972 {
2973     OHOS::Url::URL url("custom-scheme://resource");
2974     std::string output;
2975     napi_env env = (napi_env)engine_;
2976     DealNapiStrValue(env, url.GetScheme(env), output);
2977     ASSERT_STREQ(output.c_str(), "custom-scheme:");
2978     url.SetScheme("new-protocol");
2979     DealNapiStrValue(env, url.GetScheme(env), output);
2980     ASSERT_STREQ(output.c_str(), "new-protocol");
2981 }
2982 
2983 HWTEST_F(NativeEngineTest, testUrlPath001, testing::ext::TestSize.Level0)
2984 {
2985     OHOS::Url::URL url("http://example.com/old/path");
2986     std::string output;
2987     napi_env env = (napi_env)engine_;
2988     DealNapiStrValue(env, url.GetPath(env), output);
2989     ASSERT_STREQ(output.c_str(), "/old/path");
2990     url.SetPath("/new/resource");
2991     DealNapiStrValue(env, url.GetPath(env), output);
2992     ASSERT_STREQ(output.c_str(), "/new/resource");
2993 }
2994 
2995 HWTEST_F(NativeEngineTest, testUrlPath002, testing::ext::TestSize.Level0)
2996 {
2997     OHOS::Url::URL url("file:///dir/file.txt");
2998     std::string output;
2999     napi_env env = (napi_env)engine_;
3000     DealNapiStrValue(env, url.GetPath(env), output);
3001     ASSERT_STREQ(output.c_str(), "/dir/file.txt");
3002     url.SetPath("/new/dir/../data.json");
3003     DealNapiStrValue(env, url.GetPath(env), output);
3004     ASSERT_STREQ(output.c_str(), "/new/data.json");
3005 }
3006 
3007 HWTEST_F(NativeEngineTest, testUrlEmptyInput001, testing::ext::TestSize.Level0)
3008 {
3009     OHOS::Url::URL url("");
3010     std::string output;
3011     napi_env env = (napi_env)engine_;
3012     url.SetScheme("data");
3013     DealNapiStrValue(env, url.GetScheme(env), output);
3014     ASSERT_STREQ(output.c_str(), "data");
3015     DealNapiStrValue(env, url.GetHostname(env), output);
3016     ASSERT_STREQ(output.c_str(), "");
3017 }
3018 
3019 HWTEST_F(NativeEngineTest, testUrlSpecialChars001, testing::ext::TestSize.Level0)
3020 {
3021     OHOS::Url::URL url("http://user:pwd@host.com");
3022     std::string output;
3023     napi_env env = (napi_env)engine_;
3024 
3025     url.SetUsername("user:name@with");
3026     DealNapiStrValue(env, url.GetUsername(env), output);
3027     ASSERT_STREQ(output.c_str(), "user%3Aname%40with");
3028 
3029     url.SetPassword("p@ss:w0rd#123");
3030     DealNapiStrValue(env, url.GetPassword(env), output);
3031     ASSERT_STREQ(output.c_str(), "p%40ss%3Aw0rd%23123");
3032 }
3033 
3034 HWTEST_F(NativeEngineTest, testUrlFullUpdate001, testing::ext::TestSize.Level0)
3035 {
3036     OHOS::Url::URL url("http://old.com/oldpath?q=1#old");
3037     std::string output;
3038     napi_env env = (napi_env)engine_;
3039 
3040     url.SetHostname("newhost.org");
3041     DealNapiStrValue(env, url.GetHostname(env), output);
3042     ASSERT_STREQ(output.c_str(), "newhost.org");
3043 
3044     url.SetPath("/new/path/resource");
3045     DealNapiStrValue(env, url.GetPath(env), output);
3046     ASSERT_STREQ(output.c_str(), "/new/path/resource");
3047 
3048     url.SetSearch("debug=true");
3049     DealNapiStrValue(env, url.GetSearch(env), output);
3050     ASSERT_STREQ(output.c_str(), "?debug=true");
3051 
3052     url.SetFragment("new-section");
3053     DealNapiStrValue(env, url.GetFragment(env), output);
3054     ASSERT_STREQ(output.c_str(), "#new-section");
3055 }
3056 
3057 HWTEST_F(NativeEngineTest, testUrlParamsAppend001, testing::ext::TestSize.Level0)
3058 {
3059     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3060     napi_env env = (napi_env)engine_;
3061     napi_value key = StrToNapiValue(env, "username");
3062     napi_value val = StrToNapiValue(env, "john_doe");
3063     params.Append(env, key, val);
3064 
3065     napi_value query = StrToNapiValue(env, "username");
3066     std::string output;
3067     DealNapiStrValue(env, params.Get(env, query), output);
3068     ASSERT_STREQ(output.c_str(), "john_doe");
3069 }
3070 
3071 HWTEST_F(NativeEngineTest, testUrlParamsDelete001, testing::ext::TestSize.Level0)
3072 {
3073     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3074     napi_env env = (napi_env)engine_;
3075     napi_value key = StrToNapiValue(env, "token");
3076     napi_value val = StrToNapiValue(env, "abc123");
3077     params.Append(env, key, val);
3078     bool value = false;
3079     napi_get_value_bool(env, params.IsHas(env, key), &value);
3080     ASSERT_TRUE(value);
3081     params.Delete(env, key);
3082     napi_get_value_bool(env, params.IsHas(env, key), &value);
3083     ASSERT_FALSE(value);
3084 }
3085 
3086 HWTEST_F(NativeEngineTest, testUrlParamsGetAll001, testing::ext::TestSize.Level0)
3087 {
3088     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3089     napi_env env = (napi_env)engine_;
3090     napi_value key = StrToNapiValue(env, "color");
3091 
3092     params.Append(env, key, StrToNapiValue(env, "red"));
3093     params.Append(env, key, StrToNapiValue(env, "green"));
3094     params.Append(env, key, StrToNapiValue(env, "blue"));
3095 
3096     std::string output;
3097     DealNapiStrValue(env, params.Get(env, key), output);
3098     ASSERT_STREQ(output.c_str(), "red");
3099 }
3100 
3101 HWTEST_F(NativeEngineTest, testUrlParamsSet001, testing::ext::TestSize.Level0)
3102 {
3103     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3104     napi_env env = (napi_env)engine_;
3105     napi_value key = StrToNapiValue(env, "page");
3106 
3107     params.Append(env, key, StrToNapiValue(env, "1"));
3108     params.Set(env, key, StrToNapiValue(env, "2"));
3109 
3110     std::string output;
3111     DealNapiStrValue(env, params.Get(env, key), output);
3112     ASSERT_STREQ(output.c_str(), "2");
3113 }
3114 
3115 HWTEST_F(NativeEngineTest, testUrlParamsSort001, testing::ext::TestSize.Level0)
3116 {
3117     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3118     napi_env env = (napi_env)engine_;
3119 
3120     params.Append(env, StrToNapiValue(env, "b"), StrToNapiValue(env, "2"));
3121     params.Append(env, StrToNapiValue(env, "a"), StrToNapiValue(env, "1"));
3122     params.Append(env, StrToNapiValue(env, "c"), StrToNapiValue(env, "3"));
3123     params.Sort();
3124 
3125     std::string output;
3126     DealNapiStrValue(env, params.IterByKeys(env), output);
3127     ASSERT_STREQ(output.c_str(), "");
3128 }
3129 
3130 HWTEST_F(NativeEngineTest, testUrlParamsIterByKeys001, testing::ext::TestSize.Level0)
3131 {
3132     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3133     napi_env env = (napi_env)engine_;
3134 
3135     params.Append(env, StrToNapiValue(env, "first"), StrToNapiValue(env, "1"));
3136     params.Append(env, StrToNapiValue(env, "second"), StrToNapiValue(env, "2"));
3137 
3138     std::string output;
3139     DealNapiStrValue(env, params.IterByKeys(env), output);
3140     ASSERT_STREQ(output.c_str(), "");
3141 }
3142 
3143 HWTEST_F(NativeEngineTest, testUrlParamsIterByValues001, testing::ext::TestSize.Level0)
3144 {
3145     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3146     napi_env env = (napi_env)engine_;
3147 
3148     params.Append(env, StrToNapiValue(env, "x"), StrToNapiValue(env, "10"));
3149     params.Append(env, StrToNapiValue(env, "y"), StrToNapiValue(env, "20"));
3150 
3151     std::string output;
3152     DealNapiStrValue(env, params.IterByValues(env), output);
3153     ASSERT_STREQ(output.c_str(), "");
3154 }
3155 
3156 HWTEST_F(NativeEngineTest, testUrlParamsEmpty001, testing::ext::TestSize.Level0)
3157 {
3158     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3159     napi_env env = (napi_env)engine_;
3160     napi_value key = StrToNapiValue(env, "empty");
3161 
3162     bool value = false;
3163     napi_get_value_bool(env, params.IsHas(env, key), &value);
3164     ASSERT_FALSE(value);
3165 
3166     std::string output;
3167     DealNapiStrValue(env, params.Get(env, key), output);
3168     ASSERT_STREQ(output.c_str(), "");
3169 
3170     DealNapiStrValue(env, params.GetAll(env, key), output);
3171     ASSERT_STREQ(output.c_str(), "");
3172 }
3173 
3174 HWTEST_F(NativeEngineTest, testUrlParamsSpecialChars001, testing::ext::TestSize.Level0)
3175 {
3176     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3177     napi_env env = (napi_env)engine_;
3178     napi_value key = StrToNapiValue(env, "query");
3179     napi_value value = StrToNapiValue(env, "a=b&c=d");
3180 
3181     params.Append(env, key, value);
3182 
3183     std::string output;
3184     DealNapiStrValue(env, params.Get(env, key), output);
3185     ASSERT_STREQ(output.c_str(), "a=b&c=d");
3186 
3187     DealNapiStrValue(env, params.IterByValues(env), output);
3188     ASSERT_STREQ(output.c_str(), "a=b&c=d");
3189 }
3190 
3191 HWTEST_F(NativeEngineTest, testUrlParamsParse001, testing::ext::TestSize.Level0)
3192 {
3193     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3194     napi_env env = (napi_env)engine_;
3195     std::string input1 = "key1";
3196     std::string input2 = "value1";
3197     std::string input3 = "key2";
3198     std::string input4 = "value2";
3199     std::vector<std::string> vec;
3200     vec.push_back(input1);
3201     vec.push_back(input2);
3202     vec.push_back(input3);
3203     vec.push_back(input4);
3204     params.SetArray(env, vec);
3205     std::string output;
3206     DealNapiStrValue(env, params.Get(env, StrToNapiValue(env, "key1")), output);
3207     ASSERT_STREQ(output.c_str(), "value1");
3208 
3209     DealNapiStrValue(env, params.Get(env, StrToNapiValue(env, "key2")), output);
3210     ASSERT_STREQ(output.c_str(), "value2");
3211 
3212     bool value = false;
3213     napi_get_value_bool(env, params.IsHas(env, StrToNapiValue(env, "key1")), &value);
3214     ASSERT_TRUE(value);
3215 }
3216 
3217 HWTEST_F(NativeEngineTest, testUrlParamsDelete002, testing::ext::TestSize.Level0)
3218 {
3219     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3220     napi_env env = (napi_env)engine_;
3221     napi_value key = StrToNapiValue(env, "nonexistent");
3222 
3223     params.Delete(env, key);
3224     bool value = false;
3225     napi_get_value_bool(env, params.IsHas(env, key), &value);
3226     ASSERT_FALSE(value);
3227 }
3228 
3229 HWTEST_F(NativeEngineTest, testUrlParamsGetAll002, testing::ext::TestSize.Level0)
3230 {
3231     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3232     napi_env env = (napi_env)engine_;
3233     napi_value key = StrToNapiValue(env, "lang");
3234 
3235     params.Append(env, key, StrToNapiValue(env, "en"));
3236     params.Append(env, key, StrToNapiValue(env, "zh"));
3237     params.Append(env, key, StrToNapiValue(env, "fr"));
3238 
3239     std::string output;
3240     DealNapiStrValue(env, params.GetAll(env, key), output);
3241     ASSERT_STREQ(output.c_str(), "");
3242 
3243     params.Set(env, key, StrToNapiValue(env, "jp"));
3244     DealNapiStrValue(env, params.GetAll(env, key), output);
3245     ASSERT_STREQ(output.c_str(), "");
3246 }
3247 
3248 HWTEST_F(NativeEngineTest, testUrlParamsEmptyStrings001, testing::ext::TestSize.Level0)
3249 {
3250     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3251     napi_env env = (napi_env)engine_;
3252     napi_value emptyKey = StrToNapiValue(env, "");
3253     napi_value emptyVal = StrToNapiValue(env, "");
3254 
3255     params.Append(env, emptyKey, emptyVal);
3256     bool value = false;
3257     napi_get_value_bool(env, params.IsHas(env, emptyKey), &value);
3258     ASSERT_TRUE(value);
3259 
3260     std::string output;
3261     DealNapiStrValue(env, params.Get(env, emptyKey), output);
3262     ASSERT_STREQ(output.c_str(), "");
3263 
3264     DealNapiStrValue(env, params.IterByKeys(env), output);
3265     ASSERT_STREQ(output.c_str(), "");
3266 }
3267 
3268 HWTEST_F(NativeEngineTest, testUrlParamsOverride001, testing::ext::TestSize.Level0)
3269 {
3270     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3271     napi_env env = (napi_env)engine_;
3272     napi_value key = StrToNapiValue(env, "version");
3273 
3274     params.Append(env, key, StrToNapiValue(env, "1.0"));
3275     params.Append(env, key, StrToNapiValue(env, "2.0"));
3276     params.Set(env, key, StrToNapiValue(env, "3.0"));
3277 
3278     std::string output;
3279     DealNapiStrValue(env, params.Get(env, key), output);
3280     ASSERT_STREQ(output.c_str(), "3.0");
3281 
3282     DealNapiStrValue(env, params.GetAll(env, key), output);
3283     ASSERT_STREQ(output.c_str(), "3.0");
3284 }
3285 
3286 HWTEST_F(NativeEngineTest, testUrlParamsSort002, testing::ext::TestSize.Level0)
3287 {
3288     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3289     napi_env env = (napi_env)engine_;
3290 
3291     params.Append(env, StrToNapiValue(env, "zebra"), StrToNapiValue(env, "animal"));
3292     params.Append(env, StrToNapiValue(env, "apple"), StrToNapiValue(env, "fruit"));
3293     params.Append(env, StrToNapiValue(env, "book"), StrToNapiValue(env, "object"));
3294 
3295     params.Sort();
3296 
3297     std::string output;
3298     DealNapiStrValue(env, params.IterByKeys(env), output);
3299     ASSERT_STREQ(output.c_str(), "");
3300 
3301     DealNapiStrValue(env, params.IterByValues(env), output);
3302     ASSERT_STREQ(output.c_str(), "");
3303 }
3304 
3305 HWTEST_F(NativeEngineTest, testUrlParamsUnicode001, testing::ext::TestSize.Level0)
3306 {
3307     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3308     napi_env env = (napi_env)engine_;
3309     napi_value key = StrToNapiValue(env, "城市");
3310     napi_value value = StrToNapiValue(env, "北京市");
3311 
3312     params.Append(env, key, value);
3313 
3314     std::string output;
3315     bool value1 = false;
3316     napi_get_value_bool(env, params.IsHas(env, key), &value1);
3317     ASSERT_TRUE(value1);
3318 
3319     DealNapiStrValue(env, params.Get(env, key), output);
3320     ASSERT_STREQ(output.c_str(), "北京市");
3321 
3322     DealNapiStrValue(env, params.IterByKeys(env), output);
3323     ASSERT_STREQ(output.c_str(), "北京市");
3324 }
3325 
3326 HWTEST_F(NativeEngineTest, testUrlParamsDelete003, testing::ext::TestSize.Level0)
3327 {
3328     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3329     napi_env env = (napi_env)engine_;
3330     std::string input1 = "product";
3331     std::string input2 = "phone";
3332     std::string input3 = "product";
3333     std::string input4 = "laptop";
3334     std::string input5 = "product";
3335     std::string input6 = "tablet";
3336     std::vector<std::string> vec;
3337     vec.push_back(input1);
3338     vec.push_back(input2);
3339     vec.push_back(input3);
3340     vec.push_back(input4);
3341     vec.push_back(input5);
3342     vec.push_back(input6);
3343     params.SetArray(env, vec);
3344     napi_value key = StrToNapiValue(env, "product");
3345 
3346     params.Delete(env, key);
3347 
3348     std::string output;
3349     DealNapiStrValue(env, params.GetAll(env, key), output);
3350     ASSERT_STREQ(output.c_str(), "");
3351 }
3352 
3353 HWTEST_F(NativeEngineTest, testUrlParamsParse002, testing::ext::TestSize.Level0)
3354 {
3355     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3356     napi_env env = (napi_env)engine_;
3357     std::string input1 = "key1";
3358     std::string input2 = "1";
3359     std::string input3 = "two";
3360     std::string input4 = "laptop";
3361     std::string input5 = "key1";
3362     std::string input6 = "2";
3363     std::vector<std::string> vec;
3364     vec.push_back(input1);
3365     vec.push_back(input2);
3366     vec.push_back(input3);
3367     vec.push_back(input4);
3368     vec.push_back(input5);
3369     vec.push_back(input6);
3370     params.SetArray(env, vec);
3371     napi_value key1 = StrToNapiValue(env, "key1");
3372 
3373     std::string output;
3374     DealNapiStrValue(env, params.Get(env, key1), output);
3375     ASSERT_STREQ(output.c_str(), "1");
3376 
3377     DealNapiStrValue(env, params.GetAll(env, key1), output);
3378     ASSERT_STREQ(output.c_str(), "1");
3379 
3380     DealNapiStrValue(env, params.IterByKeys(env), output);
3381     ASSERT_STREQ(output.c_str(), "1");
3382 }
3383 
3384 HWTEST_F(NativeEngineTest, testUrlParamsSet002, testing::ext::TestSize.Level0)
3385 {
3386     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3387     napi_env env = (napi_env)engine_;
3388     napi_value key = StrToNapiValue(env, "new_key");
3389 
3390     bool value = false;
3391     napi_get_value_bool(env, params.IsHas(env, key), &value);
3392     ASSERT_FALSE(value);
3393     params.Set(env, key, StrToNapiValue(env, "new_value"));
3394     napi_get_value_bool(env, params.IsHas(env, key), &value);
3395     ASSERT_TRUE(value);
3396 
3397     std::string output;
3398     DealNapiStrValue(env, params.Get(env, key), output);
3399     ASSERT_STREQ(output.c_str(), "new_value");
3400 }
3401 
3402 HWTEST_F(NativeEngineTest, testUrlParamsComprehensive001, testing::ext::TestSize.Level0)
3403 {
3404     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3405     napi_env env = (napi_env)engine_;
3406 
3407     napi_value keyA = StrToNapiValue(env, "a");
3408     params.Append(env, keyA, StrToNapiValue(env, "1"));
3409     params.Append(env, keyA, StrToNapiValue(env, "2"));
3410 
3411     napi_value keyB = StrToNapiValue(env, "b");
3412     params.Set(env, keyB, StrToNapiValue(env, "3"));
3413 
3414     bool value = false;
3415     napi_get_value_bool(env, params.IsHas(env, keyA), &value);
3416     ASSERT_TRUE(value);
3417     napi_get_value_bool(env, params.IsHas(env, keyB), &value);
3418     ASSERT_TRUE(value);
3419 
3420     std::string output;
3421     DealNapiStrValue(env, params.GetAll(env, keyA), output);
3422     ASSERT_STREQ(output.c_str(), "");
3423 
3424     DealNapiStrValue(env, params.IterByKeys(env), output);
3425     ASSERT_STREQ(output.c_str(), "");
3426 
3427     DealNapiStrValue(env, params.IterByValues(env), output);
3428     ASSERT_STREQ(output.c_str(), "");
3429 
3430     params.Delete(env, keyA);
3431     napi_get_value_bool(env, params.IsHas(env, keyA), &value);
3432     ASSERT_FALSE(value);
3433     napi_get_value_bool(env, params.IsHas(env, keyB), &value);
3434     ASSERT_TRUE(value);
3435 
3436     params.Append(env, StrToNapiValue(env, "c"), StrToNapiValue(env, "4"));
3437     params.Append(env, StrToNapiValue(env, "a"), StrToNapiValue(env, "5"));
3438     params.Sort();
3439 
3440     DealNapiStrValue(env, params.IterByKeys(env), output);
3441     ASSERT_STREQ(output.c_str(), "");
3442 }
3443 
3444 HWTEST_F(NativeEngineTest, testUrlModule009, testing::ext::TestSize.Level0)
3445 {
3446     napi_env env = (napi_env)engine_;
3447     napi_value exports = nullptr;
3448     napi_create_object(env, &exports);
3449     OHOS::Url::Init(env, exports);
3450     napi_value urlClass = nullptr;
3451     napi_value constructorArgs[1] =  { 0 };
3452     std::string input = "http://username:password@www.testut.com:99/path/path?query#fagment";
3453     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3454     napi_get_named_property(env, exports, "Url", &urlClass);
3455     napi_value instance = nullptr;
3456     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3457 
3458     std::string input1 = "http11:";
3459     napi_value newValue = nullptr;
3460     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3461     napi_set_named_property(env, instance, "protocol", newValue);
3462     napi_value urlProperty = nullptr;
3463     napi_get_named_property(env, instance, "protocol", &urlProperty);
3464     std::string res = GetStringUtf8(env, urlProperty);
3465     ASSERT_STREQ(res.c_str(), "http:");
3466 
3467     input1 = "/pathda/fanah";
3468     newValue = nullptr;
3469     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3470     napi_set_named_property(env, instance, "pathname", newValue);
3471     urlProperty = nullptr;
3472     napi_get_named_property(env, instance, "pathname", &urlProperty);
3473     res = GetStringUtf8(env, urlProperty);
3474     ASSERT_STREQ(res.c_str(), "/pathda/fanah");
3475 
3476     input1 = "168";
3477     newValue = nullptr;
3478     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3479     napi_set_named_property(env, instance, "port", newValue);
3480     urlProperty = nullptr;
3481     napi_get_named_property(env, instance, "port", &urlProperty);
3482     res = GetStringUtf8(env, urlProperty);
3483     ASSERT_STREQ(res.c_str(), "168");
3484 
3485     napi_value constructorArgs1[1] =  { 0 };
3486     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs1[0]);
3487     napi_value hrefFn = nullptr;
3488     napi_get_named_property(env, instance, "href", &hrefFn);
3489     napi_value result1 = nullptr;
3490     napi_call_function(env, instance, hrefFn, 1, constructorArgs1, &result1);
3491 
3492     urlProperty = nullptr;
3493     napi_get_named_property(env, instance, "port", &urlProperty);
3494     res = GetStringUtf8(env, urlProperty);
3495     ASSERT_STREQ(res.c_str(), "99");
3496 }
3497 
3498 HWTEST_F(NativeEngineTest, testUrlModule010, testing::ext::TestSize.Level0)
3499 {
3500     napi_env env = (napi_env)engine_;
3501     napi_value exports = nullptr;
3502     napi_create_object(env, &exports);
3503     OHOS::Url::Init(env, exports);
3504     napi_value urlClass = nullptr;
3505     napi_value constructorArgs[1] =  { 0 };
3506     std::string input = "http://username:password@www.test123.com:99/path/path?query#fagment";
3507     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3508     napi_get_named_property(env, exports, "Url", &urlClass);
3509     napi_value instance = nullptr;
3510     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3511 
3512     std::string input1 = "www.example123.com";
3513     napi_value newValue = nullptr;
3514     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3515     napi_set_named_property(env, instance, "hostname", newValue);
3516     napi_value urlProperty = nullptr;
3517     napi_get_named_property(env, instance, "hostname", &urlProperty);
3518     std::string res = GetStringUtf8(env, urlProperty);
3519     ASSERT_STREQ(res.c_str(), "www.example123.com");
3520 
3521     input1 = "query1=banf";
3522     newValue = nullptr;
3523     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3524     napi_set_named_property(env, instance, "search", newValue);
3525     urlProperty = nullptr;
3526     napi_get_named_property(env, instance, "search", &urlProperty);
3527     res = GetStringUtf8(env, urlProperty);
3528     ASSERT_STREQ(res.c_str(), "?query1=banf");
3529 
3530     input1 = "asfee1s";
3531     newValue = nullptr;
3532     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3533     napi_set_named_property(env, instance, "username", newValue);
3534     urlProperty = nullptr;
3535     napi_get_named_property(env, instance, "username", &urlProperty);
3536     res = GetStringUtf8(env, urlProperty);
3537     ASSERT_STREQ(res.c_str(), "asfee1s");
3538 }
3539 
3540 HWTEST_F(NativeEngineTest, testUrlModule011, testing::ext::TestSize.Level0)
3541 {
3542     napi_env env = (napi_env)engine_;
3543     napi_value exports = nullptr;
3544     napi_create_object(env, &exports);
3545     OHOS::Url::Init(env, exports);
3546     napi_value urlClass = nullptr;
3547     napi_value constructorArgs[1] =  { 0 };
3548     std::string input = "http://username:password@www.test776.com:155/path/path?query#fagment";
3549     napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3550     napi_get_named_property(env, exports, "Url", &urlClass);
3551     napi_value instance = nullptr;
3552     napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3553 
3554     std::string input1 = "pass123";
3555     napi_value newValue = nullptr;
3556     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3557     napi_set_named_property(env, instance, "password", newValue);
3558     napi_value urlProperty = nullptr;
3559     napi_get_named_property(env, instance, "password", &urlProperty);
3560     std::string res = GetStringUtf8(env, urlProperty);
3561     ASSERT_STREQ(res.c_str(), "pass123");
3562 
3563     input1 = "www.test.com:117";
3564     newValue = nullptr;
3565     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3566     napi_set_named_property(env, instance, "host", newValue);
3567     urlProperty = nullptr;
3568     napi_get_named_property(env, instance, "host", &urlProperty);
3569     res = GetStringUtf8(env, urlProperty);
3570     ASSERT_STREQ(res.c_str(), "www.test.com:117");
3571 
3572     input1 = "fagsafd";
3573     newValue = nullptr;
3574     napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3575     napi_set_named_property(env, instance, "hash", newValue);
3576     urlProperty = nullptr;
3577     napi_get_named_property(env, instance, "hash", &urlProperty);
3578     res = GetStringUtf8(env, urlProperty);
3579     ASSERT_STREQ(res.c_str(), "#fagsafd");
3580 }
3581 
3582 HWTEST_F(NativeEngineTest, testUrlFullUpdate002, testing::ext::TestSize.Level0)
3583 {
3584     OHOS::Url::URL url("http://test.com/newpath?q=1#old");
3585     std::string output;
3586     napi_env env = (napi_env)engine_;
3587 
3588     url.SetHostname("newhost11.org");
3589     DealNapiStrValue(env, url.GetHostname(env), output);
3590     ASSERT_STREQ(output.c_str(), "newhost11.org");
3591 
3592     url.SetPath("/new/path/resourceqq");
3593     DealNapiStrValue(env, url.GetPath(env), output);
3594     ASSERT_STREQ(output.c_str(), "/new/path/resourceqq");
3595 
3596     url.SetSearch("kk=val1");
3597     DealNapiStrValue(env, url.GetSearch(env), output);
3598     ASSERT_STREQ(output.c_str(), "?kk=val1");
3599 
3600     url.SetFragment("new-Fragment");
3601     DealNapiStrValue(env, url.GetFragment(env), output);
3602     ASSERT_STREQ(output.c_str(), "#new-Fragment");
3603 }
3604 
3605 HWTEST_F(NativeEngineTest, testUrlParamsAppend002, testing::ext::TestSize.Level0)
3606 {
3607     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3608     napi_env env = (napi_env)engine_;
3609     napi_value key = StrToNapiValue(env, "kk1");
3610     napi_value val = StrToNapiValue(env, "valrr");
3611     params.Append(env, key, val);
3612 
3613     napi_value query = StrToNapiValue(env, "kk1");
3614     std::string output;
3615     DealNapiStrValue(env, params.Get(env, query), output);
3616     ASSERT_STREQ(output.c_str(), "valrr");
3617 }
3618 
3619 HWTEST_F(NativeEngineTest, testUrlParamsDelete004, testing::ext::TestSize.Level0)
3620 {
3621     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3622     napi_env env = (napi_env)engine_;
3623     napi_value key = StrToNapiValue(env, "token112");
3624     napi_value val = StrToNapiValue(env, "abc123");
3625     params.Append(env, key, val);
3626     bool value = false;
3627     napi_get_value_bool(env, params.IsHas(env, key), &value);
3628     ASSERT_TRUE(value);
3629     params.Delete(env, key);
3630     napi_get_value_bool(env, params.IsHas(env, key), &value);
3631     ASSERT_FALSE(value);
3632 }
3633 
3634 HWTEST_F(NativeEngineTest, testUrlParamsGetAll003, testing::ext::TestSize.Level0)
3635 {
3636     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3637     napi_env env = (napi_env)engine_;
3638     napi_value key = StrToNapiValue(env, "strnumber");
3639 
3640     params.Append(env, key, StrToNapiValue(env, "one"));
3641     params.Append(env, key, StrToNapiValue(env, "two"));
3642     params.Append(env, key, StrToNapiValue(env, "three"));
3643 
3644     std::string output;
3645     DealNapiStrValue(env, params.Get(env, key), output);
3646     ASSERT_STREQ(output.c_str(), "one");
3647 }
3648 
3649 HWTEST_F(NativeEngineTest, testUrlParamsSet003, testing::ext::TestSize.Level0)
3650 {
3651     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3652     napi_env env = (napi_env)engine_;
3653     napi_value key = StrToNapiValue(env, "number");
3654 
3655     params.Append(env, key, StrToNapiValue(env, "100"));
3656     params.Set(env, key, StrToNapiValue(env, "2000"));
3657 
3658     std::string output;
3659     DealNapiStrValue(env, params.Get(env, key), output);
3660     ASSERT_STREQ(output.c_str(), "2000");
3661 }