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