• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "ability_manager_client.h"
18 #include "ability_runtime_error_util.h"
19 #include "cancel_listener.h"
20 #include "completed_callback.h"
21 #include "completed_dispatcher.h"
22 #include "context/application_context.h"
23 #include "context_container.h"
24 #include "context_impl.h"
25 #include "element_name.h"
26 #include "event_handler.h"
27 #include "iservice_registry.h"
28 #include "base_types.h"
29 #define private public
30 #define protected public
31 #include "pending_want.h"
32 #undef private
33 #undef protected
34 #include "pending_want_record.h"
35 #include "remote_native_token.h"
36 #include "sa_mgr_client.h"
37 #include "system_ability_definition.h"
38 #include "want.h"
39 #include "wants_info.h"
40 #include "want_params.h"
41 #include "want_receiver_stub.h"
42 #include "want_agent_client.h"
43 #include "want_agent_helper.h"
44 #include "want_sender_info.h"
45 #include "want_sender_stub.h"
46 #include "bool_wrapper.h"
47 #include "zchar_wrapper.h"
48 #include "byte_wrapper.h"
49 #include "double_wrapper.h"
50 #include "float_wrapper.h"
51 #include "int_wrapper.h"
52 #include "long_wrapper.h"
53 #include "short_wrapper.h"
54 #include "string_wrapper.h"
55 #include "array_wrapper.h"
56 #include "hilog_tag_wrapper.h"
57 
58 using namespace testing::ext;
59 using namespace OHOS::AAFwk;
60 using namespace OHOS;
61 using OHOS::AppExecFwk::ElementName;
62 using namespace OHOS::AbilityRuntime;
63 using namespace OHOS::AppExecFwk;
64 using vector_str = std::vector<std::string>;
65 
66 namespace OHOS::AbilityRuntime::WantAgent {
67 namespace {
68     constexpr int32_t NOTEQ = -1;
69 }
70 class PendingWantTest : public testing::Test {
71 public:
PendingWantTest()72     PendingWantTest()
73     {}
~PendingWantTest()74     ~PendingWantTest()
75     {}
76     static void SetUpTestCase(void);
77     static void TearDownTestCase(void);
78     void SetUp();
79     void TearDown();
80     static Want MakeWant(std::string deviceId, std::string abilityName, std::string bundleName);
81 
82     static int callBackCancelListenerConnt;
83 
84     class CancelListenerSon : public CancelListener {
85     public:
86         void OnCancelled(int resultCode) override;
87     };
88 };
89 
90 int PendingWantTest::callBackCancelListenerConnt = 0;
91 
OnCancelled(int resultCode)92 void PendingWantTest::CancelListenerSon::OnCancelled(int resultCode)
93 {
94     callBackCancelListenerConnt++;
95 }
96 
MakeWant(std::string deviceId,std::string abilityName,std::string bundleName)97 Want PendingWantTest::MakeWant(std::string deviceId, std::string abilityName, std::string bundleName)
98 {
99     ElementName element(deviceId, bundleName, abilityName);
100     Want want;
101     want.SetElement(element);
102     return want;
103 }
104 
GetAppContext()105 std::shared_ptr<OHOS::AbilityRuntime::ApplicationContext> GetAppContext()
106 {
107     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
108         AbilityRuntime::ApplicationContext::GetInstance();
109     return context;
110 }
111 
SetUpTestCase(void)112 void PendingWantTest::SetUpTestCase(void)
113 {
114     RemoteNativeToken::SetNativeToken();
115 }
116 
TearDownTestCase(void)117 void PendingWantTest::TearDownTestCase(void)
118 {}
119 
SetUp(void)120 void PendingWantTest::SetUp(void)
121 {}
122 
TearDown(void)123 void PendingWantTest::TearDown(void)
124 {}
125 
126 /*
127  * @tc.number    : PendingWant_0100
128  * @tc.name      : PendingWant Constructors
129  * @tc.desc      : 1.The parameter is nullptr
130  */
131 HWTEST_F(PendingWantTest, PendingWant_0100, Function | MediumTest | Level1)
132 {
133     PendingWant pendingWant(nullptr);
134     EXPECT_EQ(pendingWant.target_, nullptr);
135     EXPECT_EQ(pendingWant.cancelReceiver_, nullptr);
136 }
137 
138 /*
139  * @tc.number    : PendingWant_0200
140  * @tc.name      : PendingWant Constructors
141  * @tc.desc      : 1.The parameter target is not nullptr
142  */
143 HWTEST_F(PendingWantTest, PendingWant_0200, Function | MediumTest | Level1)
144 {
145     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
146     PendingWant pendingWant(target);
147     EXPECT_EQ(pendingWant.target_, target);
148     EXPECT_EQ(pendingWant.cancelReceiver_, nullptr);
149 }
150 
151 /*
152  * @tc.number    : PendingWant_0300
153  * @tc.name      : PendingWant GetType
154  * @tc.desc      : 1.Get PendingWant Type (UNKNOWN_TYPE)
155  */
156 HWTEST_F(PendingWantTest, PendingWant_0300, Function | MediumTest | Level1)
157 {
158     sptr<AAFwk::IWantSender> target = nullptr;
159     PendingWant pendingWant(target);
160     EXPECT_EQ(pendingWant.target_, target);
161     EXPECT_EQ(pendingWant.GetType(target), WantAgentConstant::OperationType::UNKNOWN_TYPE);
162 }
163 
164 /*
165  * @tc.number    : PendingWant_0400
166  * @tc.name      : PendingWant GetAbility
167  * @tc.desc      : 1.Get pendingWant (context is nullptr)
168  */
169 HWTEST_F(PendingWantTest, PendingWant_0400, Function | MediumTest | Level1)
170 {
171     int requestCode = 10;
172     std::shared_ptr<Want> want = std::make_shared<Want>();
173     ElementName element("device", "bundleName", "abilityName");
174     want->SetElement(element);
175     unsigned int flags = 1;
176     flags |= FLAG_NO_CREATE;
177     std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbility(nullptr, requestCode, want, flags);
178     EXPECT_EQ(pendingWant, nullptr);
179 }
180 
181 
182 /*
183  * @tc.number    : PendingWant_0600
184  * @tc.name      : PendingWant GetAbility
185  * @tc.desc      : 1.Get pendingWant (options is not nullptr)
186  */
187 HWTEST_F(PendingWantTest, PendingWant_0600, Function | MediumTest | Level1)
188 {
189     int requestCode = 10;
190     std::shared_ptr<Want> want = std::make_shared<Want>();
191     ElementName element("device", "bundleName", "abilityName");
192     want->SetElement(element);
193     bool value = true;
194     std::string key = "key";
195     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
196     wParams->SetParam(key, Boolean::Box(value));
197     unsigned int flags = 1;
198     flags |= FLAG_ONE_SHOT;
199     std::shared_ptr<PendingWant> pendingWant = nullptr;
200     PendingWant::GetAbility(GetAppContext(), requestCode, want, flags, wParams, pendingWant);
201     EXPECT_NE(pendingWant, nullptr);
202 }
203 
204 /*
205  * @tc.number    : PendingWant_0700
206  * @tc.name      : PendingWant GetAbilities
207  * @tc.desc      : 1.Get pendingWant (context is nullptr)
208  */
209 HWTEST_F(PendingWantTest, PendingWant_0700, Function | MediumTest | Level1)
210 {
211     int requestCode = 10;
212     std::shared_ptr<Want> want = std::make_shared<Want>();
213     ElementName element("device", "bundleName", "abilityName");
214     want->SetElement(element);
215     std::shared_ptr<Want> want2 = std::make_shared<Want>();
216     ElementName element2("device", "bundleName", "abilityName");
217     want2->SetElement(element2);
218     std::vector<std::shared_ptr<Want>> wants;
219     wants.emplace_back(want);
220     wants.emplace_back(want2);
221     unsigned int flags = 1;
222     flags |= FLAG_NO_CREATE;
223     std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbilities(
224         nullptr, requestCode, wants, flags);
225     EXPECT_EQ(pendingWant, nullptr);
226 }
227 
228 /*
229  * @tc.number    : PendingWant_0800
230  * @tc.name      : PendingWant GetAbilities
231  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
232  */
233 HWTEST_F(PendingWantTest, PendingWant_0800, Function | MediumTest | Level1)
234 {
235     int requestCode = 10;
236     std::shared_ptr<Want> want = std::make_shared<Want>();
237     ElementName element("device", "bundleName", "abilityName");
238     want->SetElement(element);
239     std::shared_ptr<Want> want2 = std::make_shared<Want>();
240     ElementName element2("device", "bundleName", "abilityName");
241     want2->SetElement(element2);
242     std::vector<std::shared_ptr<Want>> wants;
243     wants.emplace_back(want);
244     wants.emplace_back(want2);
245     unsigned int flags = 1;
246     flags |= FLAG_ONE_SHOT;
247     std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbilities(
248         GetAppContext(), requestCode, wants, flags);
249     EXPECT_NE(pendingWant, nullptr);
250 }
251 
252 /*
253  * @tc.number    : PendingWant_0900
254  * @tc.name      : PendingWant GetAbilities
255  * @tc.desc      : 1.Get pendingWant (options is not nullptr)
256  */
257 HWTEST_F(PendingWantTest, PendingWant_0900, Function | MediumTest | Level1)
258 {
259     int requestCode = 10;
260     std::shared_ptr<Want> want = std::make_shared<Want>();
261     ElementName element("device", "bundleName", "abilityName");
262     want->SetElement(element);
263     std::shared_ptr<Want> want2 = std::make_shared<Want>();
264     ElementName element2("device", "bundleName", "abilityName");
265     want2->SetElement(element2);
266     std::vector<std::shared_ptr<Want>> wants;
267     wants.emplace_back(want);
268     wants.emplace_back(want2);
269     bool value = true;
270     std::string key = "key";
271     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
272     wParams->SetParam(key, Boolean::Box(value));
273     unsigned int flags = 1;
274     flags |= FLAG_ONE_SHOT;
275     std::shared_ptr<PendingWant> pendingWant = nullptr;
276     PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
277     EXPECT_NE(pendingWant, nullptr);
278 }
279 
280 /*
281  * @tc.number    : PendingWant_1000
282  * @tc.name      : PendingWant GetCommonEventAsUser
283  * @tc.desc      : 1.Get pendingWant (context is nullptr)
284  */
285 HWTEST_F(PendingWantTest, PendingWant_1000, Function | MediumTest | Level1)
286 {
287     int requestCode = 10;
288     std::shared_ptr<Want> want = std::make_shared<Want>();
289     ElementName element("device", "bundleName", "abilityName");
290     want->SetElement(element);
291     unsigned int flags = 1;
292     flags |= FLAG_NO_CREATE;
293     std::shared_ptr<PendingWant> pendingWant = nullptr;
294     PendingWant::GetCommonEventAsUser(nullptr, requestCode, want, flags, 0, pendingWant);
295     EXPECT_EQ(pendingWant, nullptr);
296 }
297 
298 /*
299  * @tc.number    : PendingWant_1100
300  * @tc.name      : PendingWant GetCommonEventAsUser
301  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
302  */
303 HWTEST_F(PendingWantTest, PendingWant_1100, Function | MediumTest | Level1)
304 {
305     int requestCode = 10;
306     std::shared_ptr<Want> want = std::make_shared<Want>();
307     ElementName element("device", "bundleName", "abilityName");
308     want->SetElement(element);
309     unsigned int flags = 1;
310     flags |= FLAG_ONE_SHOT;
311     std::shared_ptr<PendingWant> pendingWant = nullptr;
312     PendingWant::GetCommonEventAsUser(GetAppContext(), requestCode, want, flags, 0, pendingWant);
313     EXPECT_NE(pendingWant, nullptr);
314 }
315 
316 /*
317  * @tc.number    : PendingWant_1200
318  * @tc.name      : PendingWant GetCommonEventAsUser
319  * @tc.desc      : 1.Get pendingWant (want is nullptr)
320  */
321 HWTEST_F(PendingWantTest, PendingWant_1200, Function | MediumTest | Level1)
322 {
323     int requestCode = 10;
324     std::shared_ptr<Want> want;
325     unsigned int flags = 1;
326     flags |= FLAG_ONE_SHOT;
327     std::shared_ptr<PendingWant> pendingWant = nullptr;
328     PendingWant::GetCommonEventAsUser(GetAppContext(), requestCode, want, flags, 0, pendingWant);
329     EXPECT_NE(pendingWant, nullptr);
330 }
331 
332 /*
333  * @tc.number    : PendingWant_1300
334  * @tc.name      : PendingWant GetService
335  * @tc.desc      : 1.Get pendingWant (want is nullptr)
336  */
337 HWTEST_F(PendingWantTest, PendingWant_1300, Function | MediumTest | Level1)
338 {
339     int requestCode = 10;
340     std::shared_ptr<Want> want;
341     unsigned int flags = 1;
342     flags |= FLAG_ONE_SHOT;
343     std::shared_ptr<PendingWant> pendingWant = nullptr;
344     PendingWant::GetService(GetAppContext(), requestCode, want, flags, pendingWant);
345     EXPECT_NE(pendingWant, nullptr);
346 }
347 
348 /*
349  * @tc.number    : PendingWant_1400
350  * @tc.name      : PendingWant GetService
351  * @tc.desc      : 1.Get pendingWant (context is nullptr)
352  */
353 HWTEST_F(PendingWantTest, PendingWant_1400, Function | MediumTest | Level1)
354 {
355     int requestCode = 10;
356     std::shared_ptr<Want> want = std::make_shared<Want>();
357     ElementName element("device", "bundleName", "abilityName");
358     want->SetElement(element);
359     unsigned int flags = 1;
360     flags |= FLAG_ONE_SHOT;
361     std::shared_ptr<PendingWant> pendingWant = nullptr;
362     PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
363     EXPECT_EQ(pendingWant, nullptr);
364 }
365 
366 /*
367  * @tc.number    : PendingWant_1500
368  * @tc.name      : PendingWant GetForegroundService
369  * @tc.desc      : 1.Get pendingWant (want is nullptr)
370  */
371 HWTEST_F(PendingWantTest, PendingWant_1500, Function | MediumTest | Level1)
372 {
373     int requestCode = 10;
374     std::shared_ptr<Want> want;
375     unsigned int flags = 1;
376     flags |= FLAG_ONE_SHOT;
377     std::shared_ptr<PendingWant> pendingWant = nullptr;
378     PendingWant::GetForegroundService(GetAppContext(), requestCode, want, flags, pendingWant);
379     EXPECT_NE(pendingWant, nullptr);
380 }
381 
382 /*
383  * @tc.number    : PendingWant_1600
384  * @tc.name      : PendingWant GetForegroundService
385  * @tc.desc      : 1.Get pendingWant (context is nullptr)
386  */
387 HWTEST_F(PendingWantTest, PendingWant_1600, Function | MediumTest | Level1)
388 {
389     int requestCode = 10;
390     std::shared_ptr<Want> want = std::make_shared<Want>();
391     ElementName element("device", "bundleName", "abilityName");
392     want->SetElement(element);
393     unsigned int flags = 1;
394     flags |= FLAG_NO_CREATE;
395     std::shared_ptr<PendingWant> pendingWant = nullptr;
396     PendingWant::GetForegroundService(nullptr, requestCode, want, flags, pendingWant);
397     EXPECT_EQ(pendingWant, nullptr);
398 }
399 
400 /*
401  * @tc.number    : PendingWant_1700
402  * @tc.name      : PendingWant GetForegroundService
403  * @tc.desc      : 1.Get pendingWant (want is nullptr)
404  */
405 HWTEST_F(PendingWantTest, PendingWant_1700, Function | MediumTest | Level1)
406 {
407     int requestCode = 10;
408     std::shared_ptr<Want> want;
409     unsigned int flags = 1;
410     flags |= FLAG_ONE_SHOT;
411     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
412     std::shared_ptr<PendingWant> pendingWant = nullptr;
413     PendingWant::BuildServicePendingWant(GetAppContext(), requestCode, want, flags, type, pendingWant);
414     EXPECT_NE(pendingWant, nullptr);
415 }
416 
417 /*
418  * @tc.number    : PendingWant_1800
419  * @tc.name      : PendingWant GetForegroundService
420  * @tc.desc      : 1.Get pendingWant (context is nullptr)
421  */
422 HWTEST_F(PendingWantTest, PendingWant_1800, Function | MediumTest | Level1)
423 {
424     int requestCode = 10;
425     std::shared_ptr<Want> want = std::make_shared<Want>();
426     ElementName element("device", "bundleName", "abilityName");
427     want->SetElement(element);
428     unsigned int flags = 1;
429     flags |= FLAG_NO_CREATE;
430     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
431     std::shared_ptr<PendingWant> pendingWant = nullptr;
432     PendingWant::BuildServicePendingWant(nullptr, requestCode, want, flags, type, pendingWant);
433     EXPECT_EQ(pendingWant, nullptr);
434 }
435 
436 /*
437  * @tc.number    : PendingWant_1900
438  * @tc.name      : PendingWant Equals
439  * @tc.desc      : 1.Equals
440  */
441 HWTEST_F(PendingWantTest, PendingWant_1900, Function | MediumTest | Level1)
442 {
443     int requestCode = 10;
444     std::shared_ptr<Want> want = std::make_shared<Want>();
445     ElementName element("device", "bundleName", "abilityName");
446     want->SetElement(element);
447     unsigned int flags = 1;
448     flags |= FLAG_ONE_SHOT;
449     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
450     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
451         AbilityRuntime::ApplicationContext::GetInstance();
452     std::shared_ptr<PendingWant> pendingWant = nullptr;
453     PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
454 
455     sptr<AAFwk::IWantSender> target2(nullptr);
456     std::shared_ptr<PendingWant> pendingWant2 = std::make_shared<PendingWant>(target2);
457     EXPECT_NE(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
458 }
459 
460 /*
461  * @tc.number    : PendingWant_2000
462  * @tc.name      : PendingWant Equals
463  * @tc.desc      : 1.Equals
464  */
465 HWTEST_F(PendingWantTest, PendingWant_2000, Function | MediumTest | Level1)
466 {
467     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
468     std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(target);
469     std::shared_ptr<PendingWant> pendingWant2(nullptr);
470     EXPECT_NE(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
471 }
472 
473 /*
474  * @tc.number    : PendingWant_2100
475  * @tc.name      : PendingWant SendAndReturnResult
476  * @tc.desc      : SendAndReturnResult
477  */
478 HWTEST_F(PendingWantTest, PendingWant_2100, Function | MediumTest | Level1)
479 {
480     PendingWant pendingWant(nullptr);
481     int requestCode = 10;
482     std::shared_ptr<Want> want = std::make_shared<Want>();
483     ElementName element("device", "bundleName", "abilityName");
484     want->SetElement(element);
485     bool value = true;
486     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
487     std::string key = "key";
488     wParams->SetParam(key, Boolean::Box(value));
489     unsigned int flags = 1;
490     flags |= FLAG_NO_CREATE;
491     AbilityManagerClient::GetInstance()->Connect();
492     sptr<CompletedDispatcher> onCompleted;
493     EXPECT_EQ(ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT, pendingWant.SendAndReturnResult(requestCode,
494         want, onCompleted, "Permission", nullptr, nullptr, nullptr, nullptr));
495 }
496 
497 /*
498  * @tc.number    : PendingWant_2400
499  * @tc.name      : PendingWant GetTarget
500  * @tc.desc      : 1.GetTarget
501  */
502 HWTEST_F(PendingWantTest, PendingWant_2400, Function | MediumTest | Level1)
503 {
504     PendingWant pendingWant(nullptr);
505     auto target = pendingWant.GetTarget();
506     EXPECT_EQ(target, nullptr);
507 }
508 
509 /*
510  * @tc.number    : PendingWant_2500
511  * @tc.name      : PendingWant GetTarget
512  * @tc.desc      : 1.GetTarget
513  */
514 HWTEST_F(PendingWantTest, PendingWant_2500, Function | MediumTest | Level1)
515 {
516     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
517     PendingWant pendingWant(target);
518     auto target1 = pendingWant.GetTarget();
519     EXPECT_EQ(target1, target);
520 }
521 
522 /*
523  * @tc.number    : PendingWant_2600
524  * @tc.name      : PendingWant RegisterCancelListener
525  * @tc.desc      : 1.RegisterCancelListener
526  */
527 HWTEST_F(PendingWantTest, PendingWant_2600, Function | MediumTest | Level1)
528 {
529     PendingWant pendingWant(nullptr);
530     std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
531     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
532     pendingWant.RegisterCancelListener(cancelListener1, nullptr);
533     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
534     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 2);
535 }
536 
537 /*
538  * @tc.number    : PendingWant_2700
539  * @tc.name      : PendingWant RegisterCancelListener
540  * @tc.desc      : 1.RegisterCancelListener
541  */
542 HWTEST_F(PendingWantTest, PendingWant_2700, Function | MediumTest | Level1)
543 {
544     PendingWant pendingWant(nullptr);
545     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
546     pendingWant.RegisterCancelListener(nullptr, nullptr);
547     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
548     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
549 }
550 
551 /*
552  * @tc.number    : PendingWant_2800
553  * @tc.name      : PendingWant RegisterCancelListener
554  * @tc.desc      : 1.RegisterCancelListener
555  */
556 HWTEST_F(PendingWantTest, PendingWant_2800, Function | MediumTest | Level1)
557 {
558     PendingWant pendingWant(nullptr);
559     pendingWant.RegisterCancelListener(nullptr, nullptr);
560     pendingWant.RegisterCancelListener(nullptr, nullptr);
561     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
562 }
563 
564 /*
565  * @tc.number    : PendingWant_2900
566  * @tc.name      : PendingWant NotifyCancelListeners
567  * @tc.desc      : 1.NotifyCancelListeners
568  */
569 HWTEST_F(PendingWantTest, PendingWant_2900, Function | MediumTest | Level1)
570 {
571     PendingWant pendingWant(nullptr);
572     std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
573     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
574     pendingWant.RegisterCancelListener(cancelListener1, nullptr);
575     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
576     pendingWant.NotifyCancelListeners(0);
577     EXPECT_EQ(callBackCancelListenerConnt, 2);
578     callBackCancelListenerConnt = 0;
579 }
580 
581 /*
582  * @tc.number    : PendingWant_3000
583  * @tc.name      : PendingWant NotifyCancelListeners
584  * @tc.desc      : 1.NotifyCancelListeners
585  */
586 HWTEST_F(PendingWantTest, PendingWant_3000, Function | MediumTest | Level1)
587 {
588     PendingWant pendingWant(nullptr);
589     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
590     pendingWant.RegisterCancelListener(nullptr, nullptr);
591     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
592     pendingWant.NotifyCancelListeners(0);
593     EXPECT_EQ(callBackCancelListenerConnt, 1);
594     callBackCancelListenerConnt = 0;
595 }
596 
597 /*
598  * @tc.number    : PendingWant_3100
599  * @tc.name      : PendingWant NotifyCancelListeners
600  * @tc.desc      : 1.NotifyCancelListeners
601  */
602 HWTEST_F(PendingWantTest, PendingWant_3100, Function | MediumTest | Level1)
603 {
604     PendingWant pendingWant(nullptr);
605     pendingWant.RegisterCancelListener(nullptr, nullptr);
606     pendingWant.RegisterCancelListener(nullptr, nullptr);
607     pendingWant.NotifyCancelListeners(0);
608     EXPECT_EQ(callBackCancelListenerConnt, 0);
609     callBackCancelListenerConnt = 0;
610 }
611 
612 /*
613  * @tc.number    : PendingWant_3200
614  * @tc.name      : PendingWant UnregisterCancelListener
615  * @tc.desc      : 1.UnregisterCancelListener
616  */
617 HWTEST_F(PendingWantTest, PendingWant_3200, Function | MediumTest | Level1)
618 {
619     PendingWant pendingWant(nullptr);
620     std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
621     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
622     pendingWant.RegisterCancelListener(cancelListener1, nullptr);
623     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
624     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 2);
625     pendingWant.UnregisterCancelListener(cancelListener1, nullptr);
626     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
627 }
628 
629 /*
630  * @tc.number    : PendingWant_3300
631  * @tc.name      : PendingWant UnregisterCancelListener
632  * @tc.desc      : 1.UnregisterCancelListener
633  */
634 HWTEST_F(PendingWantTest, PendingWant_3300, Function | MediumTest | Level1)
635 {
636     PendingWant pendingWant(nullptr);
637     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
638     pendingWant.RegisterCancelListener(nullptr, nullptr);
639     pendingWant.RegisterCancelListener(cancelListener2, nullptr);
640     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
641     pendingWant.UnregisterCancelListener(cancelListener2, nullptr);
642     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
643 }
644 
645 /*
646  * @tc.number    : PendingWant_3400
647  * @tc.name      : PendingWant UnregisterCancelListener
648  * @tc.desc      : 1.UnregisterCancelListener
649  */
650 HWTEST_F(PendingWantTest, PendingWant_3400, Function | MediumTest | Level1)
651 {
652     PendingWant pendingWant(nullptr);
653     pendingWant.UnregisterCancelListener(nullptr, nullptr);
654     EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
655 }
656 
657 /*
658  * @tc.number    : PendingWant_3500
659  * @tc.name      : PendingWant GetWant
660  * @tc.desc      : 1.GetWant
661  */
662 HWTEST_F(PendingWantTest, PendingWant_3500, Function | MediumTest | Level1)
663 {
664     PendingWant pendingWant(nullptr);
665     auto want = pendingWant.GetWant(nullptr);
666     EXPECT_EQ(want, nullptr);
667 }
668 
669 /*
670  * @tc.number    : PendingWant_3600
671  * @tc.name      : PendingWant Equals
672  * @tc.desc      : Equals
673  */
674 HWTEST_F(PendingWantTest, PendingWant_3700, Function | MediumTest | Level1)
675 {
676     std::shared_ptr<PendingWant> pendingWant(nullptr);
677     std::shared_ptr<PendingWant> pendingWant2(nullptr);
678     EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
679 }
680 
681 /*
682  * @tc.number    : PendingWant_3800
683  * @tc.name      : Marshalling_01
684  * @tc.desc      : test Marshalling function when target is null
685  * tc.issue      : I5TGRZ
686  */
687 HWTEST_F(PendingWantTest, PendingWant_3800, Function | MediumTest | Level1)
688 {
689     PendingWant pendingWant(nullptr);
690     Parcel parcel;
691     bool ret = pendingWant.Marshalling(parcel);
692     EXPECT_EQ(ret, false);
693 }
694 
695 /*
696  * @tc.number    : PendingWant_3900
697  * @tc.name      : Marshalling_02
698  * @tc.desc      : test Marshalling function when target is target
699  * tc.issue      : I5TGRZ
700  */
701 HWTEST_F(PendingWantTest, PendingWant_3900, Function | MediumTest | Level1)
702 {
703     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
704     PendingWant pendingWant(target);
705     MessageParcel parcel;
706     bool ret = pendingWant.Marshalling(parcel);
707     EXPECT_EQ(ret, true);
708 }
709 
710 /*
711  * @tc.number    : PendingWant_4000
712  * @tc.name      : PendingWant GetType
713  * @tc.desc      : 1.Get PendingWant Type (UNKNOWN_TYPE)
714  */
715 HWTEST_F(PendingWantTest, PendingWant_4000, Function | MediumTest | Level1)
716 {
717     sptr<AAFwk::IWantSender> target = nullptr;
718     PendingWant pendingWant(target);
719     EXPECT_EQ(pendingWant.target_, target);
720     int32_t type = static_cast<int32_t>(WantAgentConstant::OperationType::UNKNOWN_TYPE);
721     EXPECT_EQ(pendingWant.GetType(target, type), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
722     EXPECT_EQ(type, static_cast<int32_t>(WantAgentConstant::OperationType::UNKNOWN_TYPE));
723 }
724 
725 /*
726  * @tc.number    : PendingWant_4100
727  * @tc.name      : PendingWant GetWant
728  * @tc.desc      : 1.GetWant
729  */
730 HWTEST_F(PendingWantTest, PendingWant_4100, Function | MediumTest | Level1)
731 {
732     sptr<AAFwk::IWantSender> target = nullptr;
733     PendingWant pendingWant(target);
734     EXPECT_EQ(pendingWant.target_, target);
735     std::shared_ptr<AAFwk::Want> want(nullptr);
736     EXPECT_EQ(pendingWant.GetWant(target, want), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
737     EXPECT_EQ(want, nullptr);
738 }
739 
740 /*
741  * @tc.number    : PendingWant_4200
742  * @tc.name      : PendingWant GetBundleName
743  * @tc.desc      : 1.GetBundleName
744  */
745 HWTEST_F(PendingWantTest, PendingWant_4200, Function | MediumTest | Level1)
746 {
747     PendingWant pendingWant(nullptr);
748     std::string bundleName = "";
749     pendingWant.GetBundleName(nullptr, bundleName);
750     EXPECT_EQ(bundleName, "");
751 }
752 
753 /*
754  * @tc.number    : PendingWant_4300
755  * @tc.name      : PendingWant GetUid
756  * @tc.desc      : 1.GetUid
757  */
758 HWTEST_F(PendingWantTest, PendingWant_4300, Function | MediumTest | Level1)
759 {
760     auto pendingWant = std::make_shared<PendingWant>(nullptr);
761     EXPECT_NE(pendingWant, nullptr);
762     int32_t uid = -1;
763     pendingWant->GetUid(nullptr, uid);
764 }
765 
766 /*
767  * @tc.number    : PendingWant_4700
768  * @tc.name      : PendingWant Send
769  * @tc.desc      : Send
770  */
771 HWTEST_F(PendingWantTest, PendingWant_4700, Function | MediumTest | Level1)
772 {
773     GTEST_LOG_(INFO) << "PendingWant_4700 start";
774     auto pendingWant = std::make_shared<PendingWant>(nullptr);
775     int requestCode = 10;
776     sptr<CompletedDispatcher> onCompleted;
777     sptr<AAFwk::IWantSender> target;
778     pendingWant->Send(requestCode, onCompleted, target);
779     EXPECT_TRUE(pendingWant != nullptr);
780     GTEST_LOG_(INFO) << "PendingWant_4700 end";
781 }
782 
783 /*
784  * @tc.number    : PendingWant_4800
785  * @tc.name      : PendingWant Send
786  * @tc.desc      : Send
787  */
788 HWTEST_F(PendingWantTest, PendingWant_4800, Function | MediumTest | Level1)
789 {
790     GTEST_LOG_(INFO) << "PendingWant_4800 start";
791     auto pendingWant = std::make_shared<PendingWant>(nullptr);
792     int requestCode = 10;
793     std::shared_ptr<Want> want = std::make_shared<Want>();
794     ElementName element("device", "bundleName", "abilityName");
795     want->SetElement(element);
796     sptr<CompletedDispatcher> onCompleted;
797     sptr<AAFwk::IWantSender> target;
798     pendingWant->Send(requestCode, want, onCompleted, target);
799     EXPECT_TRUE(pendingWant != nullptr);
800     GTEST_LOG_(INFO) << "PendingWant_4800 end";
801 }
802 
803 /*
804  * @tc.number    : PendingWant_4900
805  * @tc.name      : PendingWant Send
806  * @tc.desc      : Send
807  */
808 HWTEST_F(PendingWantTest, PendingWant_4900, Function | MediumTest | Level1)
809 {
810     GTEST_LOG_(INFO) << "PendingWant_4900 start";
811     auto pendingWant = std::make_shared<PendingWant>(nullptr);
812     int requestCode = 10;
813     std::shared_ptr<Want> want = std::make_shared<Want>();
814     ElementName element("device", "bundleName", "abilityName");
815     want->SetElement(element);
816     sptr<CompletedDispatcher> onCompleted = nullptr;
817     std::string requiredPermission = "Permission";
818     sptr<AAFwk::IWantSender> target;
819     pendingWant->Send(requestCode, want, onCompleted, requiredPermission, target);
820     EXPECT_TRUE(pendingWant != nullptr);
821     GTEST_LOG_(INFO) << "PendingWant_4900 end";
822 }
823 
824 /*
825  * @tc.number    : PendingWant_5000
826  * @tc.name      : PendingWant Send
827  * @tc.desc      : Send
828  */
829 HWTEST_F(PendingWantTest, PendingWant_5000, Function | MediumTest | Level1)
830 {
831     GTEST_LOG_(INFO) << "PendingWant_5000 start";
832     PendingWant pendingWant(nullptr);
833     int requestCode = 10;
834     std::shared_ptr<Want> want = std::make_shared<Want>();
835     ElementName element("device", "bundleName", "abilityName");
836     want->SetElement(element);
837     sptr<CompletedDispatcher> onCompleted;
838     std::string requiredPermission = "Permission";
839     std::shared_ptr<WantParams> options;
840     std::shared_ptr<StartOptions> startOptions = nullptr;
841     sptr<AAFwk::IWantSender> target;
842     auto result = pendingWant.Send(requestCode, want, onCompleted,
843         requiredPermission, options, startOptions, target, nullptr);
844     EXPECT_EQ(result, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
845     GTEST_LOG_(INFO) << "PendingWant_5000 end";
846 }
847 
848 /*
849  * @tc.number    : PendingWant_5100
850  * @tc.name      : PendingWant SetTarget
851  * @tc.desc      : SetTarget
852  */
853 HWTEST_F(PendingWantTest, PendingWant_5100, Function | MediumTest | Level1)
854 {
855     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
856     PendingWant pendingWant(nullptr);
857     auto target1 = pendingWant.GetTarget();
858     pendingWant.SetTarget(target);
859     auto target2 = pendingWant.GetTarget();
860     EXPECT_EQ(target1, nullptr);
861     EXPECT_EQ(target2, target);
862 }
863 
864 /*
865  * @tc.number    : PendingWant_5200
866  * @tc.name      : Unmarshalling_01
867  * @tc.desc      : Test Unmarshalling function when target is null
868  */
869 HWTEST_F(PendingWantTest, PendingWant_5200, Function | MediumTest | Level1)
870 {
871     sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
872     PendingWant pendingWant(target);
873     MessageParcel parcel;
874     pendingWant.Unmarshalling(parcel);
875     auto target1 = pendingWant.GetTarget();
876     EXPECT_EQ(target1, target);
877 }
878 
879 /*
880  * @tc.number    : PendingWant_5300
881  * @tc.name      : PendingWant GetWantSenderInfo
882  * @tc.desc      : GetWantSenderInfo
883  */
884 HWTEST_F(PendingWantTest, PendingWant_5300, Function | MediumTest | Level1)
885 {
886     PendingWant pendingWant(nullptr);
887     auto wantsenderinfo = pendingWant.GetWantSenderInfo(nullptr);
888     EXPECT_EQ(wantsenderinfo, nullptr);
889 }
890 
891 /*
892  * @tc.number    : PendingWant_5400
893  * @tc.name      : PendingWant NotifyCancelListeners
894  * @tc.desc      : NotifyCancelListeners
895  */
896 HWTEST_F(PendingWantTest, PendingWant_5400, Function | MediumTest | Level1)
897 {
898     std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(nullptr);
899     std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
900     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
901     pendingWant->RegisterCancelListener(cancelListener1, nullptr);
902     pendingWant->RegisterCancelListener(cancelListener2, nullptr);
903     std::weak_ptr<PendingWant> outerInstance(pendingWant);
904     PendingWant::CancelReceiver cancelreceiver(outerInstance);
905     cancelreceiver.Send(0);
906 
907     EXPECT_EQ(callBackCancelListenerConnt, 2);
908     callBackCancelListenerConnt = 0;
909 }
910 
911 /*
912  * @tc.number    : PendingWant_5500
913  * @tc.name      : PendingWant GetAbilitys
914  * @tc.desc      : 1.Get pendingWant (context is nullptr)
915  */
916 HWTEST_F(PendingWantTest, PendingWant_5500, Function | MediumTest | Level1)
917 {
918     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5500 start.");
919     int requestCode = 10;
920     std::shared_ptr<Want> want = std::make_shared<Want>();
921     ElementName element("device", "bundleName", "abilityName");
922     want->SetElement(element);
923     std::shared_ptr<Want> want2 = std::make_shared<Want>();
924     ElementName element2("device", "bundleName", "abilityName");
925     want2->SetElement(element2);
926     std::vector<std::shared_ptr<Want>> wants;
927     wants.emplace_back(want);
928     wants.emplace_back(want2);
929     bool value = true;
930     std::string key = "key";
931     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
932     wParams->SetParam(key, Boolean::Box(value));
933     unsigned int flags = 1;
934     flags |= FLAG_NO_CREATE;
935     std::shared_ptr<PendingWant> pendingWant;
936     ErrCode err = PendingWant::GetAbilities(nullptr, requestCode, wants, flags, wParams, pendingWant);
937     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
938     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5500 end.");
939 }
940 
941 /*
942  * @tc.number    : PendingWant_5600
943  * @tc.name      : PendingWant GetAbilities
944  * @tc.desc      : 1.Get pendingWant (context is not nullptr FLAG_NO_CREATE)
945  */
946 HWTEST_F(PendingWantTest, PendingWant_5600, Function | MediumTest | Level1)
947 {
948     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5600 start.");
949     int requestCode = 10;
950     std::shared_ptr<Want> want = std::make_shared<Want>();
951     ElementName element("device", "bundleName", "abilityName");
952     want->SetElement(element);
953     std::shared_ptr<Want> want2 = std::make_shared<Want>();
954     ElementName element2("device", "bundleName", "abilityName");
955     want2->SetElement(element2);
956     std::vector<std::shared_ptr<Want>> wants;
957     wants.emplace_back(want);
958     wants.emplace_back(want2);
959     bool value = true;
960     std::string key = "key";
961     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
962     wParams->SetParam(key, Boolean::Box(value));
963     unsigned int flags = 1;
964     flags |= FLAG_NO_CREATE;
965     std::shared_ptr<PendingWant> pendingWant;
966     ErrCode err = PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
967     EXPECT_EQ(err, ERR_OK);
968     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5600 end.");
969 }
970 
971 /*
972  * @tc.number    : PendingWant_5700
973  * @tc.name      : PendingWant GetAbilities
974  * @tc.desc      : 1.Get pendingWant (context is not nullptr FLAG_ONE_SHOT)
975  */
976 HWTEST_F(PendingWantTest, PendingWant_5700, Function | MediumTest | Level1)
977 {
978     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5700 start.");
979     int requestCode = 10;
980     std::shared_ptr<Want> want = std::make_shared<Want>();
981     ElementName element("device", "bundleName", "abilityName");
982     want->SetElement(element);
983     std::shared_ptr<Want> want2 = std::make_shared<Want>();
984     ElementName element2("device", "bundleName", "abilityName");
985     want2->SetElement(element2);
986     std::vector<std::shared_ptr<Want>> wants;
987     wants.emplace_back(want);
988     wants.emplace_back(want2);
989     bool value = true;
990     std::string key = "key";
991     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
992     wParams->SetParam(key, Boolean::Box(value));
993     unsigned int flags = 1;
994     flags |= FLAG_ONE_SHOT;
995     std::shared_ptr<PendingWant> pendingWant;
996     ErrCode err = PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
997     EXPECT_EQ(err, ERR_OK);
998     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5700 end.");
999 }
1000 
1001 /*
1002  * @tc.number    : PendingWant_5800
1003  * @tc.name      : PendingWant GetAbilitie
1004  * @tc.desc      : 1.Get pendingWant (context is nullptr)
1005  */
1006 HWTEST_F(PendingWantTest, PendingWant_5800, Function | MediumTest | Level1)
1007 {
1008     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5800 start.");
1009     int requestCode = 10;
1010     std::shared_ptr<Want> want = std::make_shared<Want>();
1011     ElementName element("device", "bundleName", "abilityName");
1012     want->SetElement(element);
1013     bool value = true;
1014     std::string key = "key";
1015     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
1016     wParams->SetParam(key, Boolean::Box(value));
1017     unsigned int flags = 1;
1018     flags |= FLAG_ONE_SHOT;
1019     std::shared_ptr<PendingWant> pendingWant;
1020     ErrCode err = PendingWant::GetAbility(nullptr, requestCode, want, flags, wParams, pendingWant);
1021     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1022     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5800 end.");
1023 }
1024 
1025 /*
1026  * @tc.number    : PendingWant_5800
1027  * @tc.name      : PendingWant GetAbilitie
1028  * @tc.desc      : 1.Get pendingWant (context not nullptr)
1029  */
1030 HWTEST_F(PendingWantTest, PendingWant_5900, Function | MediumTest | Level1)
1031 {
1032     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5900 start.");
1033     int requestCode = 10;
1034     std::shared_ptr<Want> want = std::make_shared<Want>();
1035     ElementName element("device", "bundleName", "abilityName");
1036     want->SetElement(element);
1037     bool value = true;
1038     std::string key = "key";
1039     std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
1040     wParams->SetParam(key, Boolean::Box(value));
1041     unsigned int flags = 1;
1042     flags |= FLAG_ONE_SHOT;
1043     std::shared_ptr<PendingWant> pendingWant;
1044     ErrCode err = PendingWant::GetAbility(GetAppContext(), requestCode, want, flags, wParams, pendingWant);
1045     EXPECT_EQ(err, ERR_OK);
1046     TAG_LOGI(AAFwkTag::TEST, "PendingWant_5900 end.");
1047 }
1048 
1049 /*
1050  * @tc.number    : PendingWant_6000
1051  * @tc.name      : PendingWant GetCommonEvent
1052  * @tc.desc      : 1.Get pendingWant (context is nullptr)
1053  */
1054 HWTEST_F(PendingWantTest, PendingWant_6000, Function | MediumTest | Level1)
1055 {
1056     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6000 start.");
1057     int requestCode = 10;
1058     std::shared_ptr<Want> want = std::make_shared<Want>();
1059     ElementName element("device", "bundleName", "abilityName");
1060     want->SetElement(element);
1061     unsigned int flags = 1;
1062     flags |= FLAG_NO_CREATE;
1063     std::shared_ptr<PendingWant> pendingWant;
1064     ErrCode err = PendingWant::GetCommonEvent(nullptr, requestCode, want, flags, pendingWant);
1065     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1066     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6000 end.");
1067 }
1068 
1069 /*
1070  * @tc.number    : PendingWant_6100
1071  * @tc.name      : PendingWant GetCommonEvent
1072  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
1073  */
1074 HWTEST_F(PendingWantTest, PendingWant_6100, Function | MediumTest | Level1)
1075 {
1076     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6100 start.");
1077     int requestCode = 10;
1078     std::shared_ptr<Want> want = std::make_shared<Want>();
1079     ElementName element("device", "bundleName", "abilityName");
1080     want->SetElement(element);
1081     unsigned int flags = 1;
1082     flags |= FLAG_ONE_SHOT;
1083     std::shared_ptr<PendingWant> pendingWant;
1084     ErrCode err = PendingWant::GetCommonEvent(GetAppContext(), requestCode, want, flags, pendingWant);
1085     EXPECT_EQ(err, ERR_OK);
1086     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6100 end.");
1087 }
1088 
1089 /*
1090  * @tc.number    : PendingWant_6200
1091  * @tc.name      : PendingWant GetService
1092  * @tc.desc      : 1.Get pendingWant (context is nullptr)
1093  */
1094 HWTEST_F(PendingWantTest, PendingWant_6200, Function | MediumTest | Level1)
1095 {
1096     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6200 start.");
1097     int requestCode = 10;
1098     std::shared_ptr<Want> want = std::make_shared<Want>();
1099     ElementName element("device", "bundleName", "abilityName");
1100     want->SetElement(element);
1101     unsigned int flags = 1;
1102     flags |= FLAG_NO_CREATE;
1103     std::shared_ptr<PendingWant> pendingWant;
1104     ErrCode err = PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
1105     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1106     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6200 end.");
1107 }
1108 
1109 /*
1110  * @tc.number    : PendingWant_6300
1111  * @tc.name      : PendingWant GetService
1112  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
1113  */
1114 HWTEST_F(PendingWantTest, PendingWant_6300, Function | MediumTest | Level1)
1115 {
1116     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6300 start.");
1117     int requestCode = 10;
1118     std::shared_ptr<Want> want = std::make_shared<Want>();
1119     ElementName element("device", "bundleName", "abilityName");
1120     want->SetElement(element);
1121     unsigned int flags = 1;
1122     flags |= FLAG_NO_CREATE;
1123     std::shared_ptr<PendingWant> pendingWant;
1124     ErrCode err = PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
1125     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1126     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6300 end.");
1127 }
1128 
1129 /*
1130  * @tc.number    : PendingWant_6400
1131  * @tc.name      : PendingWant GetService
1132  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
1133  */
1134 HWTEST_F(PendingWantTest, PendingWant_6400, Function | MediumTest | Level1)
1135 {
1136     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6400 start.");
1137     int requestCode = 10;
1138     std::shared_ptr<Want> want = std::make_shared<Want>();
1139     ElementName element("device", "bundleName", "abilityName");
1140     want->SetElement(element);
1141     unsigned int flags = 1;
1142     flags |= FLAG_ONE_SHOT;
1143     std::shared_ptr<PendingWant> pendingWant;
1144     ErrCode err = PendingWant::GetService(GetAppContext(), requestCode, want, flags, pendingWant);
1145     EXPECT_EQ(err, ERR_OK);
1146     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6400 end.");
1147 }
1148 
1149 /*
1150  * @tc.number    : PendingWant_6500
1151  * @tc.name      : PendingWant GetService
1152  * @tc.desc      : 1.Get pendingWant (context is not nullptr)
1153  */
1154 HWTEST_F(PendingWantTest, PendingWant_6500, Function | MediumTest | Level1)
1155 {
1156     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 start.");
1157     int requestCode = 10;
1158     std::shared_ptr<Want> want = std::make_shared<Want>();
1159     ElementName element("device", "bundleName", "abilityName");
1160     want->SetElement(element);
1161     unsigned int flags = 1;
1162     flags |= FLAG_NO_CREATE;
1163     std::shared_ptr<PendingWant> pendingWant;
1164     ErrCode err = PendingWant::GetForegroundService(GetAppContext(), requestCode, want, flags, pendingWant);
1165     EXPECT_EQ(err, ERR_OK);
1166     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 start.");
1167 }
1168 
1169 /*
1170  * @tc.number    : PendingWant_6600
1171  * @tc.name      : PendingWant GetService
1172  * @tc.desc      : 1.Get pendingWant (context is nullptr)
1173  */
1174 HWTEST_F(PendingWantTest, PendingWant_6600, Function | MediumTest | Level1)
1175 {
1176     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6600 start.");
1177     int requestCode = 10;
1178     std::shared_ptr<Want> want = std::make_shared<Want>();
1179     ElementName element("device", "bundleName", "abilityName");
1180     want->SetElement(element);
1181     unsigned int flags = 1;
1182     flags |= FLAG_NO_CREATE;
1183     std::shared_ptr<PendingWant> pendingWant;
1184     ErrCode err = PendingWant::GetForegroundService(nullptr, requestCode, want, flags, pendingWant);
1185     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1186     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 end.");
1187 }
1188 
1189 /*
1190  * @tc.number    : PendingWant_6700
1191  * @tc.name      : PendingWant Cancel
1192  * @tc.desc      : Cancel a WantAgent
1193  */
1194 HWTEST_F(PendingWantTest, PendingWant_6700, Function | MediumTest | Level1)
1195 {
1196     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6700 start.");
1197     sptr<AAFwk::IWantSender> target = nullptr;
1198     std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>();
1199     ErrCode err = pendingWant->Cancel(target);
1200     ErrCode err1 = WantAgentClient::GetInstance().CancelWantSender(target);
1201     EXPECT_EQ(err, err1);
1202     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6700 end.");
1203 }
1204 
1205 /*
1206  * @tc.number    : PendingWant_6800
1207  * @tc.name      : PendingWant IsEquals
1208  * @tc.desc      : 1.IsEquals
1209  */
1210 HWTEST_F(PendingWantTest, PendingWant_6800, Function | MediumTest | Level1)
1211 {
1212     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6800 start.");
1213     int requestCode = 10;
1214     std::shared_ptr<Want> want = std::make_shared<Want>();
1215     ElementName element("device", "bundleName", "abilityName");
1216     want->SetElement(element);
1217     unsigned int flags = 1;
1218     flags |= FLAG_ONE_SHOT;
1219     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1220     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1221         AbilityRuntime::ApplicationContext::GetInstance();
1222     std::shared_ptr<PendingWant> pendingWant = nullptr;
1223     PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
1224 
1225     sptr<AAFwk::IWantSender> target(nullptr);
1226     std::shared_ptr<PendingWant> pendingWant2 = std::make_shared<PendingWant>(target);
1227     EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
1228     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6800 end.");
1229 }
1230 
1231 /*
1232  * @tc.number    : PendingWant_6900
1233  * @tc.name      : PendingWant IsEquals
1234  * @tc.desc      : 1.IsEquals
1235  */
1236 HWTEST_F(PendingWantTest, PendingWant_6900, Function | MediumTest | Level1)
1237 {
1238     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6900 start.");
1239     int requestCode = 10;
1240     std::shared_ptr<Want> want = std::make_shared<Want>();
1241     ElementName element("device", "bundleName", "abilityName");
1242     want->SetElement(element);
1243     unsigned int flags = 1;
1244     flags |= FLAG_ONE_SHOT;
1245     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1246     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1247         AbilityRuntime::ApplicationContext::GetInstance();
1248     std::shared_ptr<PendingWant> pendingWant = nullptr;
1249     PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
1250 
1251     std::shared_ptr<PendingWant> pendingWant2 = nullptr;
1252     PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant2);
1253     EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
1254     TAG_LOGI(AAFwkTag::TEST, "PendingWant_6900 end.");
1255 }
1256 
1257 /*
1258  * @tc.number    : PendingWant_7000
1259  * @tc.name      : PendingWant IsEquals
1260  * @tc.desc      : 1.IsEquals
1261  */
1262 HWTEST_F(PendingWantTest, PendingWant_7000, Function | MediumTest | Level1)
1263 {
1264     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7000 start.");
1265     int requestCode = 10;
1266     std::shared_ptr<Want> want1 = std::make_shared<Want>();
1267     ElementName element1("ohos_device", "bundleName", "abilityName");
1268     want1->SetElement(element1);
1269     unsigned int flags = 1;
1270     flags |= FLAG_ONE_SHOT;
1271     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1272     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1273         AbilityRuntime::ApplicationContext::GetInstance();
1274     std::shared_ptr<PendingWant> pendingWant = nullptr;
1275     PendingWant::BuildServicePendingWant(context, requestCode, want1, flags, type, pendingWant);
1276 
1277     std::shared_ptr<Want> want2 = std::make_shared<Want>();
1278     ElementName element2("ohos_device", "ohos_bundleName", "ohos_abilityName");
1279     want2->SetElement(element2);
1280     std::shared_ptr<PendingWant> pendingWant2 = nullptr;
1281     PendingWant::BuildServicePendingWant(context, requestCode, want2, flags, type, pendingWant2);
1282     EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), NOTEQ);
1283     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7000 end.");
1284 }
1285 
1286 /*
1287  * @tc.number    : PendingWant_7100
1288  * @tc.name      : PendingWant GetBundleName
1289  * @tc.desc      : 1.GetBundleName
1290  */
1291 HWTEST_F(PendingWantTest, PendingWant_7100, Function | MediumTest | Level1)
1292 {
1293     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7100 start.");
1294     PendingWant pendingWant(nullptr);
1295     std::string bundleName;
1296     ErrCode err = pendingWant.GetBundleName(nullptr, bundleName);
1297     EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
1298     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7100 end.");
1299 }
1300 
1301 /*
1302  * @tc.number    : PendingWant_7200
1303  * @tc.name      : PendingWant GetBundleName
1304  * @tc.desc      : 1.GetBundleName
1305  */
1306 HWTEST_F(PendingWantTest, PendingWant_7200, Function | MediumTest | Level1)
1307 {
1308     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7200 start.");
1309     int requestCode = 10;
1310     std::shared_ptr<Want> want1 = std::make_shared<Want>();
1311     ElementName element1("ohos_device", "bundleName", "abilityName");
1312     want1->SetElement(element1);
1313     unsigned int flags = 1;
1314     flags |= FLAG_ONE_SHOT;
1315     WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1316     std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1317         AbilityRuntime::ApplicationContext::GetInstance();
1318     std::shared_ptr<PendingWant> pendingWant = nullptr;
1319     PendingWant::BuildServicePendingWant(context, requestCode, want1, flags, type, pendingWant);
1320 
1321     std::string bundleName;
1322     ErrCode err = pendingWant->GetBundleName(pendingWant->GetTarget(), bundleName);
1323     EXPECT_EQ(err, ERR_OK);
1324     TAG_LOGI(AAFwkTag::TEST, "PendingWant_7200 start.");
1325 }
1326 
1327 /*
1328  * @tc.number    : PendingWant_7300
1329  * @tc.name      : PendingWant PerformReceive
1330  * @tc.desc      : 1.PerformReceive
1331  */
1332 HWTEST_F(PendingWantTest, PendingWant_7300, Function | MediumTest | Level1)
1333 {
1334     std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(nullptr);
1335     std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
1336     std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
1337     pendingWant->RegisterCancelListener(cancelListener1, nullptr);
1338     pendingWant->RegisterCancelListener(cancelListener2, nullptr);
1339     std::weak_ptr<PendingWant> outerInstance(pendingWant);
1340     PendingWant::CancelReceiver cancelreceiver(outerInstance);
1341     AAFwk::Want want;
1342     int resultCode = 1;
1343     std::string data = "";
1344     AAFwk::WantParams extras;
1345     bool serialized = true;
1346     bool sticky = true;
1347     int sendingUser = 1;
1348     cancelreceiver.PerformReceive(want, resultCode, data, extras, serialized, sticky, sendingUser);
1349 
1350     EXPECT_EQ(callBackCancelListenerConnt, 0);
1351     callBackCancelListenerConnt = 0;
1352 }
1353 
1354 /*
1355  * @tc.number    : PendingWant_7400
1356  * @tc.name      : PendingWant GetServiceExtension
1357  * @tc.desc      : 1.Get pendingWant (want is nullptr)
1358  */
1359 HWTEST_F(PendingWantTest, PendingWant_7400, Function | MediumTest | Level1)
1360 {
1361     int requestCode = 10;
1362     std::shared_ptr<Want> want;
1363     unsigned int flags = 1;
1364     flags |= FLAG_ONE_SHOT;
1365     std::shared_ptr<PendingWant> pendingWant = nullptr;
1366     PendingWant::GetServiceExtension(GetAppContext(), requestCode, want, flags, pendingWant);
1367     EXPECT_NE(pendingWant, nullptr);
1368 }
1369 
1370 /*
1371  * @tc.number    : PendingWant_7500
1372  * @tc.name      : PendingWant GetServiceExtension
1373  * @tc.desc      : 1.Get pendingWant (context is nullptr)
1374  */
1375 HWTEST_F(PendingWantTest, PendingWant_7500, Function | MediumTest | Level1)
1376 {
1377     int requestCode = 10;
1378     std::shared_ptr<Want> want = std::make_shared<Want>();
1379     ElementName element("device", "bundleName", "abilityName");
1380     want->SetElement(element);
1381     unsigned int flags = 1;
1382     flags |= FLAG_NO_CREATE;
1383     std::shared_ptr<PendingWant> pendingWant = nullptr;
1384     PendingWant::GetServiceExtension(nullptr, requestCode, want, flags, pendingWant);
1385     EXPECT_EQ(pendingWant, nullptr);
1386 }
1387 }  // namespace OHOS::AbilityRuntime::WantAgent
1388