• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "ohos/aafwk/content/want.h"
19 #include "ohos/aafwk/base/string_wrapper.h"
20 #include "ohos/aafwk/base/bool_wrapper.h"
21 #include "ohos/aafwk/base/int_wrapper.h"
22 #include "ohos/aafwk/base/float_wrapper.h"
23 #include "ohos/aafwk/base/array_wrapper.h"
24 #include "ohos/aafwk/base/long_wrapper.h"
25 
26 using namespace testing::ext;
27 using namespace OHOS::AAFwk;
28 using namespace OHOS;
29 using OHOS::Parcel;
30 using OHOS::AppExecFwk::ElementName;
31 
32 namespace OHOS {
33 namespace AAFwk {
34 class WantBaseTest : public testing::Test {
35 public:
WantBaseTest()36     WantBaseTest()
37     {}
~WantBaseTest()38     ~WantBaseTest()
39     {}
40     static void SetUpTestCase(void);
41     static void TearDownTestCase(void);
42     void SetUp();
43     void TearDown();
44 
45     std::shared_ptr<Want> want_ = nullptr;
46 
47     void CompareWant(const std::shared_ptr<Want> &want1, const std::shared_ptr<Want> &want2) const;
48     bool CompareWant(const std::shared_ptr<Want> &want1, const std::shared_ptr<Want> &want2,
49         std::map<std::string, std::string> &keys) const;
50     void SendParcelTest(const std::shared_ptr<Want> &want, std::map<std::string, std::string> &keys) const;
51     void AddBoolParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
52     void AddByteParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
53     void AddCharParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
54     void AddShortParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
55     void AddIntParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
56     void AddLongParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
57     void AddFloatParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
58     void AddDoubleParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
59     void AddStringParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const;
60 
61     std::string boolType = "bool";
62     std::string boolArrayType = "boolArray";
63     std::string byteType = "byte";
64     std::string byteArrayType = "byteArray";
65     std::string charType = "char";
66     std::string charArrayType = "charArray";
67     std::string shortType = "short";
68     std::string shortArrayType = "shortArray";
69     std::string intType = "int";
70     std::string intArrayType = "intArray";
71     std::string longType = "long";
72     std::string longArrayType = "longArray";
73     std::string floatType = "float";
74     std::string floatArrayType = "floatArray";
75     std::string doubleType = "double";
76     std::string doubleArrayType = "doubleArray";
77     std::string stringType = "string";
78     std::string stringArrayType = "stringArray";
79 
80     static const std::string URI_STRING_HEAD;
81     static const std::string URI_STRING_END;
82 };
83 
84 template<typename T>
CompareArrayData(const std::vector<T> & arr1,const std::vector<T> & arr2)85 bool CompareArrayData(const std::vector<T> &arr1, const std::vector<T> &arr2)
86 {
87     if (arr1.size() != arr2.size()) {
88         return false;
89     }
90 
91     for (std::uint32_t i = 0; i < arr1.size(); i++) {
92         if (arr1[i] != arr2[i]) {
93             return false;
94         }
95     }
96 
97     return true;
98 };
99 
100 enum type { FLAG_TEST_SINGLE = 0x01, FLAG_TEST_ARRAY, FLAG_TEST_BOTH };
101 
SetUpTestCase(void)102 void WantBaseTest::SetUpTestCase(void)
103 {}
104 
TearDownTestCase(void)105 void WantBaseTest::TearDownTestCase(void)
106 {}
107 
SetUp(void)108 void WantBaseTest::SetUp(void)
109 {
110     want_ = std::make_shared<Want>();
111 }
112 
TearDown(void)113 void WantBaseTest::TearDown(void)
114 {}
115 
116 const std::string WantBaseTest::URI_STRING_HEAD("#Intent;");
117 const std::string WantBaseTest::URI_STRING_END(";end");
118 
119 /**
120  * @tc.number: AaExecFwk_Want_Type_0100
121  * @tc.name: SetType/GetType
122  * @tc.desc: Validate when normally entering a string
123  */
124 HWTEST_F(WantBaseTest, AaExecFwk_Want_Type_0100, Function | MediumTest | Level1)
125 {
126     if (want_ != nullptr) {
127         std::string description = "liuuy";
128         want_->SetType(description);
129         EXPECT_STREQ(description.c_str(), want_->GetType().c_str());
130     }
131 }
132 
133 /**
134  * @tc.number: AaFwk_Want_Action_0100
135  * @tc.name: SetAction/GetAction
136  * @tc.desc: Validate when normally entering a string
137  */
138 HWTEST_F(WantBaseTest, AaFwk_Want_Action_0100, Function | MediumTest | Level1)
139 {
140     if (want_ != nullptr) {
141         std::string actiondescription = "liuuy";
142         want_->SetAction(actiondescription);
143         EXPECT_STREQ(actiondescription.c_str(), want_->GetAction().c_str());
144     }
145 }
146 
147 /**
148  * @tc.number: AaFwk_Want_Bundle_0100
149  * @tc.name: SetBundle/GetBundle
150  * @tc.desc: Validate when normally entering a string
151  */
152 HWTEST_F(WantBaseTest, AaFwk_Want_Bundle_0100, Function | MediumTest | Level1)
153 {
154     if (want_ != nullptr) {
155         std::string bundleName = "liuuy";
156         want_->SetBundle(bundleName);
157         EXPECT_STREQ(bundleName.c_str(), want_->GetBundle().c_str());
158     }
159 }
160 
161 /**
162  * @tc.number: AaFwk_Want_Parcelable_0100
163  * @tc.name: Marshalling/Unmarshalling
164  * @tc.desc: marshalling Want, and then check result.
165  */
166 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0100, Function | MediumTest | Level1)
167 {
168     std::shared_ptr<Want> WantIn_ = std::make_shared<Want>();
169     if (WantIn_ == nullptr) {
170         return;
171     }
172 
173     WantIn_->SetAction("12345");
174     WantIn_->SetFlags(123);
175 
176     WantIn_->SetAction("12345");
177     WantIn_->SetFlags(123);
178     WantIn_->AddEntity("12345");
179     WantParams wantParams;
180     std::string keyStr = "12345667";
181     bool valueBool = true;
182     wantParams.SetParam(keyStr, Boolean::Box(valueBool));
183     WantIn_->SetParams(wantParams);
184     OHOS::AppExecFwk::ElementName element;
185     element.SetAbilityName("12345");
186     element.SetBundleName("12345");
187     element.SetDeviceID("12345");
188     WantIn_->SetElement(element);
189     WantIn_->SetType("12345");
190     size_t pos1;
191     size_t pos2;
192     bool result = false;
193 
194     Parcel in;
195     pos1 = in.GetWritePosition();
196     result = WantIn_->Marshalling(in);
197     pos2 = in.GetWritePosition();
198     EXPECT_EQ(result, true);
199     GTEST_LOG_(INFO) << " Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
200 
201     pos1 = in.GetWritePosition();
202     result = WantIn_->Marshalling(in);
203     pos2 = in.GetWritePosition();
204     EXPECT_EQ(result, true);
205     GTEST_LOG_(INFO) << " Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
206 
207     pos1 = in.GetReadPosition();
208     std::shared_ptr<Want> WantOut_(Want::Unmarshalling(in));
209     if (WantOut_ != nullptr) {
210         pos2 = in.GetReadPosition();
211         CompareWant(WantIn_, WantOut_);
212         EXPECT_EQ(valueBool, Boolean::Unbox(IBoolean::Query(WantOut_->GetParams().GetParam(keyStr))));
213         GTEST_LOG_(INFO) << " Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
214     }
215 
216     pos1 = in.GetReadPosition();
217     std::shared_ptr<Want> WantOut2_(Want::Unmarshalling(in));
218     if (WantOut2_ != nullptr) {
219         pos2 = in.GetReadPosition();
220         CompareWant(WantIn_, WantOut2_);
221         EXPECT_EQ(valueBool, Boolean::Unbox(IBoolean::Query(WantOut2_->GetParams().GetParam(keyStr))));
222         GTEST_LOG_(INFO) << " Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
223     }
224 }
225 /**
226  * @tc.number: AaFwk_Want_Parcelable_0200
227  * @tc.name: Marshalling/Unmarshalling
228  * @tc.desc: marshalling Want, and then check result.
229  */
230 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0200, Function | MediumTest | Level1)
231 {
232     std::shared_ptr<Want> WantIn_ = std::make_shared<Want>();
233     if (WantIn_ == nullptr) {
234         return;
235     }
236     WantIn_->SetAction("@#¥#3243adsafdf_中文");
237     WantIn_->SetFlags(123);
238     WantIn_->AddEntity("@#¥#3243adsafdf_中文");
239     WantParams wantParams;
240     std::string keyStr = "@#¥#3243adsafdf_中文";
241     long valueLong = 123;
242     wantParams.SetParam(keyStr, Long::Box(valueLong));
243     WantIn_->SetParams(wantParams);
244     OHOS::AppExecFwk::ElementName element;
245     element.SetAbilityName("@#¥#3243adsafdf_中文");
246     element.SetBundleName("@#¥#3243adsafdf_中文");
247     element.SetDeviceID("@#¥#3243adsafdf_中文");
248     WantIn_->SetElement(element);
249     WantIn_->SetType("@#¥#3243adsafdf_中文");
250     size_t pos1;
251     size_t pos2;
252     bool result = false;
253     Parcel in;
254     pos1 = in.GetWritePosition();
255     result = WantIn_->Marshalling(in);
256     pos2 = in.GetWritePosition();
257     EXPECT_EQ(result, true);
258     GTEST_LOG_(INFO) << "Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
259     pos1 = in.GetWritePosition();
260     result = WantIn_->Marshalling(in);
261     pos2 = in.GetWritePosition();
262     EXPECT_EQ(result, true);
263     pos1 = in.GetReadPosition();
264     std::shared_ptr<Want> WantOut_(Want::Unmarshalling(in));
265     if (WantOut_ != nullptr) {
266         pos2 = in.GetReadPosition();
267         CompareWant(WantIn_, WantOut_);
268         std::string outString(String::Unbox(IString::Query(WantOut_->GetParams().GetParam(keyStr))));
269         EXPECT_STREQ(std::to_string(valueLong).c_str(), outString.c_str());
270         GTEST_LOG_(INFO) << "Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
271     }
272     pos1 = in.GetReadPosition();
273     std::shared_ptr<Want> WantOut2_(Want::Unmarshalling(in));
274     if (WantOut2_ != nullptr) {
275         pos2 = in.GetReadPosition();
276         CompareWant(WantIn_, WantOut2_);
277         std::string outString2(String::Unbox(IString::Query(WantOut2_->GetParams().GetParam(keyStr))));
278         EXPECT_STREQ(std::to_string(valueLong).c_str(), outString2.c_str());
279     }
280 }
281 
282 /**
283  * @tc.number: AaFwk_Want_Parcelable_0300
284  * @tc.name: Marshalling/Unmarshalling
285  * @tc.desc: marshalling Want, and then check result.
286  */
287 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0300, Function | MediumTest | Level1)
288 {
289     std::shared_ptr<Want> WantIn_ = std::make_shared<Want>();
290     if (WantIn_ == nullptr) {
291         return;
292     }
293 
294     WantIn_->SetAction("");
295     WantIn_->SetFlags(123);
296     WantIn_->AddEntity("");
297     WantParams wantParams;
298     std::string keyStr = "";
299     int valueInt = 123;
300     wantParams.SetParam(keyStr, Integer::Box(valueInt));
301     WantIn_->SetParams(wantParams);
302     OHOS::AppExecFwk::ElementName element;
303     element.SetAbilityName("");
304     element.SetBundleName("");
305     element.SetDeviceID("");
306     WantIn_->SetElement(element);
307     WantIn_->SetType("");
308 
309     size_t pos1;
310     size_t pos2;
311     bool result = false;
312 
313     Parcel in;
314     pos1 = in.GetWritePosition();
315     result = WantIn_->Marshalling(in);
316     pos2 = in.GetWritePosition();
317     EXPECT_EQ(result, true);
318     GTEST_LOG_(INFO) << "Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
319 
320     pos1 = in.GetWritePosition();
321     result = WantIn_->Marshalling(in);
322     pos2 = in.GetWritePosition();
323     EXPECT_EQ(result, true);
324     GTEST_LOG_(INFO) << "Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
325 
326     pos1 = in.GetReadPosition();
327     std::shared_ptr<Want> WantOut_(Want::Unmarshalling(in));
328     if (WantOut_ != nullptr) {
329         pos2 = in.GetReadPosition();
330         CompareWant(WantIn_, WantOut_);
331         EXPECT_EQ(valueInt, Integer::Unbox(IInteger::Query(WantOut_->GetParams().GetParam(keyStr))));
332         GTEST_LOG_(INFO) << "Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
333     }
334 
335     pos1 = in.GetReadPosition();
336     std::shared_ptr<Want> WantOut2_(Want::Unmarshalling(in));
337     if (WantOut2_ != nullptr) {
338         pos2 = in.GetReadPosition();
339         CompareWant(WantIn_, WantOut2_);
340         EXPECT_EQ(valueInt, Integer::Unbox(IInteger::Query(WantOut2_->GetParams().GetParam(keyStr))));
341         GTEST_LOG_(INFO) << "Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
342     }
343 }
344 
345 /**
346  * @tc.number: AaFwk_Want_Parcelable_0400
347  * @tc.name: Marshalling/Unmarshalling
348  * @tc.desc: marshalling Want, and then check result.
349  */
350 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0400, Function | MediumTest | Level1)
351 {
352     std::shared_ptr<Want> WantIn_ = std::make_shared<Want>();
353     if (WantIn_ == nullptr) {
354         return;
355     }
356 
357     WantIn_->SetAction("12345");
358     WantIn_->SetFlags(123);
359     WantIn_->AddEntity("12345");
360     WantIn_->AddEntity("@#¥#3243adsafdf_中文");
361     WantIn_->AddEntity("");
362     WantParams wantParams;
363     std::string keyStr = "12345667";
364     std::string valueString = "123";
365     wantParams.SetParam(keyStr, String::Box(valueString));
366     WantIn_->SetParams(wantParams);
367     OHOS::AppExecFwk::ElementName element;
368     element.SetAbilityName("12345");
369     element.SetBundleName("12345");
370     element.SetDeviceID("12345");
371     WantIn_->SetElement(element);
372     WantIn_->SetType("12345");
373 
374     size_t pos1;
375     size_t pos2;
376     bool result = false;
377 
378     Parcel in;
379     pos1 = in.GetWritePosition();
380     result = WantIn_->Marshalling(in);
381     pos2 = in.GetWritePosition();
382     EXPECT_EQ(result, true);
383     GTEST_LOG_(INFO) << "Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
384 
385     pos1 = in.GetWritePosition();
386     result = WantIn_->Marshalling(in);
387     pos2 = in.GetWritePosition();
388     EXPECT_EQ(result, true);
389     GTEST_LOG_(INFO) << "Marshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
390 
391     pos1 = in.GetReadPosition();
392     std::shared_ptr<Want> WantOut_(Want::Unmarshalling(in));
393     if (WantOut_ != nullptr) {
394         pos2 = in.GetReadPosition();
395         CompareWant(WantIn_, WantOut_);
396         EXPECT_EQ(valueString, String::Unbox(IString::Query(WantOut_->GetParams().GetParam(keyStr))));
397         GTEST_LOG_(INFO) << "Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
398     }
399 
400     pos1 = in.GetReadPosition();
401     std::shared_ptr<Want> WantOut2_(Want::Unmarshalling(in));
402     if (WantOut2_ != nullptr) {
403         pos2 = in.GetReadPosition();
404         CompareWant(WantIn_, WantOut2_);
405         EXPECT_EQ(valueString, String::Unbox(IString::Query(WantOut2_->GetParams().GetParam(keyStr))));
406         GTEST_LOG_(INFO) << "Unmarshalling: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
407     }
408 }
409 
410 /**
411  * @tc.number: AaFwk_Want_Parcelable_0500
412  * @tc.name: Marshalling/Unmarshalling
413  * @tc.desc: marshalling Want, and then check result.
414  */
415 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0500, Function | MediumTest | Level1)
416 {
417     GTEST_LOG_(INFO) << "AaFwk_Want_Parcelable_005 start";
418     std::shared_ptr<Want> WantIn_ = std::make_shared<Want>();
419     if (WantIn_ == nullptr) {
420         return;
421     }
422 
423     WantIn_->SetAction("system.test.action");
424     WantIn_->SetFlags(64);
425     WantIn_->AddEntity("system.test.entity");
426 
427     OHOS::AppExecFwk::ElementName element;
428     element.SetAbilityName("system.test.abilityname");
429     element.SetBundleName("system.test.bundlename");
430     element.SetDeviceID("system.test.deviceid");
431     WantIn_->SetElement(element);
432 
433     WantParams wantParams;
434     std::string keyStr = "system.test.wantparams.key";
435     std::string MIMEKEY = "mime-type";
436     wantParams.SetParam(MIMEKEY, String::Box("system.test.uritype"));
437 
438     std::string valueString = "system.wantparams.value.content.test";
439     wantParams.SetParam(keyStr, String::Box(valueString));
440     WantIn_->SetParams(wantParams);
441 
442     // want SetParam  arraydata  test
443     std::vector<bool> boolArrayValue = {true, false, true};
444     WantIn_->SetParam(std::string("bool_arraykey"), boolArrayValue);
445 
446     std::vector<byte> byteArrayValue = {'?', 'a', '\\'};
447     WantIn_->SetParam(std::string("byte_arraykey"), byteArrayValue);
448 
449     std::vector<zchar> charArrayValue = {U'e', U'l', U'l', U'o'};
450     WantIn_->SetParam(std::string("char_arraykey"), charArrayValue);
451 
452     std::vector<short> shortArrayValue = {-1, 0, 1};
453     WantIn_->SetParam(std::string("short_arraykey"), shortArrayValue);
454 
455     std::vector<int> intArrayValue = {-10, 0, 10};
456     WantIn_->SetParam(std::string("int_arraykey"), intArrayValue);
457 
458     std::vector<long> longArrayValue = {-100, 0, 100};
459     WantIn_->SetParam(std::string("long_arraykey"), longArrayValue);
460 
461     std::vector<float> floatArrayValue = {-100.1, 0.1, 100.1};
462     WantIn_->SetParam(std::string("float_arraykey"), floatArrayValue);
463 
464     std::vector<double> doubleArrayValue = {-1000.1, 0.1, 1000.1};
465     WantIn_->SetParam(std::string("double_arraykey"), doubleArrayValue);
466 
467     std::vector<std::string> stringArrayValue = {"stringtest1", "string@test2", "string@!#test2"};
468     WantIn_->SetParam(std::string("string_arraykey"), stringArrayValue);
469 
470     Want wantCopy(*WantIn_);
471     std::vector<std::string> teststringArrayValue1 = WantIn_->GetStringArrayParam(std::string("string_arraykey"));
472     std::vector<std::string> teststringArrayValue2 = wantCopy.GetStringArrayParam(std::string("string_arraykey"));
473     bool copyarraycompare = CompareArrayData<std::string>(teststringArrayValue1, teststringArrayValue1);
474     EXPECT_EQ(copyarraycompare, true);
475     std::string str = (copyarraycompare == true) ? "true" : "false";
476     GTEST_LOG_(INFO) << "copyarraycompare=" << str.c_str();
477 
478     Parcel in;
479     bool result = false;
480     result = WantIn_->Marshalling(in);
481     EXPECT_EQ(result, true);
482     std::shared_ptr<Want> WantOut_(Want::Unmarshalling(in));
483     if (WantOut_ != nullptr) {
484         GTEST_LOG_(INFO) << "WantOut_->GetAction().c_str(): " << WantOut_->GetAction().c_str();
485         EXPECT_STREQ(WantOut_->GetAction().c_str(), std::string("system.test.action").c_str());
486 
487         int flags = WantOut_->GetFlags();
488         GTEST_LOG_(INFO) << "WantOut_->GetFlags(): " << flags;
489         EXPECT_EQ(((int)(flags)), 64);
490 
491         bool hasentity = WantOut_->HasEntity("system.test.entity");
492         GTEST_LOG_(INFO) << "WantOut_->HasEntity(system.test.entity)" << hasentity;
493         EXPECT_EQ(hasentity, true);
494 
495         WantOut_->RemoveEntity(std::string("system.test.entity"));
496         hasentity = WantOut_->HasEntity(std::string("system.test.entity"));
497         GTEST_LOG_(INFO) << "WantOut_->RemoveEntity(system.test.entity)" << hasentity;
498         EXPECT_EQ(hasentity, false);
499 
500         std::string outtype = WantOut_->GetType();
501         GTEST_LOG_(INFO) << "WantOut_->GetType()" << outtype.c_str();
502         EXPECT_STREQ(outtype.c_str(), std::string("system.test.uritype").c_str());
503 
504         element = WantOut_->GetElement();
505         GTEST_LOG_(INFO) << "element.GetAbilityName().c_str(): " << element.GetAbilityName().c_str();
506         EXPECT_STREQ(element.GetAbilityName().c_str(), std::string("system.test.abilityname").c_str());
507 
508         GTEST_LOG_(INFO) << "element->GetBundleName().c_str(): " << element.GetBundleName().c_str();
509         EXPECT_STREQ(element.GetBundleName().c_str(), std::string("system.test.bundlename").c_str());
510 
511         GTEST_LOG_(INFO) << "element.GetDeviceID().c_str(): " << element.GetDeviceID().c_str();
512         EXPECT_STREQ(element.GetDeviceID().c_str(), std::string("system.test.deviceid").c_str());
513 
514         std::string param_content = WantOut_->GetStringParam(keyStr);
515         GTEST_LOG_(INFO) << "WantOut_->GetStringParam(keyStr): " << param_content.c_str();
516 
517         // want SetParam  arraydata test
518         std::vector<bool> retboolArray;
519         retboolArray = WantOut_->GetBoolArrayParam(std::string("bool_arraykey"));
520 
521         bool arraycompare = CompareArrayData<bool>(retboolArray, boolArrayValue);
522         EXPECT_EQ(arraycompare, true);
523 
524         std::vector<byte> retbyteArrayValue;
525         retbyteArrayValue = WantOut_->GetByteArrayParam(std::string("byte_arraykey"));
526         arraycompare = CompareArrayData<byte>(retbyteArrayValue, byteArrayValue);
527         EXPECT_EQ(arraycompare, true);
528 
529         std::vector<zchar> retcharArrayValue;
530         retcharArrayValue = WantOut_->GetCharArrayParam(std::string("char_arraykey"));
531         arraycompare = CompareArrayData<zchar>(retcharArrayValue, charArrayValue);
532         EXPECT_EQ(arraycompare, true);
533 
534         std::vector<short> retshortArrayValue;
535         retshortArrayValue = WantOut_->GetShortArrayParam(std::string("short_arraykey"));
536         arraycompare = CompareArrayData<short>(retshortArrayValue, shortArrayValue);
537         EXPECT_EQ(arraycompare, true);
538 
539         std::vector<int> retintArrayValue;
540         retintArrayValue = WantOut_->GetIntArrayParam(std::string("int_arraykey"));
541         arraycompare = CompareArrayData<int>(retintArrayValue, intArrayValue);
542         EXPECT_EQ(arraycompare, true);
543 
544         std::vector<long> retlonArrayValue;
545         retlonArrayValue = WantOut_->GetLongArrayParam(std::string("long_arraykey"));
546         arraycompare = CompareArrayData<long>(retlonArrayValue, longArrayValue);
547         EXPECT_EQ(arraycompare, true);
548 
549         std::vector<float> retfloatArrayValue;
550         retfloatArrayValue = WantOut_->GetFloatArrayParam(std::string("float_arraykey"));
551         arraycompare = CompareArrayData<float>(retfloatArrayValue, floatArrayValue);
552         EXPECT_EQ(arraycompare, true);
553 
554         std::vector<double> retdoubleArrayValue;
555         retdoubleArrayValue = WantOut_->GetDoubleArrayParam(std::string("double_arraykey"));
556         arraycompare = CompareArrayData<double>(retdoubleArrayValue, doubleArrayValue);
557         EXPECT_EQ(arraycompare, true);
558 
559         std::vector<std::string> retstringArrayValue;
560         retstringArrayValue = WantOut_->GetStringArrayParam(std::string("string_arraykey"));
561         arraycompare = CompareArrayData<std::string>(retstringArrayValue, stringArrayValue);
562         EXPECT_EQ(arraycompare, true);
563 
564         GTEST_LOG_(INFO) << "AaFwk_Want_Parcelable_005 end";
565     }
566 }
567 
CompareWant(const std::shared_ptr<Want> & want1,const std::shared_ptr<Want> & want2) const568 void WantBaseTest::CompareWant(const std::shared_ptr<Want> &want1, const std::shared_ptr<Want> &want2) const
569 {
570     Operation opt1 = want1->GetOperation();
571     Operation opt2 = want2->GetOperation();
572     EXPECT_EQ(opt1.GetDeviceId(), opt2.GetDeviceId());
573     EXPECT_EQ(opt1.GetBundleName(), opt2.GetBundleName());
574     EXPECT_EQ(opt1.GetAbilityName(), opt2.GetAbilityName());
575 
576     EXPECT_EQ(want1->GetAction(), want2->GetAction());
577     EXPECT_EQ(want1->GetFlags(), want2->GetFlags());
578     EXPECT_EQ(want1->GetType(), want2->GetType());
579     EXPECT_EQ(want1->CountEntities(), want2->CountEntities());
580 
581     int count = want1->CountEntities();
582     std::vector<std::string> entities1 = want1->GetEntities();
583     std::vector<std::string> entities2 = want2->GetEntities();
584     for (int i = 0; i < count; i++) {
585         EXPECT_EQ(entities1.at(i), entities2.at(i));
586     }
587 
588     OHOS::AppExecFwk::ElementName element1 = want1->GetElement();
589     OHOS::AppExecFwk::ElementName element2 = want2->GetElement();
590     EXPECT_EQ(element1.GetURI(), element1.GetURI());
591 
592     std::set<std::string> key1;
593     std::set<std::string> key2;
594     key1 = want1->GetParams().KeySet();
595     key2 = want2->GetParams().KeySet();
596     EXPECT_EQ(key1.size(), key2.size());
597 
598     std::set<std::string>::iterator iter1 = key1.begin();
599     std::set<std::string>::iterator iter2 = key2.begin();
600     for (; (iter1 != key1.end() && iter2 != key2.end()); iter1++, iter2++) {
601         EXPECT_EQ(*iter1, *iter2);
602     }
603 }
604 
CompareWant(const std::shared_ptr<Want> & want1,const std::shared_ptr<Want> & want2,std::map<std::string,std::string> & keys) const605 bool WantBaseTest::CompareWant(const std::shared_ptr<Want> &want1, const std::shared_ptr<Want> &want2,
606     std::map<std::string, std::string> &keys) const
607 {
608     if (want1 == nullptr || want2 == nullptr) {
609         return false;
610     }
611     EXPECT_STREQ(want1->GetAction().c_str(), want2->GetAction().c_str());
612     EXPECT_EQ(want1->CountEntities(), want2->CountEntities());
613 
614     if (want1->CountEntities() != want2->CountEntities()) {
615         return false;
616     }
617 
618     int count = want1->CountEntities();
619 
620     std::vector<std::string> entities1 = want1->GetEntities();
621     std::vector<std::string> entities2 = want2->GetEntities();
622     for (int i = 0; i < count; i++) {
623         EXPECT_EQ(entities1.at(i), entities2.at(i));
624     }
625     EXPECT_EQ(want1->GetFlags(), want2->GetFlags());
626     EXPECT_EQ(want1->GetElement(), want2->GetElement());
627 
628     for (auto it = keys.begin(); it != keys.end(); it++) {
629         if (it->second == boolType) {
630             bool v1 = want1->GetBoolParam(it->first, false);
631             bool v2 = want2->GetBoolParam(it->first, false);
632             EXPECT_EQ(v1, v2);
633             EXPECT_EQ(v1, true);
634         } else if (it->second == boolArrayType) {
635             std::vector<bool> v1 = want1->GetBoolArrayParam(it->first);
636             std::vector<bool> v2 = want2->GetBoolArrayParam(it->first);
637             EXPECT_EQ(v1, v2);
638         } else if (it->second == byteType) {
639             byte v1 = want1->GetByteParam(it->first, 'j');
640             byte v2 = want2->GetByteParam(it->first, 'k');
641             EXPECT_EQ(v1, v2);
642         } else if (it->second == byteArrayType) {
643             std::vector<byte> v1 = want1->GetByteArrayParam(it->first);
644             std::vector<byte> v2 = want2->GetByteArrayParam(it->first);
645             EXPECT_EQ(v1, v2);
646         } else if (it->second == charType) {
647             zchar v1 = want1->GetCharParam(it->first, 0x01AB);
648             zchar v2 = want2->GetCharParam(it->first, 0x02CD);
649             EXPECT_EQ(v1, v2);
650         } else if (it->second == charArrayType) {
651             std::vector<zchar> v1 = want1->GetCharArrayParam(it->first);
652             std::vector<zchar> v2 = want2->GetCharArrayParam(it->first);
653             EXPECT_EQ(v1, v2);
654         } else if (it->second == shortType) {
655             short default1 = 123;
656             short default2 = 456;
657             short v1 = want1->GetShortParam(it->first, default1);
658             short v2 = want2->GetShortParam(it->first, default2);
659             EXPECT_EQ(v1, v2);
660         } else if (it->second == shortArrayType) {
661             std::vector<short> v1 = want1->GetShortArrayParam(it->first);
662             std::vector<short> v2 = want2->GetShortArrayParam(it->first);
663             EXPECT_EQ(v1, v2);
664         } else if (it->second == intType) {
665             int default1 = 1230000;
666             int default2 = 4560000;
667             int v1 = want1->GetIntParam(it->first, default1);
668             int v2 = want2->GetIntParam(it->first, default2);
669             EXPECT_EQ(v1, v2);
670         } else if (it->second == intArrayType) {
671             std::vector<int> v1 = want1->GetIntArrayParam(it->first);
672             std::vector<int> v2 = want2->GetIntArrayParam(it->first);
673             EXPECT_EQ(v1, v2);
674         } else if (it->second == longType) {
675             long default1 = 1e8;
676             long default2 = 2e8;
677             long v1 = want1->GetLongParam(it->first, default1);
678             long v2 = want2->GetLongParam(it->first, default2);
679             EXPECT_EQ(v1, v2);
680         } else if (it->second == longArrayType) {
681             std::vector<long> v1 = want1->GetLongArrayParam(it->first);
682             std::vector<long> v2 = want2->GetLongArrayParam(it->first);
683             EXPECT_EQ(v1, v2);
684         } else if (it->second == floatType) {
685             float default1 = 12.3;
686             float default2 = 45.6;
687             float v1 = want1->GetFloatParam(it->first, default1);
688             float v2 = want2->GetFloatParam(it->first, default2);
689             EXPECT_EQ(v1, v2);
690         } else if (it->second == floatArrayType) {
691             std::vector<float> v1 = want1->GetFloatArrayParam(it->first);
692             std::vector<float> v2 = want2->GetFloatArrayParam(it->first);
693             EXPECT_EQ(v1, v2);
694         } else if (it->second == doubleType) {
695             double default1 = 12.3;
696             double default2 = 45.6;
697             double v1 = want1->GetDoubleParam(it->first, default1);
698             double v2 = want2->GetDoubleParam(it->first, default2);
699             EXPECT_EQ(v1, v2);
700         } else if (it->second == doubleArrayType) {
701             std::vector<double> v1 = want1->GetDoubleArrayParam(it->first);
702             std::vector<double> v2 = want2->GetDoubleArrayParam(it->first);
703             EXPECT_EQ(v1, v2);
704         } else if (it->second == stringType) {
705             std::string v1 = want1->GetStringParam(it->first);
706             std::string v2 = want2->GetStringParam(it->first);
707             EXPECT_EQ(v1, v2);
708         } else if (it->second == stringArrayType) {
709             std::vector<std::string> v1 = want1->GetStringArrayParam(it->first);
710             std::vector<std::string> v2 = want2->GetStringArrayParam(it->first);
711             EXPECT_EQ(v1, v2);
712         }
713     }
714 
715     return true;
716 }
717 
SendParcelTest(const std::shared_ptr<Want> & want,std::map<std::string,std::string> & keys) const718 void WantBaseTest::SendParcelTest(const std::shared_ptr<Want> &want, std::map<std::string, std::string> &keys) const
719 {
720     size_t pos1;
721     size_t pos2;
722     Parcel data;
723     bool result = false;
724 
725     pos1 = data.GetWritePosition();
726     result = data.WriteParcelable(want.get());
727     pos2 = data.GetWritePosition();
728     EXPECT_EQ(result, true);
729     GTEST_LOG_(INFO) << "SendParcelTest: pos1: " << pos1 << ", pos2: " << pos2 << ", result: " << result;
730 
731     std::shared_ptr<Want> wantNew(data.ReadParcelable<Want>());
732     EXPECT_NE(wantNew, nullptr);
733 
734     if (wantNew != nullptr) {
735         result = CompareWant(want, wantNew, keys);
736         EXPECT_EQ(result, true);
737     }
738 }
739 
AddBoolParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const740 void WantBaseTest::AddBoolParams(
741     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
742 {
743     std::string key;
744     std::string boolKey = "boolKey";
745     std::string boolArrayKey = "boolArrayKey";
746     for (int i = 0; i < loop; i++) {
747         if (flag & FLAG_TEST_SINGLE) {
748             bool boolValue = true;
749             keys[boolKey + std::to_string(i)] = boolType;
750             want.SetParam(boolKey + std::to_string(i), boolValue);
751         }
752 
753         if (flag & FLAG_TEST_ARRAY) {
754             std::vector<bool> boolArrayValue = {true, false, true};
755             keys[key] = boolArrayType;
756             want.SetParam(key, boolArrayValue);
757         }
758     }
759 }
760 
AddByteParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const761 void WantBaseTest::AddByteParams(
762     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
763 {
764     std::string key;
765     std::string byteKey = "byteKey";
766     std::string byteArrayKey = "byteArrayKey";
767     for (int i = 0; i < loop; i++) {
768         if (flag & FLAG_TEST_SINGLE) {
769             byte byteValue = 'z';
770             key = byteKey + std::to_string(i);
771             keys[key] = byteType;
772             want.SetParam(key, byteValue);
773         }
774 
775         if (flag & FLAG_TEST_ARRAY) {
776             std::vector<byte> byteArrayValue = {'?', 'a', '\\'};
777             key = byteArrayKey + std::to_string(i);
778             keys[key] = byteArrayType;
779             want.SetParam(key, byteArrayValue);
780         }
781     }
782 }
783 
AddCharParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const784 void WantBaseTest::AddCharParams(
785     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
786 {
787     std::string key;
788     std::string charKey = "charKey";
789     std::string charArrayKey = "charArrayKey";
790     for (int i = 0; i < loop; i++) {
791         if (flag & FLAG_TEST_SINGLE) {
792             zchar charValue = U'h';
793             key = charKey + std::to_string(i);
794             keys[key] = charType;
795             want.SetParam(key, charValue);
796         }
797 
798         if (flag & FLAG_TEST_ARRAY) {
799             std::vector<zchar> charArrayValue = {U'e', U'l', U'l', U'o'};
800             key = charArrayKey + std::to_string(i);
801             keys[key] = charArrayType;
802             want.SetParam(key, charArrayValue);
803         }
804     }
805 }
806 
AddShortParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const807 void WantBaseTest::AddShortParams(
808     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
809 {
810     std::string key;
811     std::string shortKey = "shortKey";
812     std::string shortArrayKey = "shortArrayKey";
813     for (int i = 0; i < loop; i++) {
814         if (flag & FLAG_TEST_SINGLE) {
815             short shortValue = 1;
816             key = shortKey + std::to_string(i);
817             keys[key] = shortType;
818             want.SetParam(key, shortValue);
819         }
820 
821         if (flag & FLAG_TEST_ARRAY) {
822             std::vector<short> shortArrayValue = {-1, 0, 1};
823             key = shortArrayKey + std::to_string(i);
824             keys[key] = shortArrayType;
825             want.SetParam(key, shortArrayValue);
826         }
827     }
828 }
829 
AddIntParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const830 void WantBaseTest::AddIntParams(Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
831 {
832     std::string key;
833     std::string intKey = "intKey";
834     std::string intArrayKey = "intArrayKey";
835     for (int i = 0; i < loop; i++) {
836         if (flag & FLAG_TEST_SINGLE) {
837             int intValue = 10;
838             key = intKey + std::to_string(i);
839             keys[key] = intType;
840             want.SetParam(key, intValue);
841         }
842 
843         if (flag & FLAG_TEST_ARRAY) {
844             std::vector<int> intArrayValue = {-10, 0, 10};
845             key = intArrayKey + std::to_string(i);
846             keys[key] = intArrayType;
847             want.SetParam(key, intArrayValue);
848         }
849     }
850 }
851 
AddLongParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const852 void WantBaseTest::AddLongParams(
853     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
854 {
855     std::string key;
856     std::string longKey = "longKey";
857     std::string longArrayKey = "longArrayKey";
858     for (int i = 0; i < loop; i++) {
859         if (flag & FLAG_TEST_SINGLE) {
860             long longValue = 100L;
861             key = longKey + std::to_string(i);
862             keys[key] = longType;
863             want.SetParam(key, longValue);
864         }
865 
866         if (flag & FLAG_TEST_ARRAY) {
867             std::vector<long> longArrayValue = {-100, 0, 100};
868             key = longArrayKey + std::to_string(i);
869             keys[key] = longArrayType;
870             want.SetParam(key, longArrayValue);
871         }
872     }
873 }
874 
AddFloatParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const875 void WantBaseTest::AddFloatParams(
876     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
877 {
878     std::string key;
879     std::string floatKey = "floatKey";
880     std::string floatArrayKey = "floatArrayKey";
881     for (int i = 0; i < loop; i++) {
882         if (flag & FLAG_TEST_SINGLE) {
883             float floatValue = 100.1f;
884             key = floatKey + std::to_string(i);
885             keys[key] = floatType;
886             want.SetParam(key, floatValue);
887         }
888 
889         if (flag & FLAG_TEST_ARRAY) {
890             std::vector<float> floatArrayValue = {-100.1, 0.1, 100.1};
891             key = floatArrayKey + std::to_string(i);
892             keys[key] = floatArrayType;
893             want.SetParam(key, floatArrayValue);
894         }
895     }
896 }
897 
AddDoubleParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const898 void WantBaseTest::AddDoubleParams(
899     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
900 {
901     std::string key;
902     std::string doubleKey = "doubleKey";
903     std::string doubleArrayKey = "doubleArrayKey";
904     for (int i = 0; i < loop; i++) {
905         if (flag & FLAG_TEST_SINGLE) {
906             double doubleValue = 1000.1;
907             key = doubleKey + std::to_string(i);
908             keys[key] = doubleType;
909             want.SetParam(key, doubleValue);
910         }
911 
912         if (flag & FLAG_TEST_ARRAY) {
913             std::vector<double> doubleArrayValue = {-1000.1, 0.1, 1000.1};
914             key = doubleArrayKey + std::to_string(i);
915             keys[key] = doubleArrayType;
916             want.SetParam(key, doubleArrayValue);
917         }
918     }
919 }
920 
AddStringParams(Want & want,std::map<std::string,std::string> & keys,int loop,unsigned int flag) const921 void WantBaseTest::AddStringParams(
922     Want &want, std::map<std::string, std::string> &keys, int loop, unsigned int flag) const
923 {
924     std::string key;
925     std::string stringKey = "stringKey";
926     std::string stringArrayKey = "stringArrayKey";
927     for (int i = 0; i < loop; i++) {
928         if (flag & FLAG_TEST_SINGLE) {
929             string stringValue = "zzzz";
930             key = stringKey + std::to_string(i);
931             keys[key] = stringType;
932             want.SetParam(key, stringValue);
933         }
934 
935         if (flag & FLAG_TEST_ARRAY) {
936             std::vector<std::string> stringArrayValue = {"??", "aa", "\\\\"};
937             key = stringArrayKey + std::to_string(i);
938             keys[key] = stringArrayType;
939             want.SetParam(key, stringArrayValue);
940         }
941     }
942 }
943 
944 /**
945  * @tc.number: AaFwk_Want_Parcelable_0600
946  * @tc.name: parcelable
947  * @tc.desc: Verify parcelable.
948  */
949 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0600, Function | MediumTest | Level1)
950 {
951     std::string action = "want.action.test";
952     unsigned int flag = 0x789;
953     std::string entity = "want.entity.test";
954     OHOS::AppExecFwk::ElementName element("bundlename", "appname", "abilityname");
955 
956     std::shared_ptr<Want> want = std::make_shared<Want>();
957     if (want != nullptr) {
958         want->SetAction(action);
959         want->AddEntity(entity);
960         want->AddFlags(flag);
961         want->SetElement(element);
962 
963         std::map<std::string, std::string> keys;
964 
965         SendParcelTest(want, keys);
966     }
967 }
968 
969 /**
970  * @tc.number: AaFwk_Want_Parcelable_0700
971  * @tc.name: parcelable
972  * @tc.desc: Verify parcelable.
973  */
974 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0700, Function | MediumTest | Level1)
975 {
976     std::string action = "want.action.test";
977     unsigned int flag = 0x789;
978     std::string entity = "want.entity.test";
979     OHOS::AppExecFwk::ElementName element("bundlename", "appname", "abilityname");
980 
981     std::shared_ptr<Want> want = std::make_shared<Want>();
982     if (want != nullptr) {
983         want->SetAction(action);
984         want->AddEntity(entity);
985         want->AddFlags(flag);
986         want->SetElement(element);
987 
988         int loop = 1;
989         std::map<std::string, std::string> keys;
990 
991         AddByteParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
992         AddCharParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
993         AddShortParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
994         AddIntParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
995         AddLongParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
996         AddFloatParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
997         AddDoubleParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
998         AddStringParams(*(want.get()), keys, loop, FLAG_TEST_BOTH);
999 
1000         SendParcelTest(want, keys);
1001     }
1002 }
1003 
1004 /**
1005  * @tc.number: AaFwk_Want_Parcelable_0800
1006  * @tc.name: parcelable
1007  * @tc.desc: Verify parcelable.
1008  */
1009 HWTEST_F(WantBaseTest, AaFwk_Want_Parcelable_0800, Function | MediumTest | Level1)
1010 {
1011     std::string action = "want.action.test";
1012     unsigned int flag = 0x789;
1013     std::string entity = "want.entity.test";
1014     OHOS::AppExecFwk::ElementName element("bundlename", "appname", "abilityname");
1015 
1016     std::shared_ptr<Want> want = std::make_shared<Want>();
1017     if (want != nullptr) {
1018         want->SetAction(action);
1019         want->AddEntity(entity);
1020         want->AddFlags(flag);
1021         want->SetElement(element);
1022         std::map<std::string, std::string> keys;
1023 
1024         SendParcelTest(want, keys);
1025     }
1026 }
1027 
1028 /**
1029  * @tc.number: AaFwk_Want_FormatMimeType_0100
1030  * @tc.name: formatMimeType
1031  * @tc.desc: formats data of a specified MIME type.
1032  */
1033 HWTEST_F(WantBaseTest, AaFwk_Want_FormatMimeType_0100, Function | MediumTest | Level1)
1034 {
1035     std::string mimeType = "Application/Envoy";
1036     std::string mimeTypeResult = "application/envoy";
1037 
1038     EXPECT_EQ(mimeTypeResult, Want::FormatMimeType(mimeType));
1039 }
1040 
1041 /**
1042  * @tc.number: AaFwk_Want_FormatMimeType_0200
1043  * @tc.name: formatMimeType
1044  * @tc.desc: formats data of a specified MIME type.
1045  */
1046 HWTEST_F(WantBaseTest, AaFwk_Want_FormatMimeType_0200, Function | MediumTest | Level1)
1047 {
1048     std::string mimeType = "APPLICATION/ENVOY";
1049     std::string mimeTypeResult = "application/envoy";
1050 
1051     EXPECT_EQ(mimeTypeResult, Want::FormatMimeType(mimeType));
1052 }
1053 
1054 /**
1055  * @tc.number: AaFwk_Want_FormatMimeType_0300
1056  * @tc.name: formatMimeType
1057  * @tc.desc: formats data of a specified MIME type.
1058  */
1059 HWTEST_F(WantBaseTest, AaFwk_Want_FormatMimeType_0300, Function | MediumTest | Level1)
1060 {
1061     std::string mimeType = " Appl icati on/ Envoy ";
1062     std::string mimeTypeResult = "application/envoy";
1063 
1064     EXPECT_EQ(mimeTypeResult, Want::FormatMimeType(mimeType));
1065 }
1066 
1067 /**
1068  * @tc.number: AaFwk_Want_FormatMimeType_0400
1069  * @tc.name: formatMimeType
1070  * @tc.desc: formats data of a specified MIME type.
1071  */
1072 HWTEST_F(WantBaseTest, AaFwk_Want_FormatMimeType_0400, Function | MediumTest | Level1)
1073 {
1074     std::string mimeType = " Appl icati on/ Envoy ; yovnE ;no itaci lppA ";
1075     std::string mimeTypeResult = "application/envoy";
1076 
1077     EXPECT_EQ(mimeTypeResult, Want::FormatMimeType(mimeType));
1078 }
1079 
1080 /**
1081  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0100
1082  * @tc.name: ParseUri and ToUri
1083  * @tc.desc: Verify the function when Want is empty.
1084  */
1085 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0100, Function | MediumTest | Level1)
1086 {
1087     std::size_t pos = 0;
1088     std::size_t content = 0;
1089     std::size_t head = 0;
1090     Want wantOrigin;
1091 
1092     std::string uri = wantOrigin.ToUri();
1093 
1094     head = uri.find(WantBaseTest::URI_STRING_HEAD, pos);
1095     EXPECT_EQ(head, pos);
1096     if (head != std::string::npos) {
1097         pos += head + WantBaseTest::URI_STRING_HEAD.length() - 1;
1098     }
1099 
1100     content = uri.find(WantBaseTest::URI_STRING_END, pos);
1101     EXPECT_EQ(content, pos);
1102     if (content != std::string::npos) {
1103         pos += WantBaseTest::URI_STRING_END.length();
1104     }
1105 
1106     EXPECT_EQ(uri.length(), pos);
1107 
1108     Want *wantNew = Want::ParseUri(uri);
1109     EXPECT_NE(wantNew, nullptr);
1110 
1111     if (wantNew != nullptr) {
1112         EXPECT_EQ(wantNew->GetAction(), std::string(""));
1113         for (auto entity : wantNew->GetEntities()) {
1114             EXPECT_EQ(entity, std::string(""));
1115         }
1116         OHOS::AppExecFwk::ElementName element;
1117         EXPECT_EQ(wantNew->GetElement(), element);
1118         EXPECT_EQ(static_cast<int>(wantNew->GetFlags()), 0);
1119 
1120         delete wantNew;
1121     }
1122 }
1123 
1124 /**
1125  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0200
1126  * @tc.name: ParseUri and ToUri
1127  * @tc.desc: Verify the function when Want only has action/entity/flag/element.
1128  */
1129 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0200, Function | MediumTest | Level1)
1130 {
1131     std::string search;
1132 
1133     std::string action = Want::ACTION_PLAY;
1134     std::string entity = Want::ENTITY_VIDEO;
1135     unsigned int flag = 0x0f0f0f0f;
1136     std::string flagStr = "0x0f0f0f0f";
1137     std::string device = "device1";
1138     std::string bundle = "bundle1";
1139     std::string ability = "ability1";
1140     OHOS::AppExecFwk::ElementName element(device, bundle, ability);
1141 
1142     Want wantOrigin;
1143     wantOrigin.SetAction(action);
1144     wantOrigin.AddEntity(entity);
1145     wantOrigin.AddFlags(flag);
1146     wantOrigin.SetElement(element);
1147 
1148     std::string uri = wantOrigin.ToUri();
1149     Want *wantNew = Want::ParseUri(uri);
1150     EXPECT_NE(wantNew, nullptr);
1151 
1152     if (wantNew != nullptr) {
1153         EXPECT_EQ(wantNew->GetAction(), action);
1154         for (auto entityItem : wantNew->GetEntities()) {
1155             EXPECT_EQ(entityItem, entity);
1156         }
1157         EXPECT_EQ(wantNew->GetElement().GetDeviceID(), device);
1158         EXPECT_EQ(wantNew->GetElement().GetBundleName(), bundle);
1159         EXPECT_EQ(wantNew->GetElement().GetAbilityName(), ability);
1160         EXPECT_EQ(wantNew->GetFlags(), flag);
1161 
1162         delete wantNew;
1163         wantNew = nullptr;
1164     }
1165 }
1166 
1167 /**
1168  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0300
1169  * @tc.name: ParseUri and ToUri
1170  * @tc.desc:  Verify the function when Want only has parameter and the parameter
1171  *            has only 1 float type element.
1172  */
1173 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0300, Function | MediumTest | Level1)
1174 {
1175     std::string search;
1176     std::string substring;
1177     std::size_t pos = 0;
1178     std::size_t length = 0;
1179     std::size_t result = 0;
1180     std::size_t delims = 0;
1181     std::size_t head = 0;
1182     Want wantOrigin;
1183     std::string keyFloat = "keyFloat";
1184     float valueFloatOrigin = 123.4;
1185     wantOrigin.SetParam(keyFloat, valueFloatOrigin);
1186 
1187     std::string uri = wantOrigin.ToUri();
1188 
1189     search = WantBaseTest::URI_STRING_HEAD;
1190     result = uri.find(search, pos);
1191     EXPECT_EQ(result, pos);
1192     if (result != std::string::npos) {
1193         head = result + search.length();
1194     }
1195     length += head;
1196 
1197     search = Float::SIGNATURE + std::string(".") + keyFloat + std::string("=");
1198     result = uri.find(search);
1199     EXPECT_NE(result, std::string::npos);
1200     EXPECT_GE(result, head);
1201     length += search.length();
1202     if (result != std::string::npos) {
1203         pos = result + search.length();
1204         delims = uri.find(";", pos);
1205         if (delims != std::string::npos) {
1206             substring = uri.substr(pos, delims - pos);
1207             float valueFloatNew = Float::Unbox(Float::Parse(substring));
1208             EXPECT_EQ(valueFloatNew, valueFloatOrigin);
1209             length += substring.length() + 1;
1210         }
1211     }
1212 
1213     search = WantBaseTest::URI_STRING_END;
1214     result = uri.find(search);
1215     EXPECT_NE(result, std::string::npos);
1216     EXPECT_GE(result, head);
1217     if (result != std::string::npos) {
1218         length += search.length() - 1;
1219     }
1220 
1221     EXPECT_EQ(uri.length(), length);
1222 
1223     Want *wantNew = Want::ParseUri(uri);
1224     EXPECT_NE(wantNew, nullptr);
1225 
1226     if (wantNew != nullptr) {
1227         float floatNew = wantNew->GetFloatParam(keyFloat, 0.1);
1228         float floatOld = wantOrigin.GetFloatParam(keyFloat, 1.1);
1229         EXPECT_EQ(floatNew, floatOld);
1230         delete wantNew;
1231     }
1232 }
1233 
1234 /**
1235  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0400
1236  * @tc.name: ParseUri and ToUri
1237  * @tc.desc: Verify the function when Want only has parameter and the parameter
1238  *           has only one float and one string type element.
1239  */
1240 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0400, Function | MediumTest | Level1)
1241 {
1242     std::string search;
1243     std::string substring;
1244     std::size_t pos = 0;
1245     std::size_t length = 0;
1246     std::size_t result = 0;
1247     std::size_t delims = 0;
1248     std::size_t head = 0;
1249     Want wantOrigin;
1250     std::string keyFloat = "keyFloat";
1251     std::string keyString = "keyString";
1252     float valueFloatOrigin = 123.4;
1253     std::string valueStringOrigin = "abcd";
1254     wantOrigin.SetParam(keyFloat, valueFloatOrigin);
1255     wantOrigin.SetParam(keyString, valueStringOrigin);
1256 
1257     std::string uri = wantOrigin.ToUri();
1258 
1259     search = WantBaseTest::URI_STRING_HEAD;
1260     result = uri.find(search, pos);
1261     EXPECT_NE(result, std::string::npos);
1262     EXPECT_EQ(result, pos);
1263     if (result != std::string::npos) {
1264         head = result + search.length();
1265     }
1266     length += head;
1267 
1268     search = Float::SIGNATURE + std::string(".") + keyFloat + std::string("=");
1269     result = uri.find(search);
1270     EXPECT_NE(result, std::string::npos);
1271     EXPECT_GE(result, head);
1272     length += search.length();
1273     if (result != std::string::npos) {
1274         pos = result + search.length();
1275         delims = uri.find(";", pos);
1276         if (delims != std::string::npos) {
1277             substring = uri.substr(pos, delims - pos);
1278             float valueFloatNew = Float::Unbox(Float::Parse(substring));
1279             EXPECT_EQ(valueFloatNew, valueFloatOrigin);
1280             length += substring.length() + 1;
1281         }
1282     }
1283 
1284     search = String::SIGNATURE + std::string(".") + keyString + std::string("=");
1285     result = uri.find(search);
1286     EXPECT_NE(result, std::string::npos);
1287     EXPECT_GE(result, head);
1288     length += search.length();
1289     if (result != std::string::npos) {
1290         pos = result + search.length();
1291         delims = uri.find(";", result);
1292         if (delims != std::string::npos) {
1293             std::string substring = uri.substr(pos, delims - pos);
1294             std::string valueStringNew = String::Unbox(String::Parse(substring));
1295             EXPECT_EQ(valueStringNew, valueStringOrigin);
1296             length += substring.length() + 1;
1297         }
1298     }
1299 
1300     search = WantBaseTest::URI_STRING_END;
1301     result = uri.find(search);
1302     EXPECT_NE(result, std::string::npos);
1303     EXPECT_GE(result, head);
1304     if (result != std::string::npos) {
1305         length += search.length() - 1;
1306     }
1307 
1308     EXPECT_EQ(uri.length(), length);
1309 
1310     Want *wantNew = Want::ParseUri(uri);
1311     EXPECT_NE(wantNew, nullptr);
1312 
1313     if (wantNew != nullptr) {
1314         float floatNew = wantNew->GetFloatParam(keyFloat, 0);
1315         float floatOld = wantOrigin.GetFloatParam(keyFloat, 1);
1316         EXPECT_EQ(floatNew, floatOld);
1317 
1318         std::string stringNew = wantNew->GetStringParam(keyString);
1319         std::string stringOld = wantOrigin.GetStringParam(keyString);
1320         EXPECT_EQ(stringNew, stringOld);
1321 
1322         delete wantNew;
1323     }
1324 }
1325 
1326 /**
1327  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0500
1328  * @tc.name: ParseUri and ToUri
1329  * @tc.desc: Verify the function when Want only has parameter and the parameter
1330  *           has only one float array type element.
1331  */
1332 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0500, Function | MediumTest | Level1)
1333 {
1334     std::string search;
1335     std::string substring;
1336     std::size_t pos = 0;
1337     std::size_t length = 0;
1338     std::size_t result = 0;
1339     std::size_t delims = 0;
1340     std::size_t head = 0;
1341     Want wantOrigin;
1342     std::string keyFloatArray = "keyFloatArray";
1343     std::vector<float> valueFloatArrayOrigin = {1.1, 2.1, 3.1};
1344     wantOrigin.SetParam(keyFloatArray, valueFloatArrayOrigin);
1345 
1346     std::string uri = wantOrigin.ToUri();
1347 
1348     search = WantBaseTest::URI_STRING_HEAD;
1349     result = uri.find(search, pos);
1350     EXPECT_NE(result, std::string::npos);
1351     EXPECT_EQ(result, pos);
1352     if (result != std::string::npos) {
1353         head = result + search.length();
1354     }
1355     length += head;
1356 
1357     search = Array::SIGNATURE + std::string(".") + keyFloatArray + std::string("=");
1358     result = uri.find(search);
1359     EXPECT_NE(result, std::string::npos);
1360     EXPECT_GE(result, head);
1361     length += search.length();
1362     if (result != std::string::npos) {
1363         pos = result + search.length();
1364         delims = uri.find(";", result);
1365         if (delims != std::string::npos) {
1366             std::string substring = uri.substr(pos, delims - pos);
1367             sptr<IArray> array = Array::Parse(substring);
1368             std::vector<float> valueFloatArrayNew;
1369             auto func = [&valueFloatArrayNew](
__anond3d612830102( IInterface *object) 1370                             IInterface *object) { valueFloatArrayNew.push_back(Float::Unbox(IFloat::Query(object))); };
1371             Array::ForEach(array, func);
1372             EXPECT_EQ(valueFloatArrayNew, valueFloatArrayOrigin);
1373             length += substring.length() + 1;
1374         }
1375     }
1376 
1377     search = WantBaseTest::URI_STRING_END;
1378     result = uri.find(search);
1379     EXPECT_NE(result, std::string::npos);
1380     EXPECT_GE(result, head);
1381     if (result != std::string::npos) {
1382         length += search.length() - 1;
1383     }
1384 
1385     EXPECT_EQ(uri.length(), length);
1386 
1387     Want *wantNew = Want::ParseUri(uri);
1388     EXPECT_NE(wantNew, nullptr);
1389 
1390     if (wantNew != nullptr) {
1391         std::vector<float> arrayNew = wantNew->GetFloatArrayParam(keyFloatArray);
1392         std::vector<float> arrayOld = wantOrigin.GetFloatArrayParam(keyFloatArray);
1393         EXPECT_EQ(arrayNew, arrayOld);
1394         delete wantNew;
1395     }
1396 }
1397 
1398 /**
1399  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0600
1400  * @tc.name: ParseUri and ToUri
1401  * @tc.desc: Verify the function when Want only has parameter and the parameter
1402  *           has only one int array and one string array type element
1403  */
1404 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0600, Function | MediumTest | Level1)
1405 {
1406     std::string search;
1407     std::string substring;
1408     std::size_t pos = 0;
1409     std::size_t length = 0;
1410     std::size_t result = 0;
1411     std::size_t delims = 0;
1412     std::size_t head = 0;
1413     Want wantOrigin;
1414     std::string keyFloatArray = "keyFloatArray";
1415     std::string keyStringArray = "keyStringArray";
1416     std::vector<float> valueFloatArrayOrigin = {1.1, 2.1, 3.1};
1417     std::vector<std::string> valueStringArrayOrigin = {"aa", "bb", "cc"};
1418     wantOrigin.SetParam(keyFloatArray, valueFloatArrayOrigin);
1419     wantOrigin.SetParam(keyStringArray, valueStringArrayOrigin);
1420 
1421     std::string uri = wantOrigin.ToUri();
1422 
1423     search = WantBaseTest::URI_STRING_HEAD;
1424     result = uri.find(search, pos);
1425     EXPECT_NE(result, std::string::npos);
1426     EXPECT_EQ(result, pos);
1427     if (result != std::string::npos) {
1428         head = result + search.length();
1429     }
1430     length += head;
1431 
1432     search = Array::SIGNATURE + std::string(".") + keyFloatArray + std::string("=");
1433     result = uri.find(search);
1434     EXPECT_NE(result, std::string::npos);
1435     EXPECT_GE(result, head);
1436     length += search.length();
1437     if (result != std::string::npos) {
1438         pos = result + search.length();
1439         delims = uri.find(";", result);
1440         if (delims != std::string::npos) {
1441             std::string substring = uri.substr(pos, delims - pos);
1442             sptr<IArray> array = Array::Parse(substring);
1443             std::vector<float> valueFloatArrayNew;
1444             auto func = [&valueFloatArrayNew](
__anond3d612830202( IInterface *object) 1445                             IInterface *object) { valueFloatArrayNew.push_back(Float::Unbox(IFloat::Query(object))); };
1446             Array::ForEach(array, func);
1447             EXPECT_EQ(valueFloatArrayNew, valueFloatArrayOrigin);
1448             length += substring.length() + 1;
1449         }
1450     }
1451 
1452     search = Array::SIGNATURE + std::string(".") + keyStringArray + std::string("=");
1453     result = uri.find(search);
1454     EXPECT_NE(result, std::string::npos);
1455     EXPECT_GE(result, head);
1456     length += search.length();
1457     if (result != std::string::npos) {
1458         pos = result + search.length();
1459         delims = uri.find(";", result);
1460         if (delims != std::string::npos) {
1461             std::string substring = uri.substr(pos, delims - pos);
1462             sptr<IArray> array = Array::Parse(substring);
1463             std::vector<std::string> valueStringArrayNew;
__anond3d612830302(IInterface *object) 1464             auto func = [&valueStringArrayNew](IInterface *object) {
1465                 valueStringArrayNew.push_back(String::Unbox(IString::Query(object)));
1466             };
1467             Array::ForEach(array, func);
1468             EXPECT_EQ(valueStringArrayNew, valueStringArrayOrigin);
1469             length += substring.length() + 1;
1470         }
1471     }
1472 
1473     search = WantBaseTest::URI_STRING_END;
1474     result = uri.find(search);
1475     EXPECT_NE(result, std::string::npos);
1476     EXPECT_GE(result, head);
1477     if (result != std::string::npos) {
1478         length += search.length() - 1;
1479     }
1480 
1481     EXPECT_EQ(uri.length(), length);
1482 
1483     Want *wantNew = Want::ParseUri(uri);
1484     EXPECT_NE(wantNew, nullptr);
1485 
1486     if (wantNew != nullptr) {
1487         std::vector<float> arrayFloatNew = wantNew->GetFloatArrayParam(keyFloatArray);
1488         std::vector<float> arrayFloatOld = wantOrigin.GetFloatArrayParam(keyFloatArray);
1489         EXPECT_EQ(arrayFloatNew, arrayFloatOld);
1490 
1491         std::vector<std::string> arrayStringNew = wantNew->GetStringArrayParam(keyStringArray);
1492         std::vector<std::string> arrayStringOld = wantOrigin.GetStringArrayParam(keyStringArray);
1493         EXPECT_EQ(arrayStringNew, arrayStringOld);
1494 
1495         delete wantNew;
1496     }
1497 }
1498 
1499 /**
1500  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0700
1501  * @tc.name: ParseUri and ToUri
1502  * @tc.desc: Verify the function when the length of input string is 0.
1503  */
1504 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0700, Function | MediumTest | Level1)
1505 {
1506     std::string uri;
1507     EXPECT_EQ(static_cast<int>(uri.length()), 0);
1508 
1509     Want *want = Want::ParseUri(uri);
1510     EXPECT_EQ(want, nullptr);
1511 
1512     if (want != nullptr) {
1513         delete want;
1514     }
1515 }
1516 
1517 /**
1518  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0800
1519  * @tc.name: ParseUri and ToUri
1520  * @tc.desc: Verify the function when the action etc. are empty.
1521  */
1522 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0800, Function | MediumTest | Level1)
1523 {
1524     std::string empty;
1525     std::string uri = "#Intent;action=;entity=;device=;bundle=;ability=;flag=;end";
1526     EXPECT_NE(static_cast<int>(uri.length()), 0);
1527 
1528     Want *want = Want::ParseUri(uri);
1529     EXPECT_NE(want, nullptr);
1530 
1531     if (want != nullptr) {
1532         EXPECT_EQ(want->GetAction(), empty);
1533         for (auto entityItem : want->GetEntities()) {
1534             EXPECT_EQ(entityItem, empty);
1535         }
1536         EXPECT_EQ(want->GetFlags(), (unsigned int)0);
1537         OHOS::AppExecFwk::ElementName element;
1538         EXPECT_EQ(want->GetElement(), element);
1539         EXPECT_EQ(want->HasParameter(empty), false);
1540         delete want;
1541     }
1542 }
1543 
1544 /**
1545  * @tc.number:  AaFwk_Want_ParseUri_ToUri_0900
1546  * @tc.name: ParseUri and ToUri
1547  * @tc.desc: Verify the function when flag is not number.
1548  */
1549 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_0900, Function | MediumTest | Level1)
1550 {
1551     std::string empty;
1552     std::string uri = "#Intent;action=want.action.VIEW;flag=\"123\";end";
1553     EXPECT_NE(static_cast<int>(uri.length()), 0);
1554 
1555     Want *want = Want::ParseUri(uri);
1556     EXPECT_EQ(want, nullptr);
1557     if (want != nullptr) {
1558         delete want;
1559         want = nullptr;
1560     }
1561 }
1562 
1563 /**
1564  * @tc.number:  AaFwk_Want_ParseUri_ToUri_1000
1565  * @tc.name: ParseUri and ToUri
1566  * @tc.desc: Verify the function when head is not "#Intent".
1567  */
1568 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_1000, Function | MediumTest | Level1)
1569 {
1570     std::string empty;
1571     std::string uri = "action=want.action.VIEW;end";
1572     EXPECT_NE(static_cast<int>(uri.length()), 0);
1573 
1574     Want *want = Want::ParseUri(uri);
1575     EXPECT_EQ(want, nullptr);
1576     if (want != nullptr) {
1577         delete want;
1578         want = nullptr;
1579     }
1580 }
1581 
1582 /**
1583  * @tc.number:  AaFwk_Want_ParseUri_ToUri_1100
1584  * @tc.name: ParseUri and ToUri
1585  * @tc.desc: Verify the function when flag is empty.
1586  */
1587 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_1100, Function | MediumTest | Level1)
1588 {
1589     std::string empty;
1590     std::string uri = "#Intent;flag=;end";
1591     EXPECT_NE(static_cast<int>(uri.length()), 0);
1592 
1593     Want *want = Want::ParseUri(uri);
1594     EXPECT_NE(want, nullptr);
1595 
1596     if (want != nullptr) {
1597         EXPECT_EQ(want->GetFlags(), static_cast<unsigned int>(0));
1598         delete want;
1599     }
1600 }
1601 
1602 /**
1603  * @tc.number:  AaFwk_Want_ParseUri_ToUri_1200
1604  * @tc.name: ParseUri and ToUri
1605  * @tc.desc: Verify the function when x is capital.
1606  */
1607 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_1200, Function | MediumTest | Level1)
1608 {
1609     std::string empty;
1610     unsigned int flag = 0X12345678;
1611     std::string uri = "#Intent;flag=0X12345678;end";
1612     EXPECT_NE(static_cast<int>(uri.length()), 0);
1613 
1614     Want *want = Want::ParseUri(uri);
1615     EXPECT_NE(want, nullptr);
1616 
1617     if (want != nullptr) {
1618         EXPECT_EQ(want->GetFlags(), flag);
1619         delete want;
1620     }
1621 }
1622 
1623 /**
1624  * @tc.number:  AaFwk_Want_ParseUri_ToUri_1300
1625  * @tc.name: ParseUri and ToUri
1626  * @tc.desc: Verify the function when special character.
1627  */
1628 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_1300, Function | MediumTest | Level1)
1629 {
1630     std::string action = "\\";
1631     std::string entity = "../../../jj/j=075/./.;;/07507399/\\\\;;--==.com.\a\b\tfoobar.vide\073\\075";
1632     unsigned int flag = 0x0f0f0f0f;
1633     std::string flagStr = "0x0f0f0f0f";
1634     std::string key = "\\kkk=.=;";
1635     std::string value = "==\\\\\\.;\\;\\;\\=\\\073075\\\\075073";
1636 
1637     Want wantOrigin;
1638     wantOrigin.SetAction(action);
1639     wantOrigin.AddEntity(entity);
1640     wantOrigin.AddFlags(flag);
1641     wantOrigin.SetParam(key, value);
1642 
1643     std::string uri = wantOrigin.ToUri();
1644 
1645     Want *wantNew = Want::ParseUri(uri);
1646     EXPECT_NE(wantNew, nullptr);
1647 
1648     if (wantNew != nullptr) {
1649         EXPECT_STREQ(wantNew->GetAction().c_str(), action.c_str());
1650         for (auto entityItem : wantNew->GetEntities()) {
1651             EXPECT_EQ(entityItem, entity);
1652         }
1653         EXPECT_EQ(wantNew->GetFlags(), flag);
1654         EXPECT_EQ(wantNew->GetStringParam(key), value);
1655 
1656         delete wantNew;
1657         wantNew = nullptr;
1658     }
1659 }
1660 
1661 /**
1662  * @tc.number:  AaFwk_Want_ParseUri_ToUri_1400
1663  * @tc.name: ParseUri and ToUri
1664  * @tc.desc: Verify the function when no '=' or only has a '='.
1665  */
1666 HWTEST_F(WantBaseTest, AaFwk_Want_ParseUri_ToUri_1400, Function | MediumTest | Level1)
1667 {
1668     std::string uri = "#Intent;action;end";
1669     Want *want = Want::ParseUri(uri);
1670     EXPECT_EQ(want, nullptr);
1671     if (want != nullptr) {
1672         delete want;
1673         want = nullptr;
1674     }
1675 
1676     uri = "#Intent;entity;end";
1677     want = Want::ParseUri(uri);
1678     EXPECT_EQ(want, nullptr);
1679     if (want != nullptr) {
1680         delete want;
1681         want = nullptr;
1682     }
1683 
1684     uri = "#Intent;device;end";
1685     want = Want::ParseUri(uri);
1686     EXPECT_EQ(want, nullptr);
1687     if (want != nullptr) {
1688         delete want;
1689         want = nullptr;
1690     }
1691 
1692     uri = "#Intent;bundle;end";
1693     want = Want::ParseUri(uri);
1694     EXPECT_EQ(want, nullptr);
1695     if (want != nullptr) {
1696         delete want;
1697         want = nullptr;
1698     }
1699 
1700     uri = "#Intent;ability;end";
1701     want = Want::ParseUri(uri);
1702     EXPECT_EQ(want, nullptr);
1703     if (want != nullptr) {
1704         delete want;
1705         want = nullptr;
1706     }
1707 
1708     uri = "#Intent;flag;end";
1709     want = Want::ParseUri(uri);
1710     EXPECT_EQ(want, nullptr);
1711     if (want != nullptr) {
1712         delete want;
1713         want = nullptr;
1714     }
1715 
1716     uri = "#Intent;param;end";
1717     want = Want::ParseUri(uri);
1718     EXPECT_EQ(want, nullptr);
1719     if (want != nullptr) {
1720         delete want;
1721         want = nullptr;
1722     }
1723 
1724     uri = "#Intent;=;end";
1725     want = Want::ParseUri(uri);
1726     EXPECT_NE(want, nullptr);
1727     if (want != nullptr) {
1728         delete want;
1729         want = nullptr;
1730     }
1731 
1732     uri = "#Intent;abc=;end";
1733     want = Want::ParseUri(uri);
1734     EXPECT_NE(want, nullptr);
1735     if (want != nullptr) {
1736         delete want;
1737         want = nullptr;
1738     }
1739 
1740     uri = "#Intent;=abc;end";
1741     want = Want::ParseUri(uri);
1742     EXPECT_NE(want, nullptr);
1743     if (want != nullptr) {
1744         delete want;
1745         want = nullptr;
1746     }
1747 
1748     uri = "#Intent;xxxx=yyy;end";
1749     want = Want::ParseUri(uri);
1750     EXPECT_NE(want, nullptr);
1751     if (want != nullptr) {
1752         delete want;
1753         want = nullptr;
1754     }
1755 
1756     uri = "#Intent;;;;;;end";
1757     want = Want::ParseUri(uri);
1758     EXPECT_NE(want, nullptr);
1759     if (want != nullptr) {
1760         delete want;
1761         want = nullptr;
1762     }
1763 }
1764 
1765 /**
1766  * @tc.number:  AaFwk_Want_Flags_0100
1767  * @tc.name: SetFlags/AddFlags/GetFlags/RemoveFlags
1768  * @tc.desc: Verify SetFlags/AddFlags/GetFlags/RemoveFlags.
1769  */
1770 HWTEST_F(WantBaseTest, AaFwk_Want_Flags_0100, Function | MediumTest | Level1)
1771 {
1772     int flags = 3;
1773     int returnsflags;
1774     int description = 8;
1775 
1776     want_->SetFlags(description);
1777     want_->AddFlags(flags);
1778     returnsflags = want_->GetFlags();
1779     EXPECT_EQ(11, returnsflags);
1780 
1781     want_->RemoveFlags(flags);
1782     returnsflags = want_->GetFlags();
1783     EXPECT_EQ(description, returnsflags);
1784 }
1785 
1786 /**
1787  * @tc.number:  AaFwk_Want_MakeMainAbility_0100
1788  * @tc.name: MakeMainAbility
1789  * @tc.desc: Verify MakeMainAbility.
1790  */
1791 HWTEST_F(WantBaseTest, AaFwk_Want_MakeMainAbility_0100, Function | MediumTest | Level1)
1792 {
1793     ElementName elementName;
1794 
1795     std::string action("action.system.home");
1796     std::string entity("entity.system.home");
1797 
1798     Want *wantNew = want_->MakeMainAbility(elementName);
1799     if (wantNew != nullptr) {
1800         std::vector<std::string> entities = wantNew->GetEntities();
1801 
1802         EXPECT_EQ((size_t)1, entities.size());
1803         if (entities.size() > 0) {
1804             EXPECT_EQ(entity, entities.at(0));
1805         }
1806         EXPECT_EQ(action, wantNew->GetAction());
1807         EXPECT_EQ(elementName, wantNew->GetElement());
1808 
1809         delete wantNew;
1810         wantNew = nullptr;
1811     }
1812 }
1813 
1814 /**
1815  * @tc.number:  AaFwk_Want_ClearWant_0100
1816  * @tc.name: ClearWant
1817  * @tc.desc: Verify ClearWant.
1818  */
1819 HWTEST_F(WantBaseTest, AaFwk_Want_ClearWant_0100, Function | MediumTest | Level1)
1820 {
1821     Want want;
1822     ElementName elementName;
1823     std::string empty = "";
1824     want_->ClearWant(&want);
1825 
1826     EXPECT_EQ((uint)0, want_->GetFlags());
1827     EXPECT_EQ(empty, want_->GetType());
1828     EXPECT_EQ(empty, want_->GetAction());
1829     EXPECT_EQ(elementName, want_->GetElement());
1830     EXPECT_EQ((size_t)0, want_->GetEntities().size());
1831     EXPECT_EQ(0, want_->CountEntities());
1832 }
1833 
1834 /**
1835  * @tc.number:  AaFwk_Want_replaceParams_0100
1836  * @tc.name: replaceParams(wantParams)
1837  * @tc.desc: Verify the function when the input string is empty.
1838  */
1839 HWTEST_F(WantBaseTest, AaFwk_Want_replaceParams_0100, Function | MediumTest | Level1)
1840 {
1841     WantParams wantParams;
1842     std::string keyStr = "123";
1843     std::string valueStr = "123";
1844     wantParams.SetParam(keyStr, String::Box(valueStr));
1845     want_->ReplaceParams(wantParams);
1846 
1847     EXPECT_EQ(valueStr, String::Unbox(IString::Query(want_->GetParams().GetParam(keyStr))));
1848 }
1849 
1850 /**
1851  * @tc.number:  AaFwk_Want_setElement_0100
1852  * @tc.name:setElement / setElementName
1853  * @tc.desc: Verify the function when the input string is empty.
1854  */
1855 HWTEST_F(WantBaseTest, AaFwk_Want_setElement_0100, Function | MediumTest | Level1)
1856 {
1857     std::string valueStr1 = "xxxxx";
1858     std::string valueStr2 = "uaid";
1859     std::string valueStr3 = "uaygfi";
1860 
1861     OHOS::AppExecFwk::ElementName elementname1;
1862     OHOS::AppExecFwk::ElementName elementname2;
1863     OHOS::AppExecFwk::ElementName elementname3;
1864     ElementName elementname4;
1865     elementname1.SetAbilityName(valueStr1);
1866     elementname2.SetDeviceID(valueStr2);
1867     elementname3.SetBundleName(valueStr3);
1868     want_->SetElement(elementname1);
1869     EXPECT_EQ(valueStr1, want_->GetElement().GetAbilityName());
1870 
1871     want_->SetElement(elementname2);
1872     EXPECT_EQ(valueStr2, want_->GetElement().GetDeviceID());
1873 
1874     want_->SetElement(elementname3);
1875     EXPECT_EQ(valueStr3, want_->GetElement().GetBundleName());
1876 
1877     want_->SetElementName(valueStr3, valueStr1);
1878     EXPECT_EQ(valueStr1, want_->GetElement().GetAbilityName());
1879     EXPECT_EQ(valueStr3, want_->GetElement().GetBundleName());
1880 
1881     want_->SetElementName(valueStr2, valueStr3, valueStr1);
1882     EXPECT_EQ(valueStr1, want_->GetElement().GetAbilityName());
1883     EXPECT_EQ(valueStr2, want_->GetElement().GetDeviceID());
1884     EXPECT_EQ(valueStr3, want_->GetElement().GetBundleName());
1885 }
1886 
1887 /**
1888  * @tc.number:  AaFwk_Want_Action_0200
1889  * @tc.name:SetAction / GetAction
1890  * @tc.desc: Verify the function when the input string is empty.
1891  */
1892 HWTEST_F(WantBaseTest, AaFwk_Want_Action_0200, Function | MediumTest | Level1)
1893 {
1894     std::string setValue;
1895     want_->SetAction(setValue);
1896     EXPECT_EQ(setValue, want_->GetAction());
1897 }
1898 
1899 /**
1900  * @tc.number:  AaFwk_Want_Action_0300
1901  * @tc.name:SetAction / GetAction
1902  * @tc.desc: Verify the function when the input string contains special characters.
1903  */
1904 HWTEST_F(WantBaseTest, AaFwk_Want_Action_0300, Function | MediumTest | Level1)
1905 {
1906     std::string setValue("action.system.com");
1907     want_->SetAction(setValue);
1908     EXPECT_STREQ(setValue.c_str(), want_->GetAction().c_str());
1909 }
1910 
1911 using testByteType = std::tuple<std::string, std::string, byte, byte, byte>;
1912 class WantParametersBoolArrayTest : public testing::TestWithParam<testByteType> {
1913 public:
WantParametersBoolArrayTest()1914     WantParametersBoolArrayTest()
1915     {
1916         want_ = nullptr;
1917     }
~WantParametersBoolArrayTest()1918     ~WantParametersBoolArrayTest()
1919     {
1920         want_ = nullptr;
1921     }
1922     static void SetUpTestCase(void);
1923     static void TearDownTestCase(void);
1924     void SetUp();
1925     void TearDown();
1926     std::shared_ptr<Want> want_;
1927 };
1928 
SetUpTestCase(void)1929 void WantParametersBoolArrayTest::SetUpTestCase(void)
1930 {}
1931 
TearDownTestCase(void)1932 void WantParametersBoolArrayTest::TearDownTestCase(void)
1933 {}
1934 
SetUp(void)1935 void WantParametersBoolArrayTest::SetUp(void)
1936 {
1937     want_ = std::make_shared<Want>();
1938 }
1939 
TearDown(void)1940 void WantParametersBoolArrayTest::TearDown(void)
1941 {}
1942 
1943 /**
1944  * @tc.number:  AaFwk_Want_BoolArray_0100
1945  * @tc.name:SetBoolArrayParam/GetBoolArrayParam
1946  * @tc.desc: Verify when parameter change.
1947  */
1948 HWTEST_P(WantParametersBoolArrayTest, AaFwk_Want_BoolArray_0100, Function | MediumTest | Level1)
1949 {
1950     std::string setKey = std::get<0>(GetParam());
1951     std::string getKey = std::get<1>(GetParam());
1952     byte setValue = std::get<2>(GetParam());
1953     byte defaultValue = std::get<3>(GetParam());
1954     byte result = std::get<4>(GetParam());
1955     want_->SetParam(setKey, setValue);
1956     EXPECT_EQ(result, want_->GetByteParam(getKey, defaultValue));
1957 }
1958 
1959 INSTANTIATE_TEST_CASE_P(WantParametersBoolArrayTestCaseP, WantParametersBoolArrayTest,
1960     testing::Values(testByteType("", "aa", '#', 'U', 'U'), testByteType("", "", 'N', 'K', 'N'),
1961         testByteType("1*中_aR", "aa", 'a', '%', '%'), testByteType("1*中_aR", "1*中_aR", 'a', 'z', 'a')));
1962 
1963 using testBoolArrayType = std::tuple<std::string, std::string, std::vector<bool>, std::vector<bool>, std::vector<bool>>;
1964 class WantBoolArrayParamTest : public testing::TestWithParam<testBoolArrayType> {
1965 public:
WantBoolArrayParamTest()1966     WantBoolArrayParamTest()
1967     {
1968         want_ = nullptr;
1969     }
~WantBoolArrayParamTest()1970     ~WantBoolArrayParamTest()
1971     {
1972         want_ = nullptr;
1973     }
1974     static void SetUpTestCase(void);
1975     static void TearDownTestCase(void);
1976     void SetUp();
1977     void TearDown();
1978     std::shared_ptr<Want> want_;
1979 };
1980 
SetUpTestCase(void)1981 void WantBoolArrayParamTest::SetUpTestCase(void)
1982 {}
1983 
TearDownTestCase(void)1984 void WantBoolArrayParamTest::TearDownTestCase(void)
1985 {}
1986 
SetUp(void)1987 void WantBoolArrayParamTest::SetUp(void)
1988 {
1989     want_ = std::make_shared<Want>();
1990 }
1991 
TearDown(void)1992 void WantBoolArrayParamTest::TearDown(void)
1993 {}
1994 
1995 /**
1996  * @tc.number:  AaFwk_Want_BoolArray_0200
1997  * @tc.name:SetBoolArrayParam/GetBoolArrayParam
1998  * @tc.desc: Verify when parameter change.
1999  */
2000 HWTEST_P(WantBoolArrayParamTest, AaFwk_Want_BoolArray_0200, Function | MediumTest | Level1)
2001 {
2002     std::string setKey = std::get<0>(GetParam());
2003     std::string getKey = std::get<1>(GetParam());
2004     std::vector<bool> setValue = std::get<2>(GetParam());
2005     std::vector<bool> defaultValue = std::get<3>(GetParam());
2006     std::vector<bool> result = std::get<4>(GetParam());
2007     want_->SetParam(setKey, setValue);
2008     EXPECT_EQ(result, want_->GetBoolArrayParam(getKey));
2009 }
2010 
2011 INSTANTIATE_TEST_CASE_P(WantBoolArrayParamTestCaseP, WantBoolArrayParamTest,
2012     testing::Values(testBoolArrayType("", "aa", {true, false}, {}, {}),
2013         testBoolArrayType("", "", {true, false}, {}, {true, false}),
2014         testBoolArrayType("1*中_aR", "aa", {true, false}, {}, {}),
2015         testBoolArrayType("1*中_aR", "1*中_aR", {false, true}, {}, {false, true})));
2016 
2017 using testCharArrayType =
2018     std::tuple<std::string, std::string, std::vector<zchar>, std::vector<zchar>, std::vector<zchar>>;
2019 class WantCharArrayParamTest : public testing::TestWithParam<testCharArrayType> {
2020 public:
WantCharArrayParamTest()2021     WantCharArrayParamTest()
2022     {
2023         want_ = nullptr;
2024     }
~WantCharArrayParamTest()2025     ~WantCharArrayParamTest()
2026     {
2027         want_ = nullptr;
2028     }
2029     static void SetUpTestCase(void);
2030     static void TearDownTestCase(void);
2031     void SetUp();
2032     void TearDown();
2033     std::shared_ptr<Want> want_;
2034 };
2035 
SetUpTestCase(void)2036 void WantCharArrayParamTest::SetUpTestCase(void)
2037 {}
2038 
TearDownTestCase(void)2039 void WantCharArrayParamTest::TearDownTestCase(void)
2040 {}
2041 
SetUp(void)2042 void WantCharArrayParamTest::SetUp(void)
2043 {
2044     want_ = std::make_shared<Want>();
2045 }
2046 
TearDown(void)2047 void WantCharArrayParamTest::TearDown(void)
2048 {}
2049 
2050 /**
2051  * @tc.number:  AaFwk_Want_Parameters_CharArray_0100
2052  * @tc.name: SetParam/GetCharArrayParam
2053  * @tc.desc: Verify when parameter change.
2054  */
2055 HWTEST_P(WantCharArrayParamTest, AaFwk_Want_Parameters_CharArray_0100, Function | MediumTest | Level1)
2056 {
2057     std::string setKey = std::get<0>(GetParam());
2058     std::string getKey = std::get<1>(GetParam());
2059     std::vector<zchar> setValue = std::get<2>(GetParam());
2060     std::vector<zchar> defaultValue = std::get<3>(GetParam());
2061     std::vector<zchar> result = std::get<4>(GetParam());
2062     want_->SetParam(setKey, setValue);
2063     EXPECT_EQ(result, want_->GetCharArrayParam(getKey));
2064 }
2065 
2066 INSTANTIATE_TEST_CASE_P(WantCharArrayParamTestCaseP, WantCharArrayParamTest,
2067     testing::Values(testCharArrayType("", "aa", {U'中', U'文'}, {}, {}),
2068         testCharArrayType("", "", {U'中', U'文'}, {}, {U'中', U'文'}),
2069         testCharArrayType("1*中_aR", "aa", {U'中', U'文'}, {}, {}),
2070         testCharArrayType("1*中_aR", "1*中_aR", {U'中', U'文'}, {}, {U'中', U'文'})));
2071 
2072 /**
2073  * @tc.number:  AaFwk_Want_Parameters_CharArray_0200
2074  * @tc.name:  GetCharArrayParam
2075  * @tc.desc: Verify when the value is char array.
2076  */
2077 HWTEST_F(WantCharArrayParamTest, AaFwk_Want_Parameters_CharArray_0200, Function | MediumTest | Level1)
2078 {
2079     std::vector<zchar> defaultValue;
2080     std::string getKey("aa");
2081     EXPECT_EQ(defaultValue, want_->GetCharArrayParam(getKey));
2082 }
2083 
2084 /**
2085  * @tc.number:  AaFwk_Want_Parameters_CharArray_0300
2086  * @tc.name:  SetParam/GetCharArrayParam
2087  * @tc.desc: Verify when the value is char array.
2088  */
2089 HWTEST_F(WantCharArrayParamTest, AaFwk_Want_Parameters_CharArray_0300, Function | MediumTest | Level1)
2090 {
2091     std::string emptyStr("ff");
2092     std::vector<zchar> firstValue({U'中', U'文'});
2093     std::vector<zchar> secondValue({U'字', U'符'});
2094     std::vector<zchar> thirdValue({U'集', U'英'});
2095     std::string keyStr("aa");
2096     want_->SetParam(emptyStr, firstValue);
2097     want_->SetParam(emptyStr, firstValue);
2098     want_->SetParam(emptyStr, secondValue);
2099     std::vector<zchar> defaultValue;
2100     EXPECT_EQ(defaultValue, want_->GetCharArrayParam(keyStr));
2101     want_->SetParam(emptyStr, thirdValue);
2102     EXPECT_EQ(thirdValue, want_->GetCharArrayParam(emptyStr));
2103 }
2104 
2105 /**
2106  * @tc.number: AaFwk_Want_Parameters_CharArray_0400
2107  * @tc.name:  SetParam/GetCharArrayParam
2108  * @tc.desc: Verify when the value is char array.
2109  */
2110 HWTEST_F(WantCharArrayParamTest, AaFwk_Want_Parameters_CharArray_0400, Function | MediumTest | Level1)
2111 {
2112     std::string firstKey("%1uH3");
2113     std::vector<zchar> firstValue({U'中', U'文'});
2114     std::vector<zchar> secondValue({U'字', U'符'});
2115     std::vector<zchar> defaultValue;
2116     std::string secondKey("aa");
2117     want_->SetParam(firstKey, firstValue);
2118     want_->SetParam(firstKey, firstValue);
2119     want_->SetParam(firstKey, secondValue);
2120     EXPECT_EQ(secondValue, want_->GetCharArrayParam(firstKey));
2121     want_->SetParam(firstKey, firstValue);
2122     EXPECT_EQ(defaultValue, want_->GetCharArrayParam(secondKey));
2123 }
2124 
2125 using testCharType = std::tuple<std::string, std::string, zchar, zchar, zchar>;
2126 class WantCharParamTest : public testing::TestWithParam<testCharType> {
2127 public:
WantCharParamTest()2128     WantCharParamTest()
2129     {
2130         want_ = nullptr;
2131     }
~WantCharParamTest()2132     ~WantCharParamTest()
2133     {
2134         want_ = nullptr;
2135     }
2136     static void SetUpTestCase(void);
2137     static void TearDownTestCase(void);
2138     void SetUp();
2139     void TearDown();
2140     std::shared_ptr<Want> want_;
2141 };
2142 
SetUpTestCase(void)2143 void WantCharParamTest::SetUpTestCase(void)
2144 {}
2145 
TearDownTestCase(void)2146 void WantCharParamTest::TearDownTestCase(void)
2147 {}
2148 
SetUp(void)2149 void WantCharParamTest::SetUp(void)
2150 {
2151     want_ = std::make_shared<Want>();
2152 }
2153 
TearDown(void)2154 void WantCharParamTest::TearDown(void)
2155 {}
2156 
2157 /**
2158  * @tc.number: AaFwk_Want_Parameters_Char_0100
2159  * @tc.name:  SetParam/GetCharParam
2160  * @tc.desc: Verify when the value is char array.
2161  */
2162 HWTEST_P(WantCharParamTest, AaFwk_Want_Parameters_Char_0100, Function | MediumTest | Level1)
2163 {
2164     std::string setKey = std::get<0>(GetParam());
2165     std::string getKey = std::get<1>(GetParam());
2166     zchar setValue = std::get<2>(GetParam());
2167     zchar defaultValue = std::get<3>(GetParam());
2168     zchar result = std::get<4>(GetParam());
2169     want_->SetParam(setKey, setValue);
2170     EXPECT_EQ(result, want_->GetCharParam(getKey, defaultValue));
2171 }
2172 
2173 INSTANTIATE_TEST_CASE_P(WantParametersCharTestCaseP, WantCharParamTest,
2174     testing::Values(testCharType("", "aa", U'#', U'中', U'中'), testCharType("", "", U'中', U'K', U'中'),
2175         testCharType("1*中_aR", "aa", U'a', U'中', U'中'), testCharType("1*中_aR", "1*中_aR", U'中', U'z', U'中')));
2176 
2177 /**
2178  * @tc.number: AaFwk_Want_Parameters_Char_0200
2179  * @tc.name:  SetParam/GetCharParam
2180  * @tc.desc: Verify when the value is char
2181  */
2182 HWTEST_F(WantCharParamTest, AaFwk_Want_Parameters_Char_0200, Function | MediumTest | Level1)
2183 {
2184     zchar defaultValue = U'文';
2185     std::string getKey("aa");
2186     EXPECT_EQ(defaultValue, want_->GetCharParam(getKey, defaultValue));
2187 }
2188 
2189 /**
2190  * @tc.number: AaFwk_Want_Parameters_Char_0300
2191  * @tc.name:  SetParam/GetCharParam
2192  * @tc.desc: Verify when the value is char.
2193  */
2194 HWTEST_F(WantCharParamTest, AaFwk_Want_Parameters_Char_0300, Function | MediumTest | Level1)
2195 {
2196     std::string emptyStr("jj");
2197     zchar firstValue = U'中';
2198     zchar secondValue = U'文';
2199     zchar thirdValue = U'字';
2200     zchar firstDefaultValue = U'符';
2201     zchar secondDefaultValue = U'集';
2202     std::string keyStr("aa");
2203     want_->SetParam(emptyStr, firstValue);
2204     want_->SetParam(emptyStr, firstValue);
2205     want_->SetParam(emptyStr, secondValue);
2206     EXPECT_EQ(firstDefaultValue, want_->GetCharParam(keyStr, firstDefaultValue));
2207     want_->SetParam(emptyStr, thirdValue);
2208     EXPECT_EQ(thirdValue, want_->GetCharParam(emptyStr, secondDefaultValue));
2209 }
2210 
2211 /**
2212  * @tc.number: AaFwk_Want_Parameters_Char_0400
2213  * @tc.name:  SetParam/GetCharParam
2214  * @tc.desc: Verify when the value is char.
2215  */
2216 HWTEST_F(WantCharParamTest, AaFwk_Want_Parameters_Char_0400, Function | MediumTest | Level1)
2217 {
2218     std::string firstKey("%1uH3");
2219     zchar firstValue = U'中';
2220     zchar secondValue = U'文';
2221     zchar firstDefaultValue = U'字';
2222     zchar secondDefaultValue = U'符';
2223     std::string secondKey("aa");
2224     want_->SetParam(firstKey, firstValue);
2225     want_->SetParam(firstKey, firstValue);
2226     want_->SetParam(firstKey, secondValue);
2227     EXPECT_EQ(secondValue, want_->GetCharParam(firstKey, firstDefaultValue));
2228     want_->SetParam(firstKey, firstValue);
2229     EXPECT_EQ(secondDefaultValue, want_->GetCharParam(secondKey, secondDefaultValue));
2230 }
2231 
2232 using testDoubleArrayType =
2233     std::tuple<std::string, std::string, std::vector<double>, std::vector<double>, std::vector<double>>;
2234 class WantDoubleArrayParamTest : public testing::TestWithParam<testDoubleArrayType> {
2235 public:
WantDoubleArrayParamTest()2236     WantDoubleArrayParamTest()
2237     {
2238         want_ = nullptr;
2239     }
~WantDoubleArrayParamTest()2240     ~WantDoubleArrayParamTest()
2241     {
2242         want_ = nullptr;
2243     }
2244     static void SetUpTestCase(void);
2245     static void TearDownTestCase(void);
2246     void SetUp();
2247     void TearDown();
2248     std::shared_ptr<Want> want_;
2249 };
2250 
SetUpTestCase(void)2251 void WantDoubleArrayParamTest::SetUpTestCase(void)
2252 {}
2253 
TearDownTestCase(void)2254 void WantDoubleArrayParamTest::TearDownTestCase(void)
2255 {}
2256 
SetUp(void)2257 void WantDoubleArrayParamTest::SetUp(void)
2258 {
2259     want_ = std::make_shared<Want>();
2260 }
2261 
TearDown(void)2262 void WantDoubleArrayParamTest::TearDown(void)
2263 {}
2264 
2265 /**
2266  * @tc.number: AaFwk_Want_DoubleArray_0100
2267  * @tc.name:  SetParam/GetDoubleArrayParam
2268  * @tc.desc: Verify when parameter change.
2269  */
2270 HWTEST_P(WantDoubleArrayParamTest, AaFwk_Want_DoubleArray_0100, Function | MediumTest | Level1)
2271 {
2272     std::string setKey = std::get<0>(GetParam());
2273     std::string getKey = std::get<1>(GetParam());
2274     std::vector<double> setValue = std::get<2>(GetParam());
2275     std::vector<double> defaultValue = std::get<3>(GetParam());
2276     std::vector<double> result = std::get<4>(GetParam());
2277     want_->SetParam(setKey, setValue);
2278     EXPECT_EQ(result, want_->GetDoubleArrayParam(getKey));
2279 }
2280 
2281 INSTANTIATE_TEST_CASE_P(WantDoubleArrayParamTestCaseP, WantDoubleArrayParamTest,
2282     testing::Values(testDoubleArrayType("", "aa", {-1.1, -2.1}, {}, {}),
2283         testDoubleArrayType("", "", {-41.1, -42.1}, {}, {-41.1, -42.1}),
2284         testDoubleArrayType("1*中_aR", "aa", {50.1, 51.1}, {}, {}),
2285         testDoubleArrayType("1*中_aR", "1*中_aR", {5000.1, 5001.1}, {}, {5000.1, 5001.1})));
2286 
2287 /**
2288  * @tc.number: AaFwk_Want_DoubleArray_0200
2289  * @tc.name:  SetParam/GetDoubleArrayParam
2290  * @tc.desc: Verify when parameter change.
2291  */
2292 HWTEST_F(WantDoubleArrayParamTest, AaFwk_Want_DoubleArray_0200, Function | MediumTest | Level1)
2293 {
2294     std::vector<double> defaultValue;
2295     std::string key = "aa";
2296     EXPECT_EQ(defaultValue, want_->GetDoubleArrayParam(key));
2297 }
2298 
2299 /**
2300  * @tc.number: AaFwk_Want_DoubleArray_0300
2301  * @tc.name:  SetParam/GetDoubleArrayParam
2302  * @tc.desc: set empty-string key repeatedly, but get param of another nonexistent key
2303  */
2304 HWTEST_F(WantDoubleArrayParamTest, AaFwk_Want_DoubleArray_0300, Function | MediumTest | Level1)
2305 {
2306     std::vector<double> defaultValue;
2307     std::string setKey1 = "cc";
2308     std::string setKey2 = "aa";
2309     std::vector<double> setValue1 = {1.1, 2.1};
2310     std::vector<double> setValue2 = {5.1, 6.1};
2311     want_->SetParam(setKey1, setValue1);
2312     want_->SetParam(setKey1, setValue1);
2313     setValue1 = {2.1, 3.1};
2314     want_->SetParam(setKey1, setValue1);
2315     EXPECT_EQ(defaultValue, want_->GetDoubleArrayParam(setKey2));
2316     setValue1 = {4.1, 5.1};
2317     want_->SetParam(setKey1, setValue1);
2318     EXPECT_EQ(setValue1, want_->GetDoubleArrayParam(setKey1));
2319 }
2320 
2321 /**
2322  * @tc.number: AaFwk_Want_DoubleArray_0400
2323  * @tc.name:  SetParam/GetDoubleArrayParam
2324  * @tc.desc: set empty-string key repeatedly, then get param of the key
2325  */
2326 HWTEST_F(WantDoubleArrayParamTest, AaFwk_Want_DoubleArray_0400, Function | MediumTest | Level1)
2327 {
2328     std::vector<double> defaultValue;
2329     std::string setKey1 = "%1uH3";
2330     std::string setKey2 = "aa";
2331     std::vector<double> setValue1 = {-1.1, -2.1};
2332     std::vector<double> setValue2 = {9.1, 10.1};
2333     want_->SetParam(setKey1, setValue1);
2334     want_->SetParam(setKey1, setValue1);
2335     setValue1 = {0.1, 1.1};
2336     want_->SetParam(setKey1, setValue1);
2337     EXPECT_EQ(setValue1, want_->GetDoubleArrayParam(setKey1));
2338     setValue1 = {4.1, 5.1};
2339     want_->SetParam(setKey1, setValue1);
2340     setValue1 = {-10.1, -11.1};
2341     EXPECT_EQ(defaultValue, want_->GetDoubleArrayParam(setKey2));
2342 }
2343 
2344 using testFloatArrayType =
2345     std::tuple<std::string, std::string, std::vector<float>, std::vector<float>, std::vector<float>>;
2346 class WantFloatArrayParamTest : public testing::TestWithParam<testFloatArrayType> {
2347 public:
WantFloatArrayParamTest()2348     WantFloatArrayParamTest()
2349     {
2350         want_ = nullptr;
2351     }
~WantFloatArrayParamTest()2352     ~WantFloatArrayParamTest()
2353     {
2354         want_ = nullptr;
2355     }
2356     static void SetUpTestCase(void);
2357     static void TearDownTestCase(void);
2358     void SetUp();
2359     void TearDown();
2360     std::shared_ptr<Want> want_;
2361 };
2362 
SetUpTestCase(void)2363 void WantFloatArrayParamTest::SetUpTestCase(void)
2364 {}
2365 
TearDownTestCase(void)2366 void WantFloatArrayParamTest::TearDownTestCase(void)
2367 {}
2368 
SetUp(void)2369 void WantFloatArrayParamTest::SetUp(void)
2370 {
2371     want_ = std::make_shared<Want>();
2372 }
2373 
TearDown(void)2374 void WantFloatArrayParamTest::TearDown(void)
2375 {}
2376 
2377 /**
2378  * @tc.number: AaFwk_Want_FloatArray_0100
2379  * @tc.name:  SetParam/GetFloatArrayParam
2380  * @tc.desc: Verify when parameter change.
2381  */
2382 HWTEST_P(WantFloatArrayParamTest, AaFwk_Want_FloatArray_0100, Function | MediumTest | Level1)
2383 {
2384     std::string setKey = std::get<0>(GetParam());
2385     std::string getKey = std::get<1>(GetParam());
2386     std::vector<float> setValue = std::get<2>(GetParam());
2387     std::vector<float> defaultValue = std::get<3>(GetParam());
2388     std::vector<float> result = std::get<4>(GetParam());
2389     want_->SetParam(setKey, setValue);
2390     EXPECT_EQ(result, want_->GetFloatArrayParam(getKey));
2391 }
2392 
2393 INSTANTIATE_TEST_CASE_P(WantFloatArrayParamTestCaseP, WantFloatArrayParamTest,
2394     testing::Values(testFloatArrayType("", "aa", {-1.1, -2.1}, {}, {}),
2395         testFloatArrayType("", "", {-41.1, -42.1}, {}, {-41.1, -42.1}),
2396         testFloatArrayType("1*中_aR", "aa", {50.1, 51.1}, {}, {}),
2397         testFloatArrayType("1*中_aR", "1*中_aR", {5000.1, 5001.1}, {}, {5000.1, 5001.1})));
2398 
2399 /**
2400  * @tc.number: AaFwk_Want_FloatArray_0200
2401  * @tc.name:  SetParam/GetFloatArrayParam
2402  * @tc.desc: get param when WantParam is empty
2403  */
2404 HWTEST_F(WantFloatArrayParamTest, AaFwk_Want_FloatArray_0200, Function | MediumTest | Level1)
2405 {
2406     std::vector<float> defaultValue;
2407     std::string key = "aa";
2408     EXPECT_EQ(defaultValue, want_->GetFloatArrayParam(key));
2409 }
2410 
2411 /**
2412  * @tc.number: AaFwk_Want_FloatArray_0300
2413  * @tc.name:  SetParam & GetFloatArrayParam
2414  * @tc.desc: set empty-string key repeatedly, but get param of another nonexistent key
2415  */
2416 HWTEST_F(WantFloatArrayParamTest, AaFwk_Want_FloatArray_0300, Function | MediumTest | Level1)
2417 {
2418     std::vector<float> defaultValue;
2419     std::string setKey1 = "hh";
2420     std::string setKey2 = "aa";
2421     std::vector<float> setValue1 = {1.1, 2.1};
2422     want_->SetParam(setKey1, setValue1);
2423     want_->SetParam(setKey1, setValue1);
2424     setValue1 = {2.1, 3.1};
2425     want_->SetParam(setKey1, setValue1);
2426     EXPECT_EQ(defaultValue, want_->GetFloatArrayParam(setKey2));
2427     setValue1 = {4.1, 5.1};
2428     want_->SetParam(setKey1, setValue1);
2429     EXPECT_EQ(setValue1, want_->GetFloatArrayParam(setKey1));
2430 }
2431 
2432 /**
2433  * @tc.number: AaFwk_Want_FloatArray_0400
2434  * @tc.name:  SetParam & GetFloatArrayParam
2435  * @tc.desc: set empty-string key repeatedly, then get param of the key
2436  */
2437 HWTEST_F(WantFloatArrayParamTest, AaFwk_Want_FloatArray_0400, Function | MediumTest | Level1)
2438 {
2439     std::vector<float> defaultValue;
2440     std::string setKey1 = "%1uH3";
2441     std::string setKey2 = "aa";
2442     std::vector<float> setValue1 = {-1.1, -2.1};
2443     std::vector<float> setValue2 = {9.1, 10.1};
2444     want_->SetParam(setKey1, setValue1);
2445     want_->SetParam(setKey1, setValue1);
2446     setValue1 = {0.1, 1.1};
2447     want_->SetParam(setKey1, setValue1);
2448     EXPECT_EQ(setValue1, want_->GetFloatArrayParam(setKey1));
2449     setValue1 = {4.1, 5.1};
2450     want_->SetParam(setKey1, setValue1);
2451     EXPECT_EQ(defaultValue, want_->GetFloatArrayParam(setKey2));
2452 }
2453 
2454 using testLongArrayType = std::tuple<std::string, std::string, std::vector<long>, std::vector<long>, std::vector<long>>;
2455 class WantLongArrayParamTest : public testing::TestWithParam<testLongArrayType> {
2456 public:
WantLongArrayParamTest()2457     WantLongArrayParamTest()
2458     {
2459         want_ = nullptr;
2460     }
~WantLongArrayParamTest()2461     ~WantLongArrayParamTest()
2462     {
2463         want_ = nullptr;
2464     }
2465     static void SetUpTestCase(void);
2466     static void TearDownTestCase(void);
2467     void SetUp();
2468     void TearDown();
2469     std::shared_ptr<Want> want_;
2470 };
2471 
SetUpTestCase(void)2472 void WantLongArrayParamTest::SetUpTestCase(void)
2473 {}
2474 
TearDownTestCase(void)2475 void WantLongArrayParamTest::TearDownTestCase(void)
2476 {}
2477 
SetUp(void)2478 void WantLongArrayParamTest::SetUp(void)
2479 {
2480     want_ = std::make_shared<Want>();
2481 }
2482 
TearDown(void)2483 void WantLongArrayParamTest::TearDown(void)
2484 {}
2485 
2486 /**
2487  * @tc.number: AaFwk_Want_LongArray_0100
2488  * @tc.name:  SetParam & GetLongArrayParam
2489  * @tc.desc: Verify when parameter change.
2490  */
2491 HWTEST_P(WantLongArrayParamTest, AaFwk_Want_LongArray_0100, Function | MediumTest | Level1)
2492 {
2493     std::string setKey = std::get<0>(GetParam());
2494     std::string getKey = std::get<1>(GetParam());
2495     std::vector<long> setValue = std::get<2>(GetParam());
2496     std::vector<long> defaultValue = std::get<3>(GetParam());
2497     std::vector<long> result = std::get<4>(GetParam());
2498     want_->SetParam(setKey, setValue);
2499     EXPECT_EQ(result, want_->GetLongArrayParam(getKey));
2500 }
2501 
2502 INSTANTIATE_TEST_CASE_P(WantLongArrayParamTestCaseP, WantLongArrayParamTest,
2503     testing::Values(testLongArrayType("", "aa", {-1, 3, 25, -9}, {}, {}),
2504         testLongArrayType("", "", {-41, 0, 0, 9}, {}, {-41, 0, 0, 9}),
2505         testLongArrayType("1*中_aR", "aa", {50, 2, -9}, {}, {}),
2506         testLongArrayType("1*中_aR", "1*中_aR", {-5000}, {}, {-5000})));
2507 
2508 /**
2509  * @tc.number: AaFwk_Want_LongArray_0200
2510  * @tc.name:  SetParam & GetLongArrayParam
2511  * @tc.desc: get param when WantParam is empty
2512  */
2513 HWTEST_F(WantLongArrayParamTest, AaFwk_Want_LongArray_0200, Function | MediumTest | Level1)
2514 {
2515     std::vector<long> defaultValue;
2516     std::string key = "aa";
2517     EXPECT_EQ(defaultValue, want_->GetLongArrayParam(key));
2518 }
2519 
2520 /**
2521  * @tc.number: AaFwk_Want_LongArray_0300
2522  * @tc.name:  SetParam & GetLongArrayParam
2523  * @tc.desc: set empty-string key repeatedly, but get param of another nonexistent key
2524  */
2525 HWTEST_F(WantLongArrayParamTest, AaFwk_Want_LongArray_0300, Function | MediumTest | Level1)
2526 {
2527     std::vector<long> defaultValue;
2528     std::string setKey1 = "bb";
2529     std::string setKey2 = "aa";
2530     std::vector<long> setValue1 = {1, 2};
2531     want_->SetParam(setKey1, setValue1);
2532     want_->SetParam(setKey1, setValue1);
2533     setValue1 = {2, 3};
2534     want_->SetParam(setKey1, setValue1);
2535     EXPECT_EQ(defaultValue, want_->GetLongArrayParam(setKey2));
2536     setValue1 = {4, 5};
2537     want_->SetParam(setKey1, setValue1);
2538     EXPECT_EQ(setValue1, want_->GetLongArrayParam(setKey1));
2539 }
2540 
2541 /**
2542  * @tc.number: AaFwk_Want_LongArray_0400
2543  * @tc.name:  SetParam & GetLongArrayParam
2544  * @tc.desc: set empty-string key repeatedly, then get param of the key
2545  */
2546 HWTEST_F(WantLongArrayParamTest, AaFwk_Want_LongArray_0400, Function | MediumTest | Level1)
2547 {
2548     std::vector<long> defaultValue;
2549     std::string setKey1 = "%1uH3";
2550     std::string setKey2 = "aa";
2551     std::vector<long> setValue1 = {-1, -2};
2552     want_->SetParam(setKey1, setValue1);
2553     want_->SetParam(setKey1, setValue1);
2554     setValue1 = {0, 1};
2555     want_->SetParam(setKey1, setValue1);
2556     EXPECT_EQ(setValue1, want_->GetLongArrayParam(setKey1));
2557     setValue1 = {4, 5};
2558     want_->SetParam(setKey1, setValue1);
2559     EXPECT_EQ(defaultValue, want_->GetLongArrayParam(setKey2));
2560 }
2561 
2562 using testShortArrayType =
2563     std::tuple<std::string, std::string, std::vector<short>, std::vector<short>, std::vector<short>>;
2564 class WantShortArrayParamTest : public testing::TestWithParam<testShortArrayType> {
2565 public:
WantShortArrayParamTest()2566     WantShortArrayParamTest()
2567     {
2568         want_ = nullptr;
2569     }
~WantShortArrayParamTest()2570     ~WantShortArrayParamTest()
2571     {
2572         want_ = nullptr;
2573     }
2574     static void SetUpTestCase(void);
2575     static void TearDownTestCase(void);
2576     void SetUp();
2577     void TearDown();
2578     std::shared_ptr<Want> want_;
2579 };
2580 
SetUpTestCase(void)2581 void WantShortArrayParamTest::SetUpTestCase(void)
2582 {}
2583 
TearDownTestCase(void)2584 void WantShortArrayParamTest::TearDownTestCase(void)
2585 {}
2586 
SetUp(void)2587 void WantShortArrayParamTest::SetUp(void)
2588 {
2589     want_ = std::make_shared<Want>();
2590 }
2591 
TearDown(void)2592 void WantShortArrayParamTest::TearDown(void)
2593 {}
2594 
2595 /**
2596  * @tc.number: AaFwk_Want_ShortArray_0100
2597  * @tc.name:  SetParam/GetShortArrayParam
2598  * @tc.desc: Verify when parameter change.
2599  */
2600 HWTEST_P(WantShortArrayParamTest, AaFwk_Want_ShortArray_0100, Function | MediumTest | Level1)
2601 {
2602     std::string setKey = std::get<0>(GetParam());
2603     std::string getKey = std::get<1>(GetParam());
2604     std::vector<short> setValue = std::get<2>(GetParam());
2605     std::vector<short> defaultValue = std::get<3>(GetParam());
2606     std::vector<short> result = std::get<4>(GetParam());
2607     want_->SetParam(setKey, setValue);
2608     EXPECT_EQ(result, want_->GetShortArrayParam(getKey));
2609 }
2610 
2611 INSTANTIATE_TEST_CASE_P(WantShortArrayParamTestCaseP, WantShortArrayParamTest,
2612     testing::Values(testShortArrayType("", "aa", {-1, 3, 25, -9}, {}, {}),
2613         testShortArrayType("", "", {-41, 0, 0, 9}, {}, {-41, 0, 0, 9}),
2614         testShortArrayType("1*中_aR", "aa", {50, 2, -9}, {}, {}),
2615         testShortArrayType("1*中_aR", "1*中_aR", {-5000}, {}, {-5000})));
2616 
2617 /**
2618  * @tc.number: AaFwk_Want_ShortArray_0200
2619  * @tc.name:  SetParam/GetShortArrayParam
2620  * @tc.desc: Verify when the value is short array
2621  */
2622 HWTEST_F(WantShortArrayParamTest, AaFwk_Want_ShortArray_0200, Function | MediumTest | Level1)
2623 {
2624     std::vector<short> defaultValue;
2625     std::string getKey("aa");
2626     EXPECT_EQ(defaultValue, want_->GetShortArrayParam(getKey));
2627 }
2628 
2629 /**
2630  * @tc.number: AaFwk_Want_ShortArray_0300
2631  * @tc.name:  SetParam/GetShortArrayParam
2632  * @tc.desc: Verify when the value is short array
2633  */
2634 HWTEST_F(WantShortArrayParamTest, AaFwk_Want_ShortArray_0300, Function | MediumTest | Level1)
2635 {
2636     std::string emptyStr("hh");
2637     std::vector<short> firstValue({1, 4, -9});
2638     std::vector<short> secondValue({1, 8, -9});
2639     std::vector<short> thirdValue({1, 4, 9});
2640     std::string keyStr("aa");
2641     want_->SetParam(emptyStr, firstValue);
2642     want_->SetParam(emptyStr, firstValue);
2643     want_->SetParam(emptyStr, secondValue);
2644     std::vector<short> defaultValue;
2645     EXPECT_EQ(defaultValue, want_->GetShortArrayParam(keyStr));
2646     want_->SetParam(emptyStr, thirdValue);
2647     EXPECT_EQ(thirdValue, want_->GetShortArrayParam(emptyStr));
2648 }
2649 
2650 /**
2651  * @tc.number: AaFwk_Want_ShortArray_0400
2652  * @tc.name:  SetParam/GetShortArrayParam
2653  * @tc.desc: Verify when the value is short array
2654  */
2655 HWTEST_F(WantShortArrayParamTest, AaFwk_Want_ShortArray_0400, Function | MediumTest | Level1)
2656 {
2657     std::string firstKey("%1uH3");
2658     std::vector<short> firstValue({-1, -2});
2659     std::vector<short> secondValue({-1, -2, -1, -2, 0});
2660     std::vector<short> thirdValue({-1, -2, 100});
2661     std::string secondKey("aa");
2662     want_->SetParam(firstKey, firstValue);
2663     want_->SetParam(firstKey, firstValue);
2664     want_->SetParam(firstKey, secondValue);
2665     EXPECT_EQ(secondValue, want_->GetShortArrayParam(firstKey));
2666     want_->SetParam(firstKey, thirdValue);
2667     std::vector<short> defaultValue;
2668     EXPECT_EQ(defaultValue, want_->GetShortArrayParam(secondKey));
2669 }
2670 
2671 using testShortType = std::tuple<std::string, std::string, short, short, short>;
2672 class WantShortParamTest : public testing::TestWithParam<testShortType> {
2673 public:
WantShortParamTest()2674     WantShortParamTest()
2675     {
2676         want_ = nullptr;
2677     }
~WantShortParamTest()2678     ~WantShortParamTest()
2679     {}
2680     static void SetUpTestCase(void);
2681     static void TearDownTestCase(void);
2682     void SetUp();
2683     void TearDown();
2684     std::shared_ptr<Want> want_;
2685 };
2686 
SetUpTestCase(void)2687 void WantShortParamTest::SetUpTestCase(void)
2688 {}
2689 
TearDownTestCase(void)2690 void WantShortParamTest::TearDownTestCase(void)
2691 {}
2692 
SetUp(void)2693 void WantShortParamTest::SetUp(void)
2694 {
2695     want_ = std::make_shared<Want>();
2696 }
2697 
TearDown(void)2698 void WantShortParamTest::TearDown(void)
2699 {}
2700 
2701 /**
2702  * @tc.number: AaFwk_Want_Short_0100
2703  * @tc.name:  SetParam/GetShortParam
2704  * @tc.desc: Verify when parameter change.
2705  */
2706 HWTEST_P(WantShortParamTest, AaFwk_Want_Short_0100, Function | MediumTest | Level1)
2707 {
2708     std::string setKey = std::get<0>(GetParam());
2709     std::string getKey = std::get<1>(GetParam());
2710     short setValue = std::get<2>(GetParam());
2711     short defaultValue = std::get<3>(GetParam());
2712     short result = std::get<4>(GetParam());
2713     want_->SetParam(setKey, setValue);
2714     EXPECT_EQ(result, want_->GetShortParam(getKey, defaultValue));
2715 }
2716 
2717 INSTANTIATE_TEST_CASE_P(WantShortParamTestCaseP, WantShortParamTest,
2718     testing::Values(testShortType("", "aa", -1, 100, 100), testShortType("", "", -9, -41, -9),
2719         testShortType("1*中_aR", "aa", 50, 5, 5), testShortType("1*中_aR", "1*中_aR", -5000, 5000, -5000)));
2720 
2721 /**
2722  * @tc.number: AaFwk_Want_Short_0200
2723  * @tc.name:  SetParam/GetShortParam
2724  * @tc.desc: Verify when the value is short
2725  */
2726 HWTEST_F(WantShortParamTest, AaFwk_Want_Short_0200, Function | MediumTest | Level1)
2727 {
2728     short defaultValue = 200;
2729     std::string getKey("aa");
2730     EXPECT_EQ(defaultValue, want_->GetShortParam(getKey, defaultValue));
2731 }
2732 /**
2733  * @tc.number: AaFwk_Want_Short_0300
2734  * @tc.name:  SetParam/GetShortParam
2735  * @tc.desc: Verify when the value is short
2736  */
2737 HWTEST_F(WantShortParamTest, AaFwk_Want_Short_0300, Function | MediumTest | Level1)
2738 {
2739     std::string emptyStr("bb");
2740     short firstValue = 1;
2741     short secondValue = 2;
2742     short thirdValue = 4;
2743     short firstDefaultValue = 3;
2744     short secondDefaultValue = 5;
2745     std::string keyStr("aa");
2746     want_->SetParam(emptyStr, firstValue);
2747     want_->SetParam(emptyStr, firstValue);
2748     want_->SetParam(emptyStr, secondValue);
2749     EXPECT_EQ(firstDefaultValue, want_->GetShortParam(keyStr, firstDefaultValue));
2750     want_->SetParam(emptyStr, thirdValue);
2751     EXPECT_EQ(thirdValue, want_->GetShortParam(emptyStr, secondDefaultValue));
2752 }
2753 
2754 /**
2755  * @tc.number: AaFwk_Want_Short_0400
2756  * @tc.name:  SetParam/GetShortParam
2757  * @tc.desc: Verify when the value is short
2758  */
2759 HWTEST_F(WantShortParamTest, AaFwk_Want_Short_0400, Function | MediumTest | Level1)
2760 {
2761     std::string firstKey("%1uH3");
2762     short firstValue = -1;
2763     short secondValue = 0;
2764     short thirdValue = 4;
2765     short firstDefaultValue = 9;
2766     short secondDefaultValue = -10;
2767     std::string secondKey("aa");
2768     want_->SetParam(firstKey, firstValue);
2769     want_->SetParam(firstKey, firstValue);
2770     want_->SetParam(firstKey, secondValue);
2771     EXPECT_EQ(secondValue, want_->GetShortParam(firstKey, firstDefaultValue));
2772     want_->SetParam(firstKey, thirdValue);
2773     EXPECT_EQ(secondDefaultValue, want_->GetShortParam(secondKey, secondDefaultValue));
2774 }
2775 
2776 using testStrArrayType =
2777     std::tuple<std::string, std::string, std::vector<std::string>, std::vector<std::string>, std::vector<std::string>>;
2778 class WantStringArrayParamTest : public testing::TestWithParam<testStrArrayType> {
2779 public:
WantStringArrayParamTest()2780     WantStringArrayParamTest()
2781     {
2782         want_ = nullptr;
2783     }
~WantStringArrayParamTest()2784     ~WantStringArrayParamTest()
2785     {}
2786     static void SetUpTestCase(void);
2787     static void TearDownTestCase(void);
2788     void SetUp();
2789     void TearDown();
2790     std::shared_ptr<Want> want_ = nullptr;
2791 };
2792 
SetUpTestCase(void)2793 void WantStringArrayParamTest::SetUpTestCase(void)
2794 {}
2795 
TearDownTestCase(void)2796 void WantStringArrayParamTest::TearDownTestCase(void)
2797 {}
2798 
SetUp(void)2799 void WantStringArrayParamTest::SetUp(void)
2800 {
2801     want_ = std::make_shared<Want>();
2802 }
2803 
TearDown(void)2804 void WantStringArrayParamTest::TearDown(void)
2805 {}
2806 
2807 /**
2808  * @tc.number: AaFwk_Want_StringArray_0100
2809  * @tc.name:  SetParam/GetStringArrayParam
2810  * @tc.desc: Verify when parameter change.
2811  */
2812 HWTEST_P(WantStringArrayParamTest, AaFwk_Want_StringArray_0100, Function | MediumTest | Level1)
2813 {
2814     std::string setKey = std::get<0>(GetParam());
2815     std::string getKey = std::get<1>(GetParam());
2816     std::vector<std::string> setValue = std::get<2>(GetParam());
2817     std::vector<std::string> defaultValue = std::get<3>(GetParam());
2818     std::vector<std::string> result = std::get<4>(GetParam());
2819     want_->SetParam(setKey, setValue);
2820     EXPECT_EQ(result, want_->GetStringArrayParam(getKey));
2821 }
2822 
2823 INSTANTIATE_TEST_CASE_P(WantStringArrayParamTestCaseP, WantStringArrayParamTest,
2824     testing::Values(testStrArrayType("", "aa", {"1*中_aR", "dbdb"}, {}, {}),
2825         testStrArrayType("", "", {"1*中_aR", "dbdb"}, {}, {"1*中_aR", "dbdb"}),
2826         testStrArrayType("1*中_aR", "aa", {"1*中_aR", "dbdb"}, {}, {}),
2827         testStrArrayType("1*中_aR", "1*中_aR", {"1*中_aR", "dbdb"}, {}, {"1*中_aR", "dbdb"})));
2828 
2829 /**
2830  * @tc.number: AaFwk_Want_StringArray_0200
2831  * @tc.name:  SetParam/GetStringArrayParam
2832  * @tc.desc: get param when WantParam is empty
2833  */
2834 HWTEST_F(WantStringArrayParamTest, AaFwk_Want_StringArray_0200, Function | MediumTest | Level1)
2835 {
2836     std::vector<std::string> defaultValue;
2837     std::string key = "aa";
2838     std::vector<std::string> resultValue = want_->GetStringArrayParam(key);
2839     EXPECT_EQ(defaultValue, resultValue);
2840 }
2841 
2842 /**
2843  * @tc.number: AaFwk_Want_StringArray_0300
2844  * @tc.name:  SetParam/GetStringArrayParam
2845  * @tc.desc: set empty-string key repeatedly, but get param of another nonexistent key
2846  */
2847 HWTEST_F(WantStringArrayParamTest, AaFwk_Want_StringArray_0300, Function | MediumTest | Level1)
2848 {
2849     std::vector<std::string> defaultValue;
2850     std::vector<std::string> setValue1 = {"aaa", "2132"};
2851     std::vector<std::string> setValue2 = {"1*中_aR", "dbdb"};
2852     std::string key1 = "cc";
2853     std::string key2 = "aa";
2854     want_->SetParam(key1, setValue1);
2855     want_->SetParam(key1, setValue1);
2856     want_->SetParam(key1, setValue2);
2857     std::vector<std::string> resultValue = want_->GetStringArrayParam(key2);
2858     EXPECT_EQ(defaultValue, resultValue);
2859 
2860     want_->SetParam(key1, setValue1);
2861     resultValue = want_->GetStringArrayParam(key1);
2862     EXPECT_EQ(setValue1, resultValue);
2863 }
2864 
2865 /**
2866  * @tc.number: AaFwk_Want_StringArray_0400
2867  * @tc.name:  SetParam/GetStringArrayParam
2868  * @tc.desc: set empty-string key repeatedly, then get param of the key
2869  */
2870 HWTEST_F(WantStringArrayParamTest, AaFwk_Want_StringArray_0400, Function | MediumTest | Level1)
2871 {
2872     std::vector<std::string> defaultValue;
2873     std::vector<std::string> setValue = {"aaa", "2132"};
2874     std::string key1 = "%1uH3";
2875     std::string key2 = "aa";
2876     want_->SetParam(key1, setValue);
2877     want_->SetParam(key1, setValue);
2878     setValue = {"1*中_aR", "3#$%"};
2879     want_->SetParam(key1, setValue);
2880     std::vector<std::string> resultValue = want_->GetStringArrayParam(key1);
2881     EXPECT_EQ(setValue, resultValue);
2882 
2883     setValue = {"aaa", "2132"};
2884     want_->SetParam(key1, setValue);
2885     resultValue = want_->GetStringArrayParam(key2);
2886     EXPECT_EQ(defaultValue, resultValue);
2887 }
2888 
2889 using testStrType = std::tuple<std::string, std::string, std::string, std::string, std::string>;
2890 class WantStringParamTest : public testing::TestWithParam<testStrType> {
2891 public:
WantStringParamTest()2892     WantStringParamTest()
2893     {
2894         want_ = nullptr;
2895     }
~WantStringParamTest()2896     ~WantStringParamTest()
2897     {}
2898     static void SetUpTestCase(void);
2899     static void TearDownTestCase(void);
2900     void SetUp();
2901     void TearDown();
2902     std::shared_ptr<Want> want_;
2903 };
2904 
SetUpTestCase(void)2905 void WantStringParamTest::SetUpTestCase(void)
2906 {}
2907 
TearDownTestCase(void)2908 void WantStringParamTest::TearDownTestCase(void)
2909 {}
2910 
SetUp(void)2911 void WantStringParamTest::SetUp(void)
2912 {
2913     want_ = std::make_shared<Want>();
2914 }
2915 
TearDown(void)2916 void WantStringParamTest::TearDown(void)
2917 {}
2918 
2919 /**
2920  * @tc.number: AaFwk_Want_String_0100
2921  * @tc.name:  SetParam/GetStringParam
2922  * @tc.desc: Verify when parameter change.
2923  */
2924 HWTEST_P(WantStringParamTest, AaFwk_Want_String_0100, Function | MediumTest | Level1)
2925 {
2926     std::string setKey = std::get<0>(GetParam());
2927     std::string getKey = std::get<1>(GetParam());
2928     std::string setValue = std::get<2>(GetParam());
2929     std::string defaultValue = std::get<3>(GetParam());
2930     std::string result = std::get<4>(GetParam());
2931     want_->SetParam(setKey, setValue);
2932     EXPECT_EQ(result, want_->GetStringParam(getKey));
2933 }
2934 
2935 INSTANTIATE_TEST_CASE_P(WantStringParamTestCaseP, WantStringParamTest,
2936     testing::Values(testStrType("", "aa", "1*中_aR", "", ""), testStrType("", "", "1*中_aR", "", "1*中_aR"),
2937         testStrType("1*中_aR", "aa", "aaa", "", ""), testStrType("1*中_aR", "1*中_aR", "aaa", "", "aaa")));
2938 
2939 /**
2940  * @tc.number: AaFwk_Want_String_0200
2941  * @tc.name:  SetParam/GetStringParam
2942  * @tc.desc: get param when WantParam is empty.
2943  */
2944 HWTEST_F(WantStringParamTest, AaFwk_Want_String_0200, Function | MediumTest | Level1)
2945 {
2946     std::string defaultStrValue;
2947     std::string key = "aa";
2948     EXPECT_EQ(defaultStrValue, want_->GetStringParam(key));
2949 }
2950 
2951 /**
2952  * @tc.number: AaFwk_Want_String_0300
2953  * @tc.name:  SetParam/GetStringParam
2954  * @tc.desc: set empty-string key repeatedly, but get param of another nonexistent key.
2955  */
2956 HWTEST_F(WantStringParamTest, AaFwk_Want_String_0300, Function | MediumTest | Level1)
2957 {
2958     std::string defaultStrValue;
2959     std::string setValue1 = "aaa";
2960     std::string setValue2 = "1*中_aR";
2961     std::string key1 = "dd";
2962     std::string key2 = "aa";
2963     want_->SetParam(key1, setValue1);
2964     want_->SetParam(key1, setValue1);
2965     want_->SetParam(key1, setValue2);
2966     EXPECT_EQ(defaultStrValue, want_->GetStringParam(key2));
2967     want_->SetParam(key1, setValue1);
2968     EXPECT_EQ(setValue1, want_->GetStringParam(key1));
2969 }
2970 
2971 /**
2972  * @tc.number: AaFwk_Want_String_0400
2973  * @tc.name:  SetParam/GetStringParam
2974  * @tc.desc: set empty-string key repeatedly, then get param of the key.
2975  */
2976 HWTEST_F(WantStringParamTest, AaFwk_Want_String_0400, Function | MediumTest | Level1)
2977 {
2978     std::string key1 = "%1uH3";
2979     std::string defaultStrValue;
2980     std::string setValue1 = "aaa";
2981     std::string setValue2 = "1*中_aR";
2982     std::string key2 = "aa";
2983     want_->SetParam(key1, setValue1);
2984     want_->SetParam(key1, setValue1);
2985     want_->SetParam(key1, setValue2);
2986     EXPECT_EQ("1*中_aR", want_->GetStringParam(key1));
2987     want_->SetParam(key1, setValue1);
2988     EXPECT_EQ(defaultStrValue, want_->GetStringParam(key2));
2989 }
2990 
2991 using testLongType = std::tuple<std::string, std::string, long, long, long>;
2992 class WantLongParamTest : public testing::TestWithParam<testLongType> {
2993 public:
WantLongParamTest()2994     WantLongParamTest()
2995     {
2996         want_ = nullptr;
2997     }
~WantLongParamTest()2998     ~WantLongParamTest()
2999     {}
3000     static void SetUpTestCase(void);
3001     static void TearDownTestCase(void);
3002     void SetUp();
3003     void TearDown();
3004     std::shared_ptr<Want> want_ = nullptr;
3005 };
3006 
SetUpTestCase(void)3007 void WantLongParamTest::SetUpTestCase(void)
3008 {}
3009 
TearDownTestCase(void)3010 void WantLongParamTest::TearDownTestCase(void)
3011 {}
3012 
SetUp(void)3013 void WantLongParamTest::SetUp(void)
3014 {
3015     want_ = std::make_shared<Want>();
3016 }
3017 
TearDown(void)3018 void WantLongParamTest::TearDown(void)
3019 {}
3020 
3021 /**
3022  * @tc.number: AaFwk_Want_LongParam_0100
3023  * @tc.name:  SetParam/GetLongParam
3024  * @tc.desc: Verify when parameter change.
3025  */
3026 HWTEST_P(WantLongParamTest, AaFwk_Want_LongParam_0100, Function | MediumTest | Level1)
3027 {
3028     std::string setKey = std::get<0>(GetParam());
3029     std::string getKey = std::get<1>(GetParam());
3030     long setValue = std::get<2>(GetParam());
3031     long defaultValue = std::get<3>(GetParam());
3032     long result = std::get<4>(GetParam());
3033     want_->SetParam(setKey, setValue);
3034     EXPECT_EQ(result, want_->GetLongParam(getKey, defaultValue));
3035 }
3036 
3037 INSTANTIATE_TEST_CASE_P(WantLongParamTestCaseP, WantLongParamTest,
3038     testing::Values(testLongType("b1", "b1", -1, 100, -1), testLongType("b3", "b4", 600, 200, 200),
3039         testLongType("b5", "b5", 50, 6, 50), testLongType("b6", "b7", 1000, 2200, 2200)));
3040 
3041 /**
3042  * @tc.number: AaFwk_Want_LongParam_0200
3043  * @tc.name:  SetParam/GetLongParam
3044  * @tc.desc:  get param when WantParam is empty.
3045  */
3046 HWTEST_F(WantLongParamTest, AaFwk_Want_LongParam_0200, Function | MediumTest | Level1)
3047 {
3048     long defaultValue = 100;
3049     std::string key = "aa";
3050     EXPECT_EQ(defaultValue, want_->GetLongParam(key, defaultValue));
3051 }
3052 
3053 /**
3054  * @tc.number: AaFwk_Want_LongParam_0300
3055  * @tc.name:  SetParam/GetLongParam
3056  * @tc.desc:  set empty-string key repeatedly, but get param of another nonexistent key.
3057  */
3058 HWTEST_F(WantLongParamTest, AaFwk_Want_LongParam_0300, Function | MediumTest | Level1)
3059 {
3060     std::string setKey1 = "dd";
3061     std::string setKey2 = "aa";
3062     long setValue1 = 1;
3063     long setValue2 = 5;
3064     want_->SetParam(setKey1, setValue1);
3065     want_->SetParam(setKey1, setValue1);
3066     setValue1 = 2;
3067     want_->SetParam(setKey1, setValue1);
3068     setValue1 = 3;
3069     EXPECT_EQ(setValue1, want_->GetLongParam(setKey2, setValue1));
3070     setValue1 = 4;
3071     want_->SetParam(setKey1, setValue1);
3072     EXPECT_EQ(setValue1, want_->GetLongParam(setKey1, setValue2));
3073 }
3074 
3075 /**
3076  * @tc.number: AaFwk_Want_LongParam_0400
3077  * @tc.name:  SetParam/GetLongParam
3078  * @tc.desc:  set empty-string key repeatedly, then get param of the key.
3079  */
3080 HWTEST_F(WantLongParamTest, AaFwk_Want_LongParam_0400, Function | MediumTest | Level1)
3081 {
3082     std::string setKey1 = "%1uH3";
3083     std::string setKey2 = "aa";
3084     long setValue1 = -1;
3085     long setValue2 = 9;
3086     want_->SetParam(setKey1, setValue1);
3087     want_->SetParam(setKey1, setValue1);
3088     setValue1 = 0;
3089     want_->SetParam(setKey1, setValue1);
3090     EXPECT_EQ(setValue1, want_->GetLongParam(setKey1, setValue2));
3091     setValue1 = 4;
3092     want_->SetParam(setKey1, setValue1);
3093     setValue1 = -10;
3094     EXPECT_EQ(setValue1, want_->GetLongParam(setKey2, setValue1));
3095 }
3096 
3097 using testIntType = std::tuple<std::string, std::string, int, int, int>;
3098 class WantIntParamTest : public testing::TestWithParam<testIntType> {
3099 public:
WantIntParamTest()3100     WantIntParamTest()
3101     {
3102         want_ = nullptr;
3103     }
~WantIntParamTest()3104     ~WantIntParamTest()
3105     {
3106         want_ = nullptr;
3107     }
3108     static void SetUpTestCase(void);
3109     static void TearDownTestCase(void);
3110     void SetUp();
3111     void TearDown();
3112     std::shared_ptr<Want> want_;
3113 };
3114 
SetUpTestCase(void)3115 void WantIntParamTest::SetUpTestCase(void)
3116 {}
3117 
TearDownTestCase(void)3118 void WantIntParamTest::TearDownTestCase(void)
3119 {}
3120 
SetUp(void)3121 void WantIntParamTest::SetUp(void)
3122 {
3123     want_ = std::make_shared<Want>();
3124 }
3125 
TearDown(void)3126 void WantIntParamTest::TearDown(void)
3127 {}
3128 
3129 /**
3130  * @tc.number: AaFwk_Want_IntParam_0100
3131  * @tc.name:  SetParam/GetIntParam
3132  * @tc.desc:  Verify when parameter change.
3133  */
3134 HWTEST_P(WantIntParamTest, AaFwk_Want_IntParam_0100, Function | MediumTest | Level1)
3135 {
3136     std::string setKey = std::get<0>(GetParam());
3137     std::string getKey = std::get<1>(GetParam());
3138     int setValue = std::get<2>(GetParam());
3139     int defaultValue = std::get<3>(GetParam());
3140     int result = std::get<4>(GetParam());
3141     want_->SetParam(setKey, setValue);
3142     EXPECT_EQ(result, want_->GetIntParam(getKey, defaultValue));
3143 }
3144 
3145 INSTANTIATE_TEST_CASE_P(WantParametersIntTestCaseP, WantIntParamTest,
3146     testing::Values(testIntType("", "aa", -1, 100, 100), testIntType("", "", -9, -41, -9),
3147         testIntType("1*中_aR", "aa", 50, 5, 5), testIntType("1*中_aR", "1*中_aR", -5000, 5000, -5000)));
3148 
3149 /**
3150  * @tc.number: AaFwk_Want_IntParam_0200
3151  * @tc.name:  SetParam/GetIntParam
3152  * @tc.desc:  Verify when the value is integer.
3153  */
3154 HWTEST_F(WantIntParamTest, AaFwk_Want_IntParam_0200, Function | MediumTest | Level1)
3155 {
3156     int defaultValue = 200;
3157     std::string getKey("aa");
3158     EXPECT_EQ(defaultValue, want_->GetIntParam(getKey, defaultValue));
3159 }
3160 
3161 /**
3162  * @tc.number: AaFwk_Want_IntParam_0300
3163  * @tc.name:  SetParam/GetIntParam
3164  * @tc.desc:  Verify when the value is integer.
3165  */
3166 HWTEST_F(WantIntParamTest, AaFwk_Want_IntParam_0300, Function | MediumTest | Level1)
3167 {
3168     std::string emptyStr("bb");
3169     int firstValue = 1;
3170     int secondValue = 2;
3171     int thirdValue = 4;
3172     int firstDefaultValue = 3;
3173     int secondDefaultValue = 5;
3174     std::string keyStr("aa");
3175     want_->SetParam(emptyStr, firstValue);
3176     want_->SetParam(emptyStr, firstValue);
3177     want_->SetParam(emptyStr, secondValue);
3178     EXPECT_EQ(firstDefaultValue, want_->GetIntParam(keyStr, firstDefaultValue));
3179     want_->SetParam(emptyStr, thirdValue);
3180     EXPECT_EQ(thirdValue, want_->GetIntParam(emptyStr, secondDefaultValue));
3181 }
3182 
3183 /**
3184  * @tc.number: AaFwk_Want_IntParam_0400
3185  * @tc.name:  SetParam/GetIntParam
3186  * @tc.desc:  Verify when the value is integer.
3187  */
3188 HWTEST_F(WantIntParamTest, AaFwk_Want_IntParam_0400, Function | MediumTest | Level1)
3189 {
3190     std::string firstKey("%1uH3");
3191     int firstValue = -1;
3192     int secondValue = 0;
3193     int thirdValue = 4;
3194     int firstDefaultValue = 9;
3195     int secondDefaultValue = -10;
3196     std::string secondKey("aa");
3197     want_->SetParam(firstKey, firstValue);
3198     want_->SetParam(firstKey, firstValue);
3199     want_->SetParam(firstKey, secondValue);
3200     EXPECT_EQ(secondValue, want_->GetIntParam(firstKey, firstDefaultValue));
3201     want_->SetParam(firstKey, thirdValue);
3202     EXPECT_EQ(secondDefaultValue, want_->GetIntParam(secondKey, secondDefaultValue));
3203 }
3204 
3205 using testIntArrayType = std::tuple<std::string, std::string, std::vector<int>, std::vector<int>, std::vector<int>>;
3206 class WantIntArrayParamTest : public testing::TestWithParam<testIntArrayType> {
3207 public:
WantIntArrayParamTest()3208     WantIntArrayParamTest()
3209     {
3210         want_ = nullptr;
3211     }
~WantIntArrayParamTest()3212     ~WantIntArrayParamTest()
3213     {
3214         want_ = nullptr;
3215     }
3216     static void SetUpTestCase(void);
3217     static void TearDownTestCase(void);
3218     void SetUp();
3219     void TearDown();
3220     std::shared_ptr<Want> want_;
3221 };
3222 
SetUpTestCase(void)3223 void WantIntArrayParamTest::SetUpTestCase(void)
3224 {}
3225 
TearDownTestCase(void)3226 void WantIntArrayParamTest::TearDownTestCase(void)
3227 {}
3228 
SetUp(void)3229 void WantIntArrayParamTest::SetUp(void)
3230 {
3231     want_ = std::make_shared<Want>();
3232 }
3233 
TearDown(void)3234 void WantIntArrayParamTest::TearDown(void)
3235 {}
3236 
3237 /**
3238  * @tc.number: AaFwk_Want_IntArrayParam_0100
3239  * @tc.name:  SetParam/GetIntArrayParam
3240  * @tc.desc:  Verify when parameter change.
3241  */
3242 HWTEST_P(WantIntArrayParamTest, AaFwk_Want_IntArrayParam_0100, Function | MediumTest | Level1)
3243 {
3244     std::string setKey = std::get<0>(GetParam());
3245     std::string getKey = std::get<1>(GetParam());
3246     std::vector<int> setValue = std::get<2>(GetParam());
3247     std::vector<int> defaultValue = std::get<3>(GetParam());
3248     std::vector<int> result = std::get<4>(GetParam());
3249     want_->SetParam(setKey, setValue);
3250     EXPECT_EQ(result, want_->GetIntArrayParam(getKey));
3251 }
3252 
3253 INSTANTIATE_TEST_CASE_P(WantIntArrayParamTestCaseP, WantIntArrayParamTest,
3254     testing::Values(testIntArrayType("", "aa", {-1, 3, 25, -9}, {}, {}),
3255         testIntArrayType("", "", {-41, 0, 0, 9}, {}, {-41, 0, 0, 9}),
3256         testIntArrayType("1*中_aR", "aa", {50, 2, -9}, {}, {}),
3257         testIntArrayType("1*中_aR", "1*中_aR", {-5000}, {}, {-5000})));
3258 
3259 /**
3260  * @tc.number: AaFwk_Want_IntArrayParam_0200
3261  * @tc.name:  SetParam/GetIntArrayParam
3262  * @tc.desc:  Verify when the value is integer array.
3263  */
3264 HWTEST_F(WantIntArrayParamTest, AaFwk_Want_IntArrayParam_0200, Function | MediumTest | Level1)
3265 {
3266     std::vector<int> defaultValue;
3267     std::string getKey("aa");
3268     EXPECT_EQ(defaultValue, want_->GetIntArrayParam(getKey));
3269 }
3270 
3271 /**
3272  * @tc.number: AaFwk_Want_IntArrayParam_0300
3273  * @tc.name:  SetParam/GetIntArrayParam
3274  * @tc.desc:  Verify when the value is integer array.
3275  */
3276 HWTEST_F(WantIntArrayParamTest, AaFwk_Want_IntArrayParam_0300, Function | MediumTest | Level1)
3277 {
3278     std::string emptyStr("cc");
3279     std::vector<int> firstValue({1, 4, -9});
3280     std::vector<int> secondValue({1, 8, -9});
3281     std::vector<int> thirdValue({1, 4, 9});
3282     std::string keyStr("aa");
3283     want_->SetParam(emptyStr, firstValue);
3284     want_->SetParam(emptyStr, firstValue);
3285     want_->SetParam(emptyStr, secondValue);
3286     std::vector<int> defaultValue;
3287     EXPECT_EQ(defaultValue, want_->GetIntArrayParam(keyStr));
3288     want_->SetParam(emptyStr, thirdValue);
3289     EXPECT_EQ(thirdValue, want_->GetIntArrayParam(emptyStr));
3290 }
3291 
3292 /**
3293  * @tc.number: AaFwk_Want_IntArrayParam_0400
3294  * @tc.name:  SetParam/GetIntArrayParam
3295  * @tc.desc:  Verify when the value is integer array.
3296  */
3297 HWTEST_F(WantIntArrayParamTest, AaFwk_Want_IntArrayParam_0400, Function | MediumTest | Level1)
3298 {
3299     std::string firstKey("%1uH3");
3300     std::vector<int> firstValue({-1, -2});
3301     std::vector<int> secondValue({-1, -2, -1, -2, 0});
3302     std::vector<int> thirdValue({-1, -2, 100});
3303     std::string secondKey("aa");
3304     want_->SetParam(firstKey, firstValue);
3305     want_->SetParam(firstKey, firstValue);
3306     want_->SetParam(firstKey, secondValue);
3307     EXPECT_EQ(secondValue, want_->GetIntArrayParam(firstKey));
3308     want_->SetParam(firstKey, thirdValue);
3309     std::vector<int> defaultValue;
3310     EXPECT_EQ(defaultValue, want_->GetIntArrayParam(secondKey));
3311 }
3312 
3313 using testFloatType = std::tuple<std::string, std::string, float, float, float>;
3314 class WantFloatParamTest : public testing::TestWithParam<testFloatType> {
3315 public:
WantFloatParamTest()3316     WantFloatParamTest()
3317     {
3318         want_ = nullptr;
3319     }
~WantFloatParamTest()3320     ~WantFloatParamTest()
3321     {
3322         want_ = nullptr;
3323     }
3324 
3325     static void SetUpTestCase(void);
3326     static void TearDownTestCase(void);
3327     void SetUp();
3328     void TearDown();
3329     std::shared_ptr<Want> want_;
3330 };
3331 
SetUpTestCase(void)3332 void WantFloatParamTest::SetUpTestCase(void)
3333 {}
3334 
TearDownTestCase(void)3335 void WantFloatParamTest::TearDownTestCase(void)
3336 {}
3337 
SetUp(void)3338 void WantFloatParamTest::SetUp(void)
3339 {
3340     want_ = std::make_shared<Want>();
3341 }
3342 
TearDown(void)3343 void WantFloatParamTest::TearDown(void)
3344 {}
3345 
3346 /**
3347  * @tc.number: AaFwk_Want_FloatParam_0100
3348  * @tc.name:  SetParam/GetFloatParam
3349  * @tc.desc:  Verify when parameter change.
3350  */
3351 HWTEST_P(WantFloatParamTest, AaFwk_Want_FloatParam_0100, Function | MediumTest | Level1)
3352 {
3353     std::string setKey = std::get<0>(GetParam());
3354     std::string getKey = std::get<1>(GetParam());
3355     float setValue = std::get<2>(GetParam());
3356     float defaultValue = std::get<3>(GetParam());
3357     float result = std::get<4>(GetParam());
3358     want_->SetParam(setKey, setValue);
3359     EXPECT_EQ(result, want_->GetFloatParam(getKey, defaultValue));
3360 }
3361 
3362 INSTANTIATE_TEST_CASE_P(WantFloatParamTestCaseP, WantFloatParamTest,
3363     testing::Values(testFloatType("", "aa", -1.1, 100.1, 100.1), testFloatType("", "", -9.1, -41.1, -9.1),
3364         testFloatType("1*中_aR", "aa", 50.1, 5.1, 5.1), testFloatType("1*中_aR", "1*中_aR", -5000.1, 5000.1, -5000.1)));
3365 
3366 /**
3367  * @tc.number: AaFwk_Want_FloatParam_0200
3368  * @tc.name:  SetParam/GetFloatParam
3369  * @tc.desc:  get param when WantParam is empty.
3370  */
3371 HWTEST_F(WantFloatParamTest, AaFwk_Want_FloatParam_0200, Function | MediumTest | Level1)
3372 {
3373     float defaultValue = 100.1;
3374     std::string key = "aa";
3375     EXPECT_EQ(defaultValue, want_->GetFloatParam(key, defaultValue));
3376 }
3377 
3378 /**
3379  * @tc.number: AaFwk_Want_FloatParam_0300
3380  * @tc.name:  SetParam/GetFloatParam
3381  * @tc.desc:  set empty-string key repeatedly, but get param of another nonexistent key.
3382  */
3383 HWTEST_F(WantFloatParamTest, AaFwk_Want_FloatParam_0300, Function | MediumTest | Level1)
3384 {
3385     std::string setKey1 = "ee";
3386     std::string setKey2 = "aa";
3387     float setValue1 = 1.1;
3388     float setValue2 = 5.1;
3389     want_->SetParam(setKey1, setValue1);
3390     want_->SetParam(setKey1, setValue1);
3391     setValue1 = 2.1;
3392     want_->SetParam(setKey1, setValue1);
3393     setValue1 = 3.1;
3394     EXPECT_EQ(setValue1, want_->GetFloatParam(setKey2, setValue1));
3395     setValue1 = 4.1;
3396     want_->SetParam(setKey1, setValue1);
3397     EXPECT_EQ(setValue1, want_->GetFloatParam(setKey1, setValue2));
3398 }
3399 
3400 /**
3401  * @tc.number: AaFwk_Want_FloatParam_0400
3402  * @tc.name:  SetParam/GetFloatParam
3403  * @tc.desc:  set empty-string key repeatedly, but get param of another nonexistent key.
3404  */
3405 HWTEST_F(WantFloatParamTest, AaFwk_Want_FloatParam_0400, Function | MediumTest | Level1)
3406 {
3407     std::string setKey1 = "%1uH3";
3408     std::string setKey2 = "aa";
3409     float setValue1 = -1.1;
3410     float setValue2 = 9.1;
3411     want_->SetParam(setKey1, setValue1);
3412     want_->SetParam(setKey1, setValue1);
3413     setValue1 = 0.1;
3414     want_->SetParam(setKey1, setValue1);
3415     EXPECT_EQ(setValue1, want_->GetFloatParam(setKey1, setValue2));
3416     setValue1 = 4.1;
3417     want_->SetParam(setKey1, setValue1);
3418     setValue1 = -10.1;
3419     EXPECT_EQ(setValue1, want_->GetFloatParam(setKey2, setValue1));
3420 }
3421 
3422 using testDoubleType = std::tuple<std::string, std::string, double, double, double>;
3423 class WantDoubleParamTest : public testing::TestWithParam<testDoubleType> {
3424 public:
WantDoubleParamTest()3425     WantDoubleParamTest()
3426     {
3427         want_ = nullptr;
3428     }
~WantDoubleParamTest()3429     ~WantDoubleParamTest()
3430     {
3431         want_ = nullptr;
3432     }
3433     static void SetUpTestCase(void);
3434     static void TearDownTestCase(void);
3435     void SetUp();
3436     void TearDown();
3437     std::shared_ptr<Want> want_;
3438 };
3439 
SetUpTestCase(void)3440 void WantDoubleParamTest::SetUpTestCase(void)
3441 {}
3442 
TearDownTestCase(void)3443 void WantDoubleParamTest::TearDownTestCase(void)
3444 {}
3445 
SetUp(void)3446 void WantDoubleParamTest::SetUp(void)
3447 {
3448     want_ = std::make_shared<Want>();
3449 }
3450 
TearDown(void)3451 void WantDoubleParamTest::TearDown(void)
3452 {}
3453 
3454 /**
3455  * @tc.number: AaFwk_Want_DoubleParam_0100
3456  * @tc.name:  SetParam/GetDoubleParam
3457  * @tc.desc:  Verify when parameter change.
3458  */
3459 HWTEST_P(WantDoubleParamTest, AaFwk_Want_DoubleParam_0100, Function | MediumTest | Level1)
3460 {
3461     std::string setKey = std::get<0>(GetParam());
3462     std::string getKey = std::get<1>(GetParam());
3463     double setValue = std::get<2>(GetParam());
3464     double defaultValue = std::get<3>(GetParam());
3465     double result = std::get<4>(GetParam());
3466     want_->SetParam(setKey, setValue);
3467     EXPECT_EQ(result, want_->GetDoubleParam(getKey, defaultValue));
3468 }
3469 
3470 INSTANTIATE_TEST_CASE_P(WantDoubleParamTestCaseP, WantDoubleParamTest,
3471     testing::Values(testDoubleType("", "aa", -1.1, 100.1, 100.1), testDoubleType("", "", -9.1, -41.1, -9.1),
3472         testDoubleType("1*中_aR", "aa", 50.1, 5.1, 5.1),
3473         testDoubleType("1*中_aR", "1*中_aR", -5000.1, 5000.1, -5000.1)));
3474 
3475 /**
3476  * @tc.number: AaFwk_Want_DoubleParam_0300
3477  * @tc.name:  SetParam & GetDoubleParam
3478  * @tc.desc:  set empty-string key repeatedly, but get param of another nonexistent key.
3479  */
3480 HWTEST_F(WantDoubleParamTest, AaFwk_Want_DoubleParam_0300, Function | MediumTest | Level1)
3481 {
3482     double defaultValue = 100.1;
3483     std::string key = "aa";
3484     EXPECT_EQ(defaultValue, want_->GetDoubleParam(key, defaultValue));
3485 }
3486 
3487 /**
3488  * @tc.number: AaFwk_Want_DoubleParam_0400
3489  * @tc.name:  SetParam & GetDoubleParam
3490  * @tc.desc:  set empty-string key repeatedly, then get param of the key.
3491  */
3492 HWTEST_F(WantDoubleParamTest, AaFwk_Want_DoubleParam_0400, Function | MediumTest | Level1)
3493 {
3494     std::string setKey1 = "ff";
3495     std::string setKey2 = "aa";
3496     double setValue1 = 1.1;
3497     double setValue2 = 5.1;
3498     want_->SetParam(setKey1, setValue1);
3499     want_->SetParam(setKey1, setValue1);
3500     setValue1 = 2.1;
3501     want_->SetParam(setKey1, setValue1);
3502     setValue1 = 3.1;
3503     EXPECT_EQ(setValue1, want_->GetDoubleParam(setKey2, setValue1));
3504     setValue1 = 4.1;
3505     want_->SetParam(setKey1, setValue1);
3506     EXPECT_EQ(setValue1, want_->GetDoubleParam(setKey1, setValue2));
3507 }
3508 
3509 /**
3510  * @tc.number: AaFwk_Want_ByteArray_0100
3511  * @tc.name:  SetParam/GetByteArrayParam
3512  * @tc.desc:  Verify when parameter change.
3513  */
3514 HWTEST_F(WantDoubleParamTest, AaFwk_Want_ByteArray_0100, Function | MediumTest | Level1)
3515 {
3516     std::string setKey1 = "%1uH3";
3517     std::string setKey2 = "aa";
3518     double setValue1 = -1.1;
3519     double setValue2 = 9.1;
3520     want_->SetParam(setKey1, setValue1);
3521     want_->SetParam(setKey1, setValue1);
3522     setValue1 = 0.1;
3523     want_->SetParam(setKey1, setValue1);
3524     EXPECT_EQ(setValue1, want_->GetDoubleParam(setKey1, setValue2));
3525     setValue1 = 4.1;
3526     want_->SetParam(setKey1, setValue1);
3527     setValue1 = -10.1;
3528     EXPECT_EQ(setValue1, want_->GetDoubleParam(setKey2, setValue1));
3529 }
3530 
3531 using testByteArrayType = std::tuple<std::string, std::string, std::vector<byte>, std::vector<byte>, std::vector<byte>>;
3532 class WantByteArrayParamTest : public testing::TestWithParam<testByteArrayType> {
3533 public:
WantByteArrayParamTest()3534     WantByteArrayParamTest()
3535     {
3536         want_ = nullptr;
3537     }
~WantByteArrayParamTest()3538     ~WantByteArrayParamTest()
3539     {
3540         want_ = nullptr;
3541     }
3542     static void SetUpTestCase(void);
3543     static void TearDownTestCase(void);
3544     void SetUp();
3545     void TearDown();
3546     std::shared_ptr<Want> want_;
3547 };
3548 
SetUpTestCase(void)3549 void WantByteArrayParamTest::SetUpTestCase(void)
3550 {}
3551 
TearDownTestCase(void)3552 void WantByteArrayParamTest::TearDownTestCase(void)
3553 {}
3554 
SetUp(void)3555 void WantByteArrayParamTest::SetUp(void)
3556 {
3557     want_ = std::make_shared<Want>();
3558 }
3559 
TearDown(void)3560 void WantByteArrayParamTest::TearDown(void)
3561 {}
3562 
3563 /**
3564  * @tc.number: AaFwk_Want_ByteArray_0100
3565  * @tc.name:  SetParam/GetByteArrayParam
3566  * @tc.desc:  Verify when parameter change.
3567  */
3568 HWTEST_P(WantByteArrayParamTest, AaFwk_Want_ByteArray_0100, Function | MediumTest | Level1)
3569 {
3570     std::string setKey = std::get<0>(GetParam());
3571     std::string getKey = std::get<1>(GetParam());
3572     std::vector<byte> setValue = std::get<2>(GetParam());
3573     std::vector<byte> defaultValue = std::get<3>(GetParam());
3574     std::vector<byte> result = std::get<4>(GetParam());
3575     want_->SetParam(setKey, setValue);
3576     EXPECT_EQ(result, want_->GetByteArrayParam(getKey));
3577 }
3578 
3579 INSTANTIATE_TEST_CASE_P(WantByteArrayParamTestCaseP, WantByteArrayParamTest,
3580     testing::Values(testByteArrayType("", "aa", {'*', 'D'}, {}, {}),
3581         testByteArrayType("", "", {'%', ')'}, {}, {'%', ')'}), testByteArrayType("1*中_aR", "aa", {'R', '.'}, {}, {}),
3582         testByteArrayType("1*中_aR", "1*中_aR", {'R', 'b'}, {}, {'R', 'b'})));
3583 
3584 /**
3585  * @tc.number: AaFwk_Want_ByteArray_0200
3586  * @tc.name:  SetParam/GetByteArrayParam
3587  * @tc.desc:  Verify when the value is byte array.
3588  */
3589 HWTEST_F(WantByteArrayParamTest, AaFwk_Want_ByteArray_0200, Function | MediumTest | Level1)
3590 {
3591     std::vector<byte> defaultValue;
3592     std::string getKey("aa");
3593     EXPECT_EQ(defaultValue, want_->GetByteArrayParam(getKey));
3594 }
3595 
3596 /**
3597  * @tc.number: AaFwk_Want_ByteArray_0300
3598  * @tc.name:  SetParam/GetByteArrayParam
3599  * @tc.desc:  Verify when the value is byte array.
3600  */
3601 HWTEST_F(WantByteArrayParamTest, AaFwk_Want_ByteArray_0300, Function | MediumTest | Level1)
3602 {
3603     std::string emptyStr("gg");
3604     std::vector<byte> firstValue({'a', '2'});
3605     std::vector<byte> secondValue({'1', 'd'});
3606     std::vector<byte> thirdValue({'t', '3'});
3607     std::string keyStr("aa");
3608     want_->SetParam(emptyStr, firstValue);
3609     want_->SetParam(emptyStr, firstValue);
3610     want_->SetParam(emptyStr, secondValue);
3611     std::vector<byte> defaultValue;
3612     EXPECT_EQ(defaultValue, want_->GetByteArrayParam(keyStr));
3613     want_->SetParam(emptyStr, thirdValue);
3614     EXPECT_EQ(thirdValue, want_->GetByteArrayParam(emptyStr));
3615 }
3616 
3617 /**
3618  * @tc.number: AaFwk_Want_ByteArray_0400
3619  * @tc.name:  SetParam/GetByteArrayParam
3620  * @tc.desc:  Verify when the value is byte array.
3621  */
3622 HWTEST_F(WantByteArrayParamTest, AaFwk_Want_ByteArray_0400, Function | MediumTest | Level1)
3623 {
3624     std::string firstKey("%1uH3");
3625     std::vector<byte> firstValue({'a', '2'});
3626     std::vector<byte> secondValue({'w', '$'});
3627     std::vector<byte> defaultValue;
3628     std::string secondKey("aa");
3629     want_->SetParam(firstKey, firstValue);
3630     want_->SetParam(firstKey, firstValue);
3631     want_->SetParam(firstKey, secondValue);
3632     EXPECT_EQ(secondValue, want_->GetByteArrayParam(firstKey));
3633     want_->SetParam(firstKey, firstValue);
3634     EXPECT_EQ(defaultValue, want_->GetByteArrayParam(secondKey));
3635 }
3636 
3637 using testBoolType = std::tuple<std::string, std::string, bool, bool, bool>;
3638 class WantBoolParamTest : public testing::TestWithParam<testBoolType> {
3639 public:
WantBoolParamTest()3640     WantBoolParamTest()
3641     {
3642         want_ = nullptr;
3643     }
~WantBoolParamTest()3644     ~WantBoolParamTest()
3645     {
3646         want_ = nullptr;
3647     }
3648     static void SetUpTestCase(void);
3649     static void TearDownTestCase(void);
3650     void SetUp();
3651     void TearDown();
3652     std::shared_ptr<Want> want_;
3653 };
3654 
SetUpTestCase(void)3655 void WantBoolParamTest::SetUpTestCase(void)
3656 {}
3657 
TearDownTestCase(void)3658 void WantBoolParamTest::TearDownTestCase(void)
3659 {}
3660 
SetUp(void)3661 void WantBoolParamTest::SetUp(void)
3662 {
3663     want_ = std::make_shared<Want>();
3664 }
3665 
TearDown(void)3666 void WantBoolParamTest::TearDown(void)
3667 {}
3668 
3669 /**
3670  * @tc.number: AaFwk_Want_BoolParam_0100
3671  * @tc.name: SetParam/GetBoolParam
3672  * @tc.desc: Verify when parameter change.
3673  */
3674 HWTEST_P(WantBoolParamTest, AaFwk_Want_BoolParam_0100, Function | MediumTest | Level1)
3675 {
3676     std::string setKey = std::get<0>(GetParam());
3677     std::string getKey = std::get<1>(GetParam());
3678     bool setValue = std::get<2>(GetParam());
3679     bool defaultValue = std::get<3>(GetParam());
3680     bool result = std::get<4>(GetParam());
3681     want_->SetParam(setKey, setValue);
3682     EXPECT_EQ(result, want_->GetBoolParam(getKey, defaultValue));
3683 }
3684 
3685 INSTANTIATE_TEST_CASE_P(WantBoolParamTestCaseP, WantBoolParamTest,
3686     testing::Values(testBoolType("b1", "aa", true, true, true), testBoolType("b1", "aa", true, false, false),
3687         testBoolType("b2", "b2", true, true, true), testBoolType("b3", "b3", true, false, true),
3688         testBoolType("123", "123", true, false, true), testBoolType("123", "aa", true, false, false),
3689         testBoolType("-~*&%¥", "-~*&%¥", true, false, true), testBoolType("-~*&%¥", "aa", true, false, false),
3690         testBoolType("中文", "中文", true, false, true), testBoolType("中文", "aa", true, false, false),
3691         testBoolType("_中文ddPEJKJ#(&*~#^%", "_中文ddPEJKJ#(&*~#^%", true, false, true),
3692         testBoolType("_中文ddPEJKJ#(&*~#^%", "123", true, false, false)));
3693 
3694 /**
3695  * @tc.number: AaFwk_Want_BoolParam_0200
3696  * @tc.name:   SetParam/GetBoolParam
3697  * @tc.desc: Verify when set twice and get twice.
3698  */
3699 HWTEST_F(WantBoolParamTest, AaFwk_Want_BoolParam_0200, Function | MediumTest | Level1)
3700 {
3701     std::string firstKey("_中文ddPEJKJ#(&*~#^%");
3702     std::string secondKey("key33");
3703     want_->SetParam(firstKey, true);
3704     want_->SetParam(secondKey, true);
3705     EXPECT_EQ(true, want_->GetBoolParam(firstKey, false));
3706     EXPECT_EQ(true, want_->GetBoolParam(secondKey, false));
3707 }
3708 
3709 /**
3710  * @tc.number: AaFwk_Want_BoolParam_0300
3711  * @tc.name:   SetParam/GetBoolParam
3712  * @tc.desc: Verify when set 20 times, and get once.
3713  */
3714 HWTEST_F(WantBoolParamTest, AaFwk_Want_BoolParam_0300, Function | MediumTest | Level1)
3715 {
3716     std::string keyStr("_中文ddPEJKJ#(&*~#^%");
3717     for (int i = 0; i < 20; i++) {
3718         want_->SetParam(keyStr, true);
3719     }
3720     EXPECT_EQ(true, want_->GetBoolParam(keyStr, false));
3721 }
3722 
3723 /**
3724  * @tc.number: AaFwk_Want_Want_0100
3725  * @tc.name:   Want() and Want(want)
3726  * @tc.desc: Verify Want()
3727  */
3728 HWTEST_F(WantBaseTest, AaFwk_Want_Want_0100, Function | MediumTest | Level1)
3729 {
3730     Want want;
3731 
3732     EXPECT_EQ((uint)0, want.GetFlags());
3733     EXPECT_EQ(std::string(""), want.GetAction());
3734 
3735     std::vector<std::string> vect = want.GetEntities();
3736     EXPECT_EQ((size_t)0, vect.size());
3737     EXPECT_EQ(std::string(""), want.GetType());
3738 
3739     want.SetFlags(10);
3740     want.SetAction("system.Action.test");
3741     want.AddEntity("system.Entity.test");
3742     want.SetType("system.Type.test");
3743 
3744     Want want2(want);
3745     EXPECT_EQ("system.Action.test", want2.GetAction());
3746     EXPECT_EQ(true, want2.HasEntity("system.Entity.test"));
3747     EXPECT_EQ("system.Type.test", want2.GetType());
3748 }
3749 
3750 /**
3751  * @tc.number: AaFwk_Want_Entity_0100
3752  * @tc.name:    [AddEntity or RemoveEntity] & HasEntity &CountEntities
3753  * @tc.desc: Verify [AddEntity or RemoveEntity] & HasEntity &CountEntities
3754  */
3755 HWTEST_F(WantBaseTest, AaFwk_Want_Entity_0100, Function | MediumTest | Level1)
3756 {
3757     std::string entity1 = "entity.system.entity1";
3758 
3759     want_->AddEntity(entity1);
3760 
3761     EXPECT_EQ(true, want_->HasEntity(entity1));
3762     EXPECT_EQ(1, want_->CountEntities());
3763     want_->RemoveEntity(entity1);
3764     EXPECT_EQ(false, want_->HasEntity(entity1));
3765     EXPECT_EQ(0, want_->CountEntities());
3766     int length = want_->GetEntities().size();
3767     EXPECT_EQ(0, length);
3768 
3769     std::string entity2 = "entity.system.entity2";
3770 
3771     want_->AddEntity(entity1);
3772     want_->AddEntity(entity2);
3773 
3774     EXPECT_EQ(true, want_->HasEntity(entity1));
3775     EXPECT_EQ(2, want_->CountEntities());
3776     EXPECT_EQ(true, want_->HasEntity(entity2));
3777     EXPECT_EQ(2, want_->CountEntities());
3778 
3779     want_->RemoveEntity(entity1);
3780     want_->RemoveEntity(entity2);
3781     EXPECT_EQ(0, want_->CountEntities());
3782     int length2 = want_->GetEntities().size();
3783 
3784     EXPECT_EQ(0, length2);
3785 }
3786 
3787 /**
3788  * @tc.number: AaFwk_Want_HasParameter_0100
3789  * @tc.name:    SetParam and HasParameter
3790  * @tc.desc: Verify HasParameter()
3791  */
3792 HWTEST_F(WantBaseTest, AaFwk_Want_HasParameter_0100, Function | MediumTest | Level1)
3793 {
3794 
3795     std::vector<std::string> vector;
3796     std::string key = "system.want.test.key";
3797     std::string key2 = "system.want.test.key2";
3798 
3799     vector.push_back("system.want.test.content");
3800     want_->SetParam(key, vector);
3801     EXPECT_EQ(true, want_->HasParameter(key));
3802 
3803     want_->SetParam(key2, vector);
3804     EXPECT_EQ(true, want_->HasParameter(key2));
3805 }
3806 /**
3807  * @tc.number: AaFwk_Want_HasParameter_0200
3808  * @tc.name:    SetParam and HasParameter
3809  * @tc.desc: Verify HasParameter()
3810  */
3811 HWTEST_F(WantBaseTest, AaFwk_Want_HasParameter_0200, Function | MediumTest | Level1)
3812 {
3813     std::string key = std::to_string(Array::SIGNATURE) + ".#Intent;key=3{\"\\b\\\";end";
3814     std::vector<zchar> arrayValue = {'.', '=', ';'};
3815     std::shared_ptr<Want> p1 = std::make_shared<Want>();
3816     if (p1 == nullptr) {
3817         return;
3818     }
3819     p1->SetParam(key, arrayValue);
3820     Want *newWant = nullptr;
3821     newWant = Want::ParseUri(p1->ToUri());
3822     if (newWant == nullptr) {
3823         return;
3824     }
3825     std::shared_ptr<Want> p2(newWant);
3826     CompareWant(p1, p2);
3827 }
3828 /**
3829  * @tc.number: AaFwk_Want_ToString_0100
3830  * @tc.name:    ToString and FromString
3831  * @tc.desc: Verify FromString()
3832  */
3833 HWTEST_F(WantBaseTest, AaFwk_Want_ToString_0100, Function | MediumTest | Level1)
3834 {
3835     std::string deviceId = "deviceId";
3836     std::string bundleName = "bundleName";
3837     std::string abilityName ="abilityName";
3838     std::string uri = "url";
3839     std::string type = "type";
3840     unsigned int flags = 1;
3841     std::string action = "action";
3842     WantParams parameters;
3843     std::vector<std::string> entities = {"entity.system.entity1", "entity.system.entity2"};
3844 
3845     std::string keyBool = "key_bool";
3846     bool valueBool = true;
3847     parameters.SetParam(keyBool, Boolean::Box(valueBool));
3848 
3849     std::string keyStr = "key_string";
3850     std::string valueString = "123";
3851     parameters.SetParam(keyStr, String::Box(valueString));
3852 
3853     std::string keyInt = "key_int";
3854     int valueInt = 111;
3855     parameters.SetParam(keyStr, Integer::Box(valueInt));
3856 
3857     std::shared_ptr<Want> want1 = std::make_shared<Want>();
3858     if (want1 == nullptr) {
3859         return;
3860     }
3861     want1->SetElementName(deviceId, bundleName, abilityName);
3862     want1->SetUri(uri);
3863     want1->SetType(type);
3864     want1->SetFlags(flags);
3865     want1->SetAction(action);
3866     for (auto entity : entities) {
3867         want1->AddEntity(entity);
3868     }
3869 
3870     std::string jsonString = want1->ToString();
3871     Want *newWant = Want::FromString(jsonString);
3872     if (newWant == nullptr) {
3873         return;
3874     }
3875     std::shared_ptr<Want> want2(newWant);
3876 
3877     CompareWant(want1, want2);
3878 }
3879 }  // namespace AAFwk
3880 }  // namespace OHOS