• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "utils/log.h"
20 #include "js_url.h"
21 
22 #define ASSERT_CHECK_CALL(call)   \
23     {                             \
24         ASSERT_EQ(call, napi_ok); \
25     }
26 
27 #define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
28     {                                                           \
29         napi_valuetype valueType = napi_undefined;              \
30         ASSERT_TRUE(value != nullptr);                          \
31         ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
32         ASSERT_EQ(valueType, type);                             \
33     }
34 
DealNapiStrValue(napi_env env,const napi_value napiStr,std::string & result)35 napi_status DealNapiStrValue(napi_env env, const napi_value napiStr, std::string &result)
36 {
37     std::string buffer = "";
38     size_t bufferSize = 0;
39     napi_status status = napi_ok;
40     status = napi_get_value_string_utf8(env, napiStr, nullptr, -1, &bufferSize);
41     buffer.reserve(bufferSize + 1);
42     buffer.resize(bufferSize);
43     if (status != napi_ok) {
44         HILOG_ERROR("can not get buffer size");
45         return status;
46     }
47     if (bufferSize > 0) {
48         status = napi_get_value_string_utf8(env, napiStr, buffer.data(), bufferSize + 1, &bufferSize);
49         if (status != napi_ok) {
50             HILOG_ERROR("can not get buffer value");
51             return status;
52         }
53     }
54     if (buffer.data() != nullptr) {
55         result = buffer;
56     }
57     return status;
58 }
59 
StrToNapiValue(napi_env env,std::string result)60 napi_value StrToNapiValue(napi_env env, std::string result)
61 {
62     napi_value output = nullptr;
63     napi_create_string_utf8(env, result.c_str(), result.size(), &output);
64     return output;
65 }
66 
67 HWTEST_F(NativeEngineTest, testUrlConstructs001, testing::ext::TestSize.Level0)
68 {
69     OHOS::Url::URL url("https://example.org:81/a/b/c?query#fragment");
70     std::string output;
71     napi_env env = (napi_env)engine_;
72     DealNapiStrValue(env, url.GetPath(env), output);
73     ASSERT_STREQ(output.c_str(), "/a/b/c");
74 }
75 
76 HWTEST_F(NativeEngineTest, testUrlConstructs002, testing::ext::TestSize.Level0)
77 {
78     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
79     std::string output;
80     napi_env env = (napi_env)engine_;
81     DealNapiStrValue(env, url.GetPath(env), output);
82     ASSERT_STREQ(output.c_str(), "/directory/file");
83 }
84 
85 HWTEST_F(NativeEngineTest, testUrlConstructs003, testing::ext::TestSize.Level0)
86 {
87     OHOS::Url::URL url("../baz", "http://example.org/foo/bar");
88     std::string output;
89     napi_env env = (napi_env)engine_;
90     DealNapiStrValue(env, url.GetPath(env), output);
91     ASSERT_STREQ(output.c_str(), "/foo/baz");
92 }
93 
94 HWTEST_F(NativeEngineTest, testUrlConstructs004, testing::ext::TestSize.Level0)
95 {
96     OHOS::Url::URL url("/../sca/./path/path/../scasa/jjjjj", "http://www.example.com");
97     std::string output;
98     napi_env env = (napi_env)engine_;
99     DealNapiStrValue(env, url.GetPath(env), output);
100     ASSERT_STREQ(output.c_str(), "/sca/path/scasa/jjjjj");
101 }
102 
103 HWTEST_F(NativeEngineTest, testUrlConstructs005, testing::ext::TestSize.Level0)
104 {
105     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
106     std::string output;
107     napi_env env = (napi_env)engine_;
108     DealNapiStrValue(env, url.GetScheme(env), output);
109     ASSERT_STREQ(output.c_str(), "http:");
110 }
111 
112 HWTEST_F(NativeEngineTest, testUrlConstructs006, testing::ext::TestSize.Level0)
113 {
114     OHOS::Url::URL base("http://www.example.com");
115     OHOS::Url::URL url("//sca/./path/./scasa#", base);
116     std::string output;
117     napi_env env = (napi_env)engine_;
118     DealNapiStrValue(env, url.GetPath(env), output);
119     ASSERT_STREQ(output.c_str(), "/path/scasa");
120 }
121 
122 HWTEST_F(NativeEngineTest, testUrlConstructs007, testing::ext::TestSize.Level0)
123 {
124     OHOS::Url::URL base("http://www.example.com");
125     OHOS::Url::URL url("/dire/query", base);
126     std::string output;
127     napi_env env = (napi_env)engine_;
128     DealNapiStrValue(env, url.GetPath(env), output);
129     ASSERT_STREQ(output.c_str(), "/dire/query");
130 }
131 
132 HWTEST_F(NativeEngineTest, testUrlConstructs008, testing::ext::TestSize.Level0)
133 {
134     OHOS::Url::URL base("http://www.example.com");
135     OHOS::Url::URL url("foo/bar//fragment", base);
136     std::string output;
137     napi_env env = (napi_env)engine_;
138     DealNapiStrValue(env, url.GetPath(env), output);
139     ASSERT_STREQ(output.c_str(), "/foo/bar//fragment");
140 }
141 
142 HWTEST_F(NativeEngineTest, testUrlConstructs009, testing::ext::TestSize.Level0)
143 {
144     OHOS::Url::URL base("http://www.example.com");
145     OHOS::Url::URL url("/../sca/./path/./s#casa", base);
146     std::string output;
147     napi_env env = (napi_env)engine_;
148     DealNapiStrValue(env, url.GetPath(env), output);
149     ASSERT_STREQ(output.c_str(), "/sca/path/s");
150 }
151 
152 HWTEST_F(NativeEngineTest, testUrlConstructs010, testing::ext::TestSize.Level0)
153 {
154     OHOS::Url::URL base("http://www.example.com");
155     OHOS::Url::URL url("/../sca/./path/./sca?sa", base);
156     std::string output;
157     napi_env env = (napi_env)engine_;
158     DealNapiStrValue(env, url.GetPath(env), output);
159     ASSERT_STREQ(output.c_str(), "/sca/path/sca");
160 }
161 
162 HWTEST_F(NativeEngineTest, testUrlConstructs011, testing::ext::TestSize.Level0)
163 {
164     OHOS::Url::URL base("http://www.example.com");
165     OHOS::Url::URL url("", base);
166     std::string output;
167     napi_env env = (napi_env)engine_;
168     DealNapiStrValue(env, url.GetPath(env), output);
169     ASSERT_STREQ(output.c_str(), "/");
170 }
171 
172 HWTEST_F(NativeEngineTest, testUrlConstructs012, testing::ext::TestSize.Level0)
173 {
174     OHOS::Url::URL url("file://\\/www.example.com");
175     std::string output;
176     napi_env env = (napi_env)engine_;
177     DealNapiStrValue(env, url.GetScheme(env), output);
178     ASSERT_STREQ(output.c_str(), "file:");
179 }
180 
181 HWTEST_F(NativeEngineTest, testUrlConstructs013, testing::ext::TestSize.Level0)
182 {
183     OHOS::Url::URL url("file:///www.example.com");
184     std::string output;
185     napi_env env = (napi_env)engine_;
186     DealNapiStrValue(env, url.GetScheme(env), output);
187     ASSERT_STREQ(output.c_str(), "file:");
188 }
189 
190 HWTEST_F(NativeEngineTest, testUrlProtocol001, testing::ext::TestSize.Level0)
191 {
192     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
193     std::string output;
194     napi_env env = (napi_env)engine_;
195     DealNapiStrValue(env, url.GetScheme(env), output);
196     ASSERT_STREQ(output.c_str(), "http:");
197 }
198 
199 HWTEST_F(NativeEngineTest, testUrlProtocol002, testing::ext::TestSize.Level0)
200 {
201     OHOS::Url::URL url("ftp://username:password@host:8080/directory/file?query#fragment");
202     std::string output;
203     napi_env env = (napi_env)engine_;
204     DealNapiStrValue(env, url.GetScheme(env), output);
205     ASSERT_STREQ(output.c_str(), "ftp:");
206 }
207 
208 HWTEST_F(NativeEngineTest, testUrlProtocol003, testing::ext::TestSize.Level0)
209 {
210     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
211     std::string output;
212     napi_env env = (napi_env)engine_;
213     DealNapiStrValue(env, url.GetScheme(env), output);
214     ASSERT_STREQ(output.c_str(), "https:");
215 }
216 
217 HWTEST_F(NativeEngineTest, testUrlSetScheme001, testing::ext::TestSize.Level0)
218 {
219     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
220     std::string output;
221     napi_env env = (napi_env)engine_;
222     DealNapiStrValue(env, url.GetScheme(env), output);
223     ASSERT_STREQ(output.c_str(), "https:");
224     url.SetScheme("ftp:");
225     DealNapiStrValue(env, url.GetScheme(env), output);
226     ASSERT_STREQ(output.c_str(), "ftp:");
227 }
228 
229 HWTEST_F(NativeEngineTest, testUrlSetScheme002, testing::ext::TestSize.Level0)
230 {
231     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
232     std::string output;
233     napi_env env = (napi_env)engine_;
234     DealNapiStrValue(env, url.GetScheme(env), output);
235     ASSERT_STREQ(output.c_str(), "https:");
236     url.SetScheme("666");
237     DealNapiStrValue(env, url.GetScheme(env), output);
238     ASSERT_STREQ(output.c_str(), "https:");
239 }
240 
241 HWTEST_F(NativeEngineTest, testUrlSetScheme003, testing::ext::TestSize.Level0)
242 {
243     OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
244     std::string output;
245     napi_env env = (napi_env)engine_;
246     DealNapiStrValue(env, url.GetScheme(env), output);
247     ASSERT_STREQ(output.c_str(), "https:");
248     url.SetScheme("-/+");
249     DealNapiStrValue(env, url.GetScheme(env), output);
250     ASSERT_STREQ(output.c_str(), "https:");
251 }
252 
253 HWTEST_F(NativeEngineTest, testUrlUsername001, testing::ext::TestSize.Level0)
254 {
255     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
256     std::string output;
257     napi_env env = (napi_env)engine_;
258     DealNapiStrValue(env, url.GetUsername(env), output);
259     ASSERT_STREQ(output.c_str(), "username");
260 }
261 
262 HWTEST_F(NativeEngineTest, testUrlUsername002, testing::ext::TestSize.Level0)
263 {
264     OHOS::Url::URL url("http://zhao:password@host:8080/directory/file?query#fragment");
265     std::string output;
266     napi_env env = (napi_env)engine_;
267     DealNapiStrValue(env, url.GetUsername(env), output);
268     ASSERT_STREQ(output.c_str(), "zhao");
269 }
270 
271 HWTEST_F(NativeEngineTest, testUrlUsername003, testing::ext::TestSize.Level0)
272 {
273     OHOS::Url::URL url("http://skk:password@host:8080/directory/file?query#fragment");
274     std::string output;
275     napi_env env = (napi_env)engine_;
276     DealNapiStrValue(env, url.GetUsername(env), output);
277     ASSERT_STREQ(output.c_str(), "skk");
278 }
279 
280 HWTEST_F(NativeEngineTest, testUrlSetUsername001, testing::ext::TestSize.Level0)
281 {
282     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
283     std::string output;
284     napi_env env = (napi_env)engine_;
285     DealNapiStrValue(env, url.GetUsername(env), output);
286     ASSERT_STREQ(output.c_str(), "username");
287     url.SetUsername("666");
288     DealNapiStrValue(env, url.GetUsername(env), output);
289     ASSERT_STREQ(output.c_str(), "666");
290 }
291 
292 HWTEST_F(NativeEngineTest, testUrlSetUsername002, testing::ext::TestSize.Level0)
293 {
294     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
295     std::string output;
296     napi_env env = (napi_env)engine_;
297     DealNapiStrValue(env, url.GetUsername(env), output);
298     ASSERT_STREQ(output.c_str(), "username");
299     url.SetUsername("");
300     DealNapiStrValue(env, url.GetUsername(env), output);
301     ASSERT_STREQ(output.c_str(), "");
302 }
303 
304 HWTEST_F(NativeEngineTest, testUrlPassword001, testing::ext::TestSize.Level0)
305 {
306     OHOS::Url::URL url("http://username:11@host:8080/directory/file?query#fragment");
307     std::string output;
308     napi_env env = (napi_env)engine_;
309     DealNapiStrValue(env, url.GetPassword(env), output);
310     ASSERT_STREQ(output.c_str(), "11");
311 }
312 
313 HWTEST_F(NativeEngineTest, testUrlPassword002, testing::ext::TestSize.Level0)
314 {
315     OHOS::Url::URL url("http://username:23aa@host:8080/directory/file?query#fragment");
316     std::string output;
317     napi_env env = (napi_env)engine_;
318     DealNapiStrValue(env, url.GetPassword(env), output);
319     ASSERT_STREQ(output.c_str(), "23aa");
320 }
321 
322 HWTEST_F(NativeEngineTest, testUrlPassword003, testing::ext::TestSize.Level0)
323 {
324     OHOS::Url::URL url("http://username@host:8080/directory/file?query#fragment");
325     std::string output;
326     napi_env env = (napi_env)engine_;
327     DealNapiStrValue(env, url.GetPassword(env), output);
328     ASSERT_STREQ(output.c_str(), "");
329 }
330 
331 HWTEST_F(NativeEngineTest, testUrlSetPassword001, testing::ext::TestSize.Level0)
332 {
333     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
334     std::string output;
335     napi_env env = (napi_env)engine_;
336     DealNapiStrValue(env, url.GetPassword(env), output);
337     ASSERT_STREQ(output.c_str(), "password");
338     url.SetPassword("666");
339     DealNapiStrValue(env, url.GetPassword(env), output);
340     ASSERT_STREQ(output.c_str(), "666");
341 }
342 
343 HWTEST_F(NativeEngineTest, testUrlSetPassword002, testing::ext::TestSize.Level0)
344 {
345     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
346     std::string output;
347     napi_env env = (napi_env)engine_;
348     DealNapiStrValue(env, url.GetPassword(env), output);
349     ASSERT_STREQ(output.c_str(), "password");
350     url.SetPassword("");
351     DealNapiStrValue(env, url.GetPassword(env), output);
352     ASSERT_STREQ(output.c_str(), "");
353 }
354 
355 HWTEST_F(NativeEngineTest, testUrlHost001, testing::ext::TestSize.Level0)
356 {
357     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
358     std::string output;
359     napi_env env = (napi_env)engine_;
360     DealNapiStrValue(env, url.GetHost(env), output);
361     ASSERT_STREQ(output.c_str(), "host:8080");
362 }
363 
364 HWTEST_F(NativeEngineTest, testUrlHost002, testing::ext::TestSize.Level0)
365 {
366     OHOS::Url::URL url("http://username:password@hosthost/directory/file?query#fragment");
367     std::string output;
368     napi_env env = (napi_env)engine_;
369     DealNapiStrValue(env, url.GetHost(env), output);
370     ASSERT_STREQ(output.c_str(), "hosthost");
371 }
372 
373 HWTEST_F(NativeEngineTest, testUrlHost003, testing::ext::TestSize.Level0)
374 {
375     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
376     std::string output;
377     napi_env env = (napi_env)engine_;
378     DealNapiStrValue(env, url.GetHost(env), output);
379     ASSERT_STREQ(output.c_str(), "host:199");
380 }
381 
382 HWTEST_F(NativeEngineTest, testUrlSetHost001, testing::ext::TestSize.Level0)
383 {
384     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
385     std::string output;
386     napi_env env = (napi_env)engine_;
387     DealNapiStrValue(env, url.GetHost(env), output);
388     ASSERT_STREQ(output.c_str(), "host:199");
389     url.SetHost("0.0.0.0.0:199");
390     DealNapiStrValue(env, url.GetHost(env), output);
391     ASSERT_STREQ(output.c_str(), "0.0.0.0.0:199");
392 }
393 
394 HWTEST_F(NativeEngineTest, testUrlSetHost002, testing::ext::TestSize.Level0)
395 {
396     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
397     std::string output;
398     napi_env env = (napi_env)engine_;
399     DealNapiStrValue(env, url.GetHost(env), output);
400     ASSERT_STREQ(output.c_str(), "host:199");
401     url.SetHost("");
402     DealNapiStrValue(env, url.GetHost(env), output);
403     ASSERT_STREQ(output.c_str(), "host:199");
404 }
405 
406 HWTEST_F(NativeEngineTest, testUrlSetHref001, testing::ext::TestSize.Level0)
407 {
408     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
409     std::string output;
410     napi_env env = (napi_env)engine_;
411     DealNapiStrValue(env, url.GetHost(env), output);
412     ASSERT_STREQ(output.c_str(), "host:199");
413     url.SetHref("http:huawei.com");
414     DealNapiStrValue(env, url.GetHost(env), output);
415     ASSERT_STREQ(output.c_str(), "huawei.com");
416 }
417 
418 HWTEST_F(NativeEngineTest, testUrlSetHref002, testing::ext::TestSize.Level0)
419 {
420     OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
421     std::string output;
422     napi_env env = (napi_env)engine_;
423     DealNapiStrValue(env, url.GetHost(env), output);
424     ASSERT_STREQ(output.c_str(), "host:199");
425     url.SetHref("   http:huawei.com");
426     DealNapiStrValue(env, url.GetHost(env), output);
427     ASSERT_STREQ(output.c_str(), "huawei.com");
428 }
429 
430 HWTEST_F(NativeEngineTest, testUrlHostname001, testing::ext::TestSize.Level0)
431 {
432     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
433     std::string output;
434     napi_env env = (napi_env)engine_;
435     DealNapiStrValue(env, url.GetHostname(env), output);
436     ASSERT_STREQ(output.c_str(), "host");
437 }
438 
439 HWTEST_F(NativeEngineTest, testUrlHostname002, testing::ext::TestSize.Level0)
440 {
441     OHOS::Url::URL url("http://username:password@host123:8080/directory/file?query#fragment");
442     std::string output;
443     napi_env env = (napi_env)engine_;
444     DealNapiStrValue(env, url.GetHostname(env), output);
445     ASSERT_STREQ(output.c_str(), "host123");
446 }
447 
448 HWTEST_F(NativeEngineTest, testUrlHostname003, testing::ext::TestSize.Level0)
449 {
450     OHOS::Url::URL url("http://username:password@885ssa:8080/directory/file?query#fragment");
451     std::string output;
452     napi_env env = (napi_env)engine_;
453     DealNapiStrValue(env, url.GetHostname(env), output);
454     ASSERT_STREQ(output.c_str(), "885ssa");
455 }
456 
457 HWTEST_F(NativeEngineTest, testUrlPort001, testing::ext::TestSize.Level0)
458 {
459     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
460     std::string output;
461     napi_env env = (napi_env)engine_;
462     DealNapiStrValue(env, url.GetPort(env), output);
463     ASSERT_STREQ(output.c_str(), "8080");
464 }
465 
466 HWTEST_F(NativeEngineTest, testUrlPort002, testing::ext::TestSize.Level0)
467 {
468     OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
469     std::string output;
470     napi_env env = (napi_env)engine_;
471     DealNapiStrValue(env, url.GetPort(env), output);
472     ASSERT_STREQ(output.c_str(), "100");
473 }
474 
475 
476 HWTEST_F(NativeEngineTest, testUrlPort003, testing::ext::TestSize.Level0)
477 {
478     OHOS::Url::URL url("http://username:password@host/directory/file?query#fragment");
479     std::string output;
480     napi_env env = (napi_env)engine_;
481     DealNapiStrValue(env, url.GetPort(env), output);
482     ASSERT_STREQ(output.c_str(), "");
483 }
484 
485 HWTEST_F(NativeEngineTest, testUrlSetPort001, testing::ext::TestSize.Level0)
486 {
487     OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
488     std::string output;
489     napi_env env = (napi_env)engine_;
490     DealNapiStrValue(env, url.GetPort(env), output);
491     ASSERT_STREQ(output.c_str(), "100");
492     url.SetPort("600");
493     DealNapiStrValue(env, url.GetPort(env), output);
494     ASSERT_STREQ(output.c_str(), "600");
495 }
496 
497 HWTEST_F(NativeEngineTest, testUrlPathname001, testing::ext::TestSize.Level0)
498 {
499     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
500     std::string output;
501     napi_env env = (napi_env)engine_;
502     DealNapiStrValue(env, url.GetPath(env), output);
503     ASSERT_STREQ(output.c_str(), "/directory/file");
504 }
505 
506 HWTEST_F(NativeEngineTest, testUrlPathname002, testing::ext::TestSize.Level0)
507 {
508     OHOS::Url::URL url("http://username:password@host:8080/directory?query#fragment");
509     std::string output;
510     napi_env env = (napi_env)engine_;
511     DealNapiStrValue(env, url.GetPath(env), output);
512     ASSERT_STREQ(output.c_str(), "/directory");
513 }
514 
515 HWTEST_F(NativeEngineTest, testUrlPathname003, testing::ext::TestSize.Level0)
516 {
517     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
518     std::string output;
519     napi_env env = (napi_env)engine_;
520     DealNapiStrValue(env, url.GetPath(env), output);
521     ASSERT_STREQ(output.c_str(), "/");
522 }
523 
524 HWTEST_F(NativeEngineTest, testUrlSetPath001, testing::ext::TestSize.Level0)
525 {
526     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
527     std::string output;
528     napi_env env = (napi_env)engine_;
529     DealNapiStrValue(env, url.GetPath(env), output);
530     ASSERT_STREQ(output.c_str(), "/");
531     url.SetPath("\\D:");
532     DealNapiStrValue(env, url.GetPath(env), output);
533     ASSERT_STREQ(output.c_str(), "/D:");
534 }
535 
536 HWTEST_F(NativeEngineTest, testUrlSetPath002, testing::ext::TestSize.Level0)
537 {
538     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
539     std::string output;
540     napi_env env = (napi_env)engine_;
541     DealNapiStrValue(env, url.GetPath(env), output);
542     ASSERT_STREQ(output.c_str(), "/");
543     url.SetPath(":\\D:");
544     DealNapiStrValue(env, url.GetPath(env), output);
545     ASSERT_STREQ(output.c_str(), "/:/D:");
546 }
547 
548 HWTEST_F(NativeEngineTest, testUrlSetPath003, testing::ext::TestSize.Level0)
549 {
550     OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
551     std::string output;
552     napi_env env = (napi_env)engine_;
553     DealNapiStrValue(env, url.GetPath(env), output);
554     ASSERT_STREQ(output.c_str(), "/");
555     url.SetPath("::");
556     DealNapiStrValue(env, url.GetPath(env), output);
557     ASSERT_STREQ(output.c_str(), "/::");
558 }
559 
560 HWTEST_F(NativeEngineTest, testUrlSearch001, testing::ext::TestSize.Level0)
561 {
562     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq#fragment");
563     std::string output;
564     napi_env env = (napi_env)engine_;
565     DealNapiStrValue(env, url.GetSearch(env), output);
566     ASSERT_STREQ(output.c_str(), "?query=qqqq");
567 }
568 
569 HWTEST_F(NativeEngineTest, testUrlSearch002, testing::ext::TestSize.Level0)
570 {
571     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq&ll=pp#fragment");
572     std::string output;
573     napi_env env = (napi_env)engine_;
574     DealNapiStrValue(env, url.GetSearch(env), output);
575     ASSERT_STREQ(output.c_str(), "?query=qqqq&ll=pp");
576 }
577 
578 HWTEST_F(NativeEngineTest, testUrlSearch003, testing::ext::TestSize.Level0)
579 {
580     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
581     std::string output;
582     napi_env env = (napi_env)engine_;
583     DealNapiStrValue(env, url.GetSearch(env), output);
584     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
585 }
586 
587 HWTEST_F(NativeEngineTest, testUrlSetSearch001, testing::ext::TestSize.Level0)
588 {
589     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
590     std::string output;
591     napi_env env = (napi_env)engine_;
592     DealNapiStrValue(env, url.GetSearch(env), output);
593     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
594     url.SetSearch("");
595     DealNapiStrValue(env, url.GetSearch(env), output);
596     ASSERT_STREQ(output.c_str(), "");
597 }
598 
599 HWTEST_F(NativeEngineTest, testUrlSetSearch002, testing::ext::TestSize.Level0)
600 {
601     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
602     std::string output;
603     napi_env env = (napi_env)engine_;
604     DealNapiStrValue(env, url.GetSearch(env), output);
605     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
606     url.SetSearch("?444=555");
607     DealNapiStrValue(env, url.GetSearch(env), output);
608     ASSERT_STREQ(output.c_str(), "?444=555");
609 }
610 
611 HWTEST_F(NativeEngineTest, testUrlSetSearch003, testing::ext::TestSize.Level0)
612 {
613     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
614     std::string output;
615     napi_env env = (napi_env)engine_;
616     DealNapiStrValue(env, url.GetSearch(env), output);
617     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
618     url.SetSearch("444=555");
619     DealNapiStrValue(env, url.GetSearch(env), output);
620     ASSERT_STREQ(output.c_str(), "?444=555");
621 }
622 
623 HWTEST_F(NativeEngineTest, testUrlSetSearch004, testing::ext::TestSize.Level0)
624 {
625     OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
626     std::string output;
627     napi_env env = (napi_env)engine_;
628     DealNapiStrValue(env, url.GetSearch(env), output);
629     ASSERT_STREQ(output.c_str(), "?ppp9875=77");
630     url.SetSearch("?##44=55");
631     DealNapiStrValue(env, url.GetSearch(env), output);
632     ASSERT_STREQ(output.c_str(), "?%23%2344=55");
633 }
634 
635 HWTEST_F(NativeEngineTest, testUrlGetFragment001, testing::ext::TestSize.Level0)
636 {
637     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
638     std::string output;
639     napi_env env = (napi_env)engine_;
640     DealNapiStrValue(env, url.GetFragment(env), output);
641     ASSERT_STREQ(output.c_str(), "#fragment");
642 }
643 
644 HWTEST_F(NativeEngineTest, testUrlGetFragment002, testing::ext::TestSize.Level0)
645 {
646     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
647     std::string output;
648     napi_env env = (napi_env)engine_;
649     DealNapiStrValue(env, url.GetFragment(env), output);
650     ASSERT_STREQ(output.c_str(), "#fragment");
651 }
652 
653 HWTEST_F(NativeEngineTest, testUrlGetFragment003, testing::ext::TestSize.Level0)
654 {
655     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
656     std::string output;
657     napi_env env = (napi_env)engine_;
658     DealNapiStrValue(env, url.GetFragment(env), output);
659     ASSERT_STREQ(output.c_str(), "#123456");
660 }
661 
662 HWTEST_F(NativeEngineTest, testUrlSetFragment001, testing::ext::TestSize.Level0)
663 {
664     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
665     std::string output;
666     napi_env env = (napi_env)engine_;
667     DealNapiStrValue(env, url.GetFragment(env), output);
668     ASSERT_STREQ(output.c_str(), "#123456");
669     url.SetFragment("");
670     DealNapiStrValue(env, url.GetFragment(env), output);
671     ASSERT_STREQ(output.c_str(), "");
672 }
673 
674 HWTEST_F(NativeEngineTest, testUrlSetFragment002, testing::ext::TestSize.Level0)
675 {
676     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
677     std::string output;
678     napi_env env = (napi_env)engine_;
679     DealNapiStrValue(env, url.GetFragment(env), output);
680     ASSERT_STREQ(output.c_str(), "#123456");
681     url.SetFragment("#445566");
682     DealNapiStrValue(env, url.GetFragment(env), output);
683     ASSERT_STREQ(output.c_str(), "#445566");
684 }
685 
686 HWTEST_F(NativeEngineTest, testUrlSetFragment003, testing::ext::TestSize.Level0)
687 {
688     OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
689     std::string output;
690     napi_env env = (napi_env)engine_;
691     DealNapiStrValue(env, url.GetFragment(env), output);
692     ASSERT_STREQ(output.c_str(), "#123456");
693     url.SetFragment("445566");
694     DealNapiStrValue(env, url.GetFragment(env), output);
695     ASSERT_STREQ(output.c_str(), "#445566");
696 }
697 
698 HWTEST_F(NativeEngineTest, testUrlIPV6001, testing::ext::TestSize.Level0)
699 {
700     OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C:417A]/index.html");
701     napi_env env = (napi_env)engine_;
702     napi_value result = url.GetIsIpv6(env);
703     bool value = false;
704     napi_get_value_bool(env, result, &value);
705     ASSERT_TRUE(value);
706 }
707 
708 HWTEST_F(NativeEngineTest, testUrlIPV6002, testing::ext::TestSize.Level0)
709 {
710     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
711     napi_env env = (napi_env)engine_;
712     napi_value result = url.GetIsIpv6(env);
713     bool value = false;
714     napi_get_value_bool(env, result, &value);
715     ASSERT_FALSE(value);
716 }
717 
718 HWTEST_F(NativeEngineTest, testUrlIPV6003, testing::ext::TestSize.Level0)
719 {
720     OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C.417A]/index.html");
721     napi_env env = (napi_env)engine_;
722     napi_value result = url.GetIsIpv6(env);
723     bool value = false;
724     napi_get_value_bool(env, result, &value);
725     ASSERT_FALSE(value);
726 }
727 
728 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff001, testing::ext::TestSize.Level0)
729 {
730     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
731     napi_env env = (napi_env)engine_;
732     napi_value result = url.GetOnOrOff(env);
733     bool value = false;
734     napi_get_value_bool(env, result, &value);
735     ASSERT_TRUE(value);
736 }
737 
738 HWTEST_F(NativeEngineTest, testUrlSetHostname001, testing::ext::TestSize.Level0)
739 {
740     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
741     napi_env env = (napi_env)engine_;
742     std::string output;
743     std::string value = "host";
744     url.SetHostname(value);
745     DealNapiStrValue(env, url.GetHostname(env), output);
746     ASSERT_STREQ(output.c_str(), "host");
747 }
748 
749 HWTEST_F(NativeEngineTest, testUrlSetHostname002, testing::ext::TestSize.Level0)
750 {
751     OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
752     napi_env env = (napi_env)engine_;
753     std::string output;
754     std::string value = "";
755     url.SetHostname(value);
756     DealNapiStrValue(env, url.GetHostname(env), output);
757     ASSERT_STREQ(output.c_str(), "255.255.255.1");
758 }
759 
760 HWTEST_F(NativeEngineTest, testUrlSearchParams001, testing::ext::TestSize.Level0)
761 {
762     OHOS::Url::URL url("http://username:password@host:8080/directory/file?foo=1&bar=2");
763     std::string output;
764     napi_env env = (napi_env)engine_;
765     DealNapiStrValue(env, url.GetSearch(env), output);
766     ASSERT_STREQ(output.c_str(), "?foo=1&bar=2");
767 }
768 
769 HWTEST_F(NativeEngineTest, testUrlSearchParams002, testing::ext::TestSize.Level0)
770 {
771     OHOS::Url::URL url("https://example.com?d=value1&c=value2&b=大&4=key4");
772     std::string output;
773     napi_env env = (napi_env)engine_;
774     DealNapiStrValue(env, url.GetSearch(env), output);
775     ASSERT_STREQ(output.c_str(), "?d=value1&c=value2&b=大&4=key4");
776 }
777 
778 HWTEST_F(NativeEngineTest, testUrlSearchParams003, testing::ext::TestSize.Level0)
779 {
780     OHOS::Url::URL url("http://username:password@host:8080/directory/file?你好=china#qwer=da");
781     std::string output;
782     napi_env env = (napi_env)engine_;
783     DealNapiStrValue(env, url.GetSearch(env), output);
784     ASSERT_STREQ(output.c_str(), "?你好=china");
785 }
786 
787 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend001, testing::ext::TestSize.Level0)
788 {
789     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
790     std::string output;
791     napi_env env = (napi_env)engine_;
792     napi_value input1 = StrToNapiValue(env, "ma");
793     napi_value input2 = StrToNapiValue(env, "jk");
794     params.Append(env, input1, input2);
795     DealNapiStrValue(env, params.ToString(env), output);
796     ASSERT_STREQ(output.c_str(), "ma=jk");
797 }
798 
799 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend002, testing::ext::TestSize.Level0)
800 {
801     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
802     std::string output;
803     napi_env env = (napi_env)engine_;
804     napi_value input1 = StrToNapiValue(env, "ma 大");
805     napi_value input2 = StrToNapiValue(env, "jk¥");
806     params.Append(env, input1, input2);
807     DealNapiStrValue(env, params.ToString(env), output);
808     ASSERT_STREQ(output.c_str(), "ma+%E5%A4%A7=jk%EF%BF%A5");
809 }
810 
811 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend003, testing::ext::TestSize.Level0)
812 {
813     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
814     std::string output;
815     napi_env env = (napi_env)engine_;
816     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
817     napi_value input2 = StrToNapiValue(env, "jk");
818     params.Append(env, input1, input2);
819     DealNapiStrValue(env, params.ToString(env), output);
820     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
821 }
822 
823 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete001, testing::ext::TestSize.Level0)
824 {
825     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
826     std::string output;
827     napi_env env = (napi_env)engine_;
828     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
829     napi_value input2 = StrToNapiValue(env, "jk");
830     params.Append(env, input1, input2);
831     params.Delete(env, input1);
832     DealNapiStrValue(env, params.ToString(env), output);
833     ASSERT_STREQ(output.c_str(), "");
834 }
835 
836 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete002, testing::ext::TestSize.Level0)
837 {
838     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
839     std::string output;
840     napi_env env = (napi_env)engine_;
841     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
842     napi_value input2 = StrToNapiValue(env, "jk");
843     params.Append(env, input1, input2);
844     napi_value input3 = StrToNapiValue(env, "ma");
845     napi_value input4 = StrToNapiValue(env, "jk");
846     params.Append(env, input3, input4);
847     params.Delete(env, input1);
848     DealNapiStrValue(env, params.ToString(env), output);
849     ASSERT_STREQ(output.c_str(), "ma=jk");
850 }
851 
852 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete003, testing::ext::TestSize.Level0)
853 {
854     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
855     std::string output;
856     napi_env env = (napi_env)engine_;
857     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
858     napi_value input2 = StrToNapiValue(env, "jk");
859     params.Append(env, input1, input2);
860     napi_value input3 = StrToNapiValue(env, "ma");
861     napi_value input4 = StrToNapiValue(env, "jk");
862     params.Append(env, input3, input4);
863     params.Delete(env, input1);
864     params.Delete(env, input3);
865     DealNapiStrValue(env, params.ToString(env), output);
866     ASSERT_STREQ(output.c_str(), "");
867 }
868 
869 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet001, testing::ext::TestSize.Level0)
870 {
871     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
872     std::string output;
873     napi_env env = (napi_env)engine_;
874     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
875     napi_value input2 = StrToNapiValue(env, "jk");
876     params.Append(env, input1, input2);
877     DealNapiStrValue(env, params.Get(env, input1), output);
878     ASSERT_STREQ(output.c_str(), "jk");
879 }
880 
881 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet002, testing::ext::TestSize.Level0)
882 {
883     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
884     std::string output;
885     napi_env env = (napi_env)engine_;
886     napi_value input1 = StrToNapiValue(env, "jk");
887     DealNapiStrValue(env, params.Get(env, input1), output);
888     ASSERT_STREQ(output.c_str(), "");
889 }
890 
891 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet003, testing::ext::TestSize.Level0)
892 {
893     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
894     std::string output;
895     napi_env env = (napi_env)engine_;
896     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
897     napi_value input2 = StrToNapiValue(env, "jk");
898     params.Append(env, input1, input2);
899     DealNapiStrValue(env, params.Get(env, input1), output);
900     ASSERT_STREQ(output.c_str(), "jk");
901 }
902 
903 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll001, testing::ext::TestSize.Level0)
904 {
905     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
906     std::string output;
907     napi_env env = (napi_env)engine_;
908     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
909     napi_value input2 = StrToNapiValue(env, "jk");
910     params.Append(env, input1, input2);
911     napi_value input3 = StrToNapiValue(env, "jk");
912     DealNapiStrValue(env, params.GetAll(env, input3), output);
913     ASSERT_STREQ(output.c_str(), "");
914 }
915 
916 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll002, testing::ext::TestSize.Level0)
917 {
918     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
919     std::string output;
920     napi_env env = (napi_env)engine_;
921     napi_value input1 = StrToNapiValue(env, "ma");
922     napi_value input2 = StrToNapiValue(env, "jk");
923     params.Append(env, input1, input2);
924     napi_value input3 = StrToNapiValue(env, "jk1");
925     DealNapiStrValue(env, params.GetAll(env, input3), output);
926     ASSERT_STREQ(output.c_str(), "");
927 }
928 
929 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll003, testing::ext::TestSize.Level0)
930 {
931     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
932     std::string output;
933     napi_env env = (napi_env)engine_;
934     napi_value input1 = StrToNapiValue(env, "#[%@]");
935     napi_value input2 = StrToNapiValue(env, "jk");
936     params.Append(env, input1, input2);
937     napi_value input3 = StrToNapiValue(env, "ma1");
938     napi_value input4 = StrToNapiValue(env, "jk1");
939     params.Append(env, input3, input4);
940     napi_value input5 = StrToNapiValue(env, "jk2");
941     DealNapiStrValue(env, params.GetAll(env, input5), output);
942     ASSERT_STREQ(output.c_str(), "");
943 }
944 
945 HWTEST_F(NativeEngineTest, testUrlSearchParamsToUSVString001, testing::ext::TestSize.Level0)
946 {
947     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
948     std::string output;
949     napi_env env = (napi_env)engine_;
950     napi_value input1 = StrToNapiValue(env, "你好");
951     napi_value input2 = StrToNapiValue(env, "안녕하세요");
952     params.Append(env, input1, input2);
953     napi_value input3 = StrToNapiValue(env, "[saa]");
954     napi_value input4 = StrToNapiValue(env, "{aas}");
955     params.Append(env, input3, input4);
956     napi_value input5 = StrToNapiValue(env, "你好");
957     DealNapiStrValue(env, params.Get(env, input5), output);
958     ASSERT_STREQ(output.c_str(), "안녕하세요");
959 }
960 
961 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas001, testing::ext::TestSize.Level0)
962 {
963     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
964     std::string output;
965     napi_env env = (napi_env)engine_;
966     napi_value input1 = StrToNapiValue(env, "ma");
967     DealNapiStrValue(env, params.IsHas(env, input1), output);
968     ASSERT_STREQ(output.c_str(), "");
969 }
970 
971 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas002, testing::ext::TestSize.Level0)
972 {
973     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
974     std::string output;
975     napi_env env = (napi_env)engine_;
976     napi_value input1 = StrToNapiValue(env, "ma");
977     napi_value input2 = StrToNapiValue(env, "jk");
978     params.Append(env, input1, input2);
979     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
980     napi_value input4 = StrToNapiValue(env, "jk1");
981     params.Append(env, input3, input4);
982     DealNapiStrValue(env, params.IsHas(env, input1), output);
983     ASSERT_STREQ(output.c_str(), "");
984 }
985 
986 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas003, testing::ext::TestSize.Level0)
987 {
988     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
989     std::string output;
990     napi_env env = (napi_env)engine_;
991     napi_value input1 = StrToNapiValue(env, "ma");
992     napi_value input2 = StrToNapiValue(env, "jk");
993     params.Append(env, input1, input2);
994     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
995     napi_value input4 = StrToNapiValue(env, "jk1");
996     params.Append(env, input3, input4);
997     DealNapiStrValue(env, params.IsHas(env, input3), output);
998     ASSERT_STREQ(output.c_str(), "");
999 }
1000 
1001 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet001, testing::ext::TestSize.Level0)
1002 {
1003     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1004     std::string output;
1005     napi_env env = (napi_env)engine_;
1006     napi_value input1 = StrToNapiValue(env, "ma");
1007     napi_value input2 = StrToNapiValue(env, "jk");
1008     params.Append(env, input1, input2);
1009     napi_value input3 = StrToNapiValue(env, "aa");
1010     params.Set(env, input1, input3);
1011     DealNapiStrValue(env, params.ToString(env), output);
1012     ASSERT_STREQ(output.c_str(), "ma=aa");
1013 }
1014 
1015 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet002, testing::ext::TestSize.Level0)
1016 {
1017     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1018     std::string output;
1019     napi_env env = (napi_env)engine_;
1020     napi_value input1 = StrToNapiValue(env, "ma1");
1021     napi_value input2 = StrToNapiValue(env, "aa");
1022     params.Append(env, input1, input2);
1023     params.Set(env, input1, input2);
1024     DealNapiStrValue(env, params.ToString(env), output);
1025     ASSERT_STREQ(output.c_str(), "ma1=aa");
1026 }
1027 
1028 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet003, testing::ext::TestSize.Level0)
1029 {
1030     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1031     std::string output;
1032     napi_env env = (napi_env)engine_;
1033     napi_value input1 = StrToNapiValue(env, "ma");
1034     napi_value input2 = StrToNapiValue(env, "jk");
1035     params.Append(env, input1, input2);
1036     napi_value input3 = StrToNapiValue(env, "ma1");
1037     napi_value input4 = StrToNapiValue(env, "aa");
1038     params.Set(env, input3, input4);
1039     DealNapiStrValue(env, params.ToString(env), output);
1040     ASSERT_STREQ(output.c_str(), "ma=jk&ma1=aa");
1041 }
1042 
1043 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort001, testing::ext::TestSize.Level0)
1044 {
1045     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1046     std::string output;
1047     napi_env env = (napi_env)engine_;
1048     napi_value input1 = StrToNapiValue(env, "ma");
1049     napi_value input2 = StrToNapiValue(env, "jk");
1050     params.Append(env, input1, input2);
1051     napi_value input3 = StrToNapiValue(env, "a");
1052     napi_value input4 = StrToNapiValue(env, "jk1");
1053     params.Append(env, input3, input4);
1054     params.Sort();
1055     DealNapiStrValue(env, params.ToString(env), output);
1056     ASSERT_STREQ(output.c_str(), "a=jk1&ma=jk");
1057 }
1058 
1059 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort002, testing::ext::TestSize.Level0)
1060 {
1061     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1062     std::string output;
1063     napi_env env = (napi_env)engine_;
1064     napi_value input1 = StrToNapiValue(env, "ma");
1065     napi_value input2 = StrToNapiValue(env, "jk");
1066     params.Append(env, input1, input2);
1067     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1068     napi_value input4 = StrToNapiValue(env, "jk1");
1069     params.Append(env, input3, input4);
1070     params.Sort();
1071     DealNapiStrValue(env, params.ToString(env), output);
1072     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1073 }
1074 
1075 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort003, testing::ext::TestSize.Level0)
1076 {
1077     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1078     std::string output;
1079     napi_env env = (napi_env)engine_;
1080     napi_value input1 = StrToNapiValue(env, "ma");
1081     napi_value input2 = StrToNapiValue(env, "jk");
1082     params.Append(env, input1, input2);
1083     napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1084     napi_value input4 = StrToNapiValue(env, "jk1");
1085     params.Append(env, input3, input4);
1086     napi_value input5 = StrToNapiValue(env, "a");
1087     napi_value input6 = StrToNapiValue(env, "jk2");
1088     params.Append(env, input5, input6);
1089     params.Sort();
1090     DealNapiStrValue(env, params.ToString(env), output);
1091     ASSERT_STREQ(output.c_str(), "a=jk2&foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1092 }
1093 
1094 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString001, testing::ext::TestSize.Level0)
1095 {
1096     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1097     std::string output;
1098     napi_env env = (napi_env)engine_;
1099     napi_value input1 = StrToNapiValue(env, "1 12");
1100     napi_value input2 = StrToNapiValue(env, "jk");
1101     params.Append(env, input1, input2);
1102     DealNapiStrValue(env, params.ToString(env), output);
1103     ASSERT_STREQ(output.c_str(), "1+12=jk");
1104 }
1105 
1106 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString002, testing::ext::TestSize.Level0)
1107 {
1108     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1109     std::string output;
1110     napi_env env = (napi_env)engine_;
1111     napi_value input1 = StrToNapiValue(env, "¥=)");
1112     napi_value input2 = StrToNapiValue(env, "jk");
1113     params.Append(env, input1, input2);
1114     DealNapiStrValue(env, params.ToString(env), output);
1115     ASSERT_STREQ(output.c_str(), "%EF%BF%A5%3D%29=jk");
1116 }
1117 
1118 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString003, testing::ext::TestSize.Level0)
1119 {
1120     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1121     std::string output;
1122     napi_env env = (napi_env)engine_;
1123     napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1124     napi_value input2 = StrToNapiValue(env, "jk");
1125     params.Append(env, input1, input2);
1126     DealNapiStrValue(env, params.ToString(env), output);
1127     ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1128 }
1129 
1130 HWTEST_F(NativeEngineTest, testUrlSearchParams, testing::ext::TestSize.Level0)
1131 {
1132     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1133     std::string output;
1134     napi_env env = (napi_env)engine_;
1135     napi_value input1 = StrToNapiValue(env, "ma");
1136     DealNapiStrValue(env, params.IsHas(env, input1), output);
1137     ASSERT_STREQ(output.c_str(), "");
1138 }
1139 
1140 HWTEST_F(NativeEngineTest, testUrlSearchParamsSetArray, testing::ext::TestSize.Level0)
1141 {
1142     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1143     std::string input1 = "jk";
1144     std::string input2 = "ma";
1145     napi_env env = (napi_env)engine_;
1146     std::vector<std::string> vec;
1147     vec.push_back(input1);
1148     vec.push_back(input2);
1149     params.SetArray(env, vec);
1150     napi_value result = params.GetArray(env);
1151     uint32_t length = 0;
1152     napi_value napiStr = nullptr;
1153     size_t arraySize = 0;
1154     napi_get_array_length(env, result, &length);
1155     std::string cstr1 = "";
1156     for (size_t i = 0; i < length; i++) {
1157         napi_get_element(env, result, i, &napiStr);
1158         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1159         if (arraySize > 0) {
1160             napi_get_value_string_utf8(env, napiStr, cstr1.data(), arraySize + 1, &arraySize);
1161         }
1162         if (i == 0) {
1163             ASSERT_STREQ("jk", cstr1.data());
1164         } else {
1165             ASSERT_STREQ(cstr1.data(), "ma");
1166         }
1167     }
1168 }
1169 
1170 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByKeys, testing::ext::TestSize.Level0)
1171 {
1172     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1173     std::string input1 = "jk";
1174     std::string input2 = "ma";
1175     napi_env env = (napi_env)engine_;
1176     std::vector<std::string> vec;
1177     vec.push_back(input1);
1178     vec.push_back(input2);
1179     params.SetArray(env, vec);
1180     napi_value result = params.IterByKeys(env);
1181     uint32_t length = 0;
1182     napi_value napiStr = nullptr;
1183     size_t arraySize = 0;
1184     napi_get_array_length(env, result, &length);
1185     std::string cstr = "";
1186     for (size_t i = 0; i < length; i += 2) {
1187         napi_get_element(env, result, i, &napiStr);
1188         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1189         if (arraySize > 0) {
1190             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1191         }
1192     }
1193     ASSERT_STREQ(cstr.data(), "jk");
1194 }
1195 
1196 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByValues, testing::ext::TestSize.Level0)
1197 {
1198     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1199     std::string input1 = "jk";
1200     std::string input2 = "ma";
1201     napi_env env = (napi_env)engine_;
1202     std::vector<std::string> vec;
1203     vec.push_back(input1);
1204     vec.push_back(input2);
1205     params.SetArray(env, vec);
1206     napi_value result = params.IterByValues(env);
1207     uint32_t length = 0;
1208     napi_value napiStr = nullptr;
1209     size_t arraySize = 0;
1210     napi_get_array_length(env, result, &length);
1211     std::string cstr = "";
1212     for (size_t i = 0; i < length; i++) {
1213         napi_get_element(env, result, i, &napiStr);
1214         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1215         if (arraySize > 0) {
1216             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1217         }
1218     }
1219     ASSERT_STREQ(cstr.data(), "ma");
1220 }
1221 
1222 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries001, testing::ext::TestSize.Level0)
1223 {
1224     OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1225     napi_env env = (napi_env)engine_;
1226     napi_value input1 = StrToNapiValue(env, "ma");
1227     napi_value input2 = StrToNapiValue(env, "jk");
1228     params.Append(env, input1, input2);
1229     napi_value input3 = StrToNapiValue(env, "你好");
1230     napi_value input4 = StrToNapiValue(env, "jk1");
1231     params.Append(env, input3, input4);
1232     napi_value input5 = StrToNapiValue(env, "a");
1233     napi_value input6 = StrToNapiValue(env, "jk2");
1234     params.Append(env, input5, input6);
1235     napi_value result = params.Entries(env);
1236     uint32_t length = 0;
1237     napi_value napiStr = nullptr;
1238     size_t arraySize = 0;
1239     napi_get_array_length(env, result, &length);
1240     std::string cstr = "";
1241     for (size_t i = 0; i < length; i++) {
1242         napi_get_element(env, result, i, &napiStr);
1243         napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1244         if (arraySize > 0) {
1245             napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1246         }
1247     }
1248     ASSERT_EQ(length, 3);
1249 }