1 /*
2 * Copyright (c) 2021-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include <memory>
18 #include <regex>
19
20 #include "array_wrapper.h"
21 #include "bool_wrapper.h"
22 #include "byte_wrapper.h"
23 #include "double_wrapper.h"
24 #include "float_wrapper.h"
25 #include "int_wrapper.h"
26 #include "long_wrapper.h"
27 #define private public
28 #define protected public
29 #include "pac_map.h"
30 #undef protected
31 #undef private
32 #include "short_wrapper.h"
33 #include "string_wrapper.h"
34 #include "user_object_base.h"
35
36 namespace OHOS {
37 namespace AppExecFwk {
38 using namespace testing::ext;
39 using namespace OHOS;
40 using namespace OHOS::AppExecFwk;
41
42 #define PAC_MPA_TEST_INT 1000
43 #define PAC_MAP_TEST_LONG (-1000)
44 #define PAC_MAP_TEST_FLOAT 1.0f
45 #define PAC_MAP_TEST_DOUBLE 3.1415926
46
47 /*
48 * Description:Test for data type of base: like int, short, long std::string etc.
49 */
50 class PacMapSecondTest : public testing::Test {
51 public:
PacMapSecondTest()52 PacMapSecondTest() : pacmap_(nullptr)
53 {}
~PacMapSecondTest()54 ~PacMapSecondTest()
55 {}
56
57 std::shared_ptr<PacMap> pacmap_ = nullptr;
58 static void SetUpTestCase(void);
59 static void TearDownTestCase(void);
60 void SetUp();
61 void TearDown();
62 };
63
SetUpTestCase(void)64 void PacMapSecondTest::SetUpTestCase(void)
65 {}
66
TearDownTestCase(void)67 void PacMapSecondTest::TearDownTestCase(void)
68 {}
69
SetUp()70 void PacMapSecondTest::SetUp()
71 {
72 pacmap_ = std::make_shared<PacMap>();
73 }
74
TearDown()75 void PacMapSecondTest::TearDown()
76 {}
77
78 /**
79 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0100
80 * @tc.name: CompareArrayData
81 * @tc.desc: Verify CompareArrayData.
82 * @tc.require:
83 */
84 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0100, Function | MediumTest | Level1)
85 {
86 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0100 start";
87 long size = 3;
88 InterfaceID id = g_IID_IArray;
89 AAFwk::Array array1(size, id);
90 AAFwk::Array array2(size, id);
91 AAFwk::IInterface *one_interface = static_cast<OHOS::AAFwk::IArray*>(&array1);
92 AAFwk::IInterface *two_interface = static_cast<OHOS::AAFwk::IArray*>(&array2);
93 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
94 EXPECT_EQ(result, false);
95 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0100 end";
96 }
97
98 /**
99 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0200
100 * @tc.name: CompareArrayData
101 * @tc.desc: Verify CompareArrayData.
102 * @tc.require:
103 */
104 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0200, Function | MediumTest | Level1)
105 {
106 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0200 start";
107 long size1 = 3;
108 long size2 = 4;
109 InterfaceID id = g_IID_IArray;
110 AAFwk::Array array1(size1, id);
111 AAFwk::Array array2(size2, id);
112 AAFwk::IInterface *one_interface = static_cast<OHOS::AAFwk::IArray*>(&array1);
113 AAFwk::IInterface *two_interface = static_cast<OHOS::AAFwk::IArray*>(&array2);
114 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
115 EXPECT_EQ(result, false);
116 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0200 end";
117 }
118
119 /**
120 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0300
121 * @tc.name: CompareArrayData
122 * @tc.desc: Verify CompareArrayData.
123 * @tc.require:
124 */
125 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0300, Function | MediumTest | Level1)
126 {
127 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0300 start";
128 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IBoolean);
129 if (ao1 != nullptr) {
130 ao1->Set(0, Boolean::Box(true));
131 }
132 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IBoolean);
133 if (ao2 != nullptr) {
134 ao2->Set(0, Boolean::Box(true));
135 }
136 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
137 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
138 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
139 EXPECT_EQ(result, true);
140 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0300 end";
141 }
142
143 /**
144 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0400
145 * @tc.name: CompareArrayData
146 * @tc.desc: Verify CompareArrayData.
147 * @tc.require:
148 */
149 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0400, Function | MediumTest | Level1)
150 {
151 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0400 start";
152 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IByte);
153 if (ao1 != nullptr) {
154 ao1->Set(0, Byte::Box('a'));
155 }
156 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IByte);
157 if (ao2 != nullptr) {
158 ao2->Set(0, Byte::Box('a'));
159 }
160 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
161 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
162 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
163 EXPECT_EQ(result, true);
164 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0400 end";
165 }
166
167 /**
168 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0500
169 * @tc.name: CompareArrayData
170 * @tc.desc: Verify CompareArrayData.
171 * @tc.require:
172 */
173 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0500, Function | MediumTest | Level1)
174 {
175 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0500 start";
176 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IShort);
177 if (ao1 != nullptr) {
178 ao1->Set(0, Short::Box(PAC_MPA_TEST_INT));
179 }
180 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IShort);
181 if (ao2 != nullptr) {
182 ao2->Set(0, Short::Box(PAC_MPA_TEST_INT));
183 }
184 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
185 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
186 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
187 EXPECT_EQ(result, true);
188 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0500 end";
189 }
190
191 /**
192 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0600
193 * @tc.name: CompareArrayData
194 * @tc.desc: Verify CompareArrayData.
195 * @tc.require:
196 */
197 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0600, Function | MediumTest | Level1)
198 {
199 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0600 start";
200 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IInteger);
201 if (ao1 != nullptr) {
202 ao1->Set(0, Integer::Box(PAC_MPA_TEST_INT));
203 }
204 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IInteger);
205 if (ao2 != nullptr) {
206 ao2->Set(0, Integer::Box(PAC_MPA_TEST_INT));
207 }
208 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
209 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
210 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
211 EXPECT_EQ(result, true);
212 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0600 end";
213 }
214
215 /**
216 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0700
217 * @tc.name: CompareArrayData
218 * @tc.desc: Verify CompareArrayData.
219 * @tc.require:
220 */
221 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0700, Function | MediumTest | Level1)
222 {
223 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0700 start";
224 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_ILong);
225 if (ao1 != nullptr) {
226 ao1->Set(0, Long::Box(PAC_MAP_TEST_LONG));
227 }
228 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_ILong);
229 if (ao2 != nullptr) {
230 ao2->Set(0, Long::Box(PAC_MAP_TEST_LONG));
231 }
232 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
233 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
234 pacmap_->CompareArrayData(one_interface, two_interface);
235 EXPECT_TRUE(pacmap_ != nullptr);
236 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0700 end";
237 }
238
239 /**
240 * @tc.number: AppExecFwk_PacMap_CompareArrayData_0800
241 * @tc.name: CompareArrayData
242 * @tc.desc: Verify CompareArrayData.
243 * @tc.require:
244 */
245 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_0800, Function | MediumTest | Level1)
246 {
247 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0800 start";
248 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IFloat);
249 if (ao1 != nullptr) {
250 ao1->Set(0, Float::Box(PAC_MAP_TEST_FLOAT));
251 }
252 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IFloat);
253 if (ao2 != nullptr) {
254 ao2->Set(0, Float::Box(PAC_MAP_TEST_FLOAT));
255 }
256 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
257 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
258 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
259 EXPECT_EQ(result, true);
260 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_0800 end";
261 }
262
263 /**
264 * @tc.number: AppExecFwk_PacMap_CompareArrayData_1000
265 * @tc.name: CompareArrayData
266 * @tc.desc: Verify CompareArrayData.
267 * @tc.require:
268 */
269 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_CompareArrayData_1000, Function | MediumTest | Level1)
270 {
271 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_1000 start";
272 sptr<AAFwk::IArray> ao1 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IString);
273 if (ao1 != nullptr) {
274 ao1->Set(0, String::Box("<~!@#$%^&*()_+>特殊字符"));
275 }
276 sptr<AAFwk::IArray> ao2 = new (std::nothrow) AAFwk::Array(1, AAFwk::g_IID_IString);
277 if (ao2 != nullptr) {
278 ao2->Set(0, String::Box("<~!@#$%^&*()_+>特殊字符"));
279 }
280 AAFwk::IInterface *one_interface = static_cast<AAFwk::IArray*>(ao1);
281 AAFwk::IInterface *two_interface = static_cast<AAFwk::IArray*>(ao2);
282 bool result = pacmap_->CompareArrayData(one_interface, two_interface);
283 EXPECT_EQ(result, true);
284 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_CompareArrayData_1000 end";
285 }
286
287 /**
288 * @tc.number: AppExecFwk_PacMap_Equals_0100
289 * @tc.name: Equals
290 * @tc.desc: Verify Equals.
291 * @tc.require:
292 */
293 HWTEST_F(PacMapSecondTest, AppExecFwk_PacMap_Equals_0100, Function | MediumTest | Level1)
294 {
295 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_Equals_0100 start";
296 Object other;
297 EXPECT_EQ(pacmap_->Equals(other), false);
298 GTEST_LOG_(INFO) << "AppExecFwk_PacMap_Equals_0100 end";
299 }
300 } // namespace AppExecFwk
301 } // namespace OHOS
302