1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <gtest/gtest.h> 17 #include "completed_callback.h" 18 #define private public 19 #define protected public 20 #include "completed_dispatcher.h" 21 #undef private 22 #undef protected 23 #include "element_name.h" 24 #include "event_handler.h" 25 #include "pending_want.h" 26 #include "base_types.h" 27 #include "want.h" 28 #include "want_params.h" 29 #include "want_receiver_stub.h" 30 #include "bool_wrapper.h" 31 32 using namespace testing::ext; 33 using namespace OHOS::AAFwk; 34 using namespace OHOS; 35 using OHOS::AppExecFwk::ElementName; 36 using namespace OHOS::AppExecFwk; 37 using vector_str = std::vector<std::string>; 38 namespace { 39 const int32_t SEND_FINISHED_CODE = 100; 40 } 41 42 namespace OHOS::AbilityRuntime::WantAgent { 43 class CompletedDispatcherTest : public testing::Test { 44 public: CompletedDispatcherTest()45 CompletedDispatcherTest() 46 {} ~CompletedDispatcherTest()47 ~CompletedDispatcherTest() 48 {} 49 static void SetUpTestCase(void); 50 static void TearDownTestCase(void); 51 void SetUp(); 52 void TearDown(); 53 Want MakeWant(std::string deviceId, std::string abilityName, std::string bundleName); 54 55 class CompletedCallbackSon : public CompletedCallback { 56 /** 57 * Called when a Send operation as completed. 58 * 59 * @param want The original Want that was sent. 60 * @param resultCode The final result code determined by the Send. 61 * @param resultData The final data collected by a broadcast. 62 * @param resultExtras The final extras collected by a broadcast. 63 */ 64 public: 65 void OnSendFinished(const AAFwk::Want& want, int resultCode, const std::string& resultData, 66 const AAFwk::WantParams& resultExtras) override; 67 static int code; 68 }; 69 }; 70 71 int CompletedDispatcherTest::CompletedCallbackSon::code = 0; 72 OnSendFinished(const AAFwk::Want & want,int resultCode,const std::string & resultData,const AAFwk::WantParams & resultExtras)73 void CompletedDispatcherTest::CompletedCallbackSon::OnSendFinished( 74 const AAFwk::Want& want, int resultCode, const std::string& resultData, const AAFwk::WantParams& resultExtras) 75 { 76 code = SEND_FINISHED_CODE; 77 } 78 MakeWant(std::string deviceId,std::string abilityName,std::string bundleName)79 Want CompletedDispatcherTest::MakeWant(std::string deviceId, std::string abilityName, std::string bundleName) 80 { 81 ElementName element(deviceId, bundleName, abilityName); 82 Want want; 83 want.SetElement(element); 84 return want; 85 } 86 SetUpTestCase(void)87 void CompletedDispatcherTest::SetUpTestCase(void) 88 {} 89 TearDownTestCase(void)90 void CompletedDispatcherTest::TearDownTestCase(void) 91 {} 92 SetUp(void)93 void CompletedDispatcherTest::SetUp(void) 94 {} 95 TearDown(void)96 void CompletedDispatcherTest::TearDown(void) 97 {} 98 99 /* 100 * @tc.number : CompletedDispatcher_0100 101 * @tc.name : CompletedDispatcher Constructors 102 * @tc.desc : 1.The parameter is nullptr 103 */ 104 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0100, Function | MediumTest | Level1) 105 { 106 CompletedDispatcher completedDispatcher(nullptr, nullptr, nullptr); 107 EXPECT_EQ(completedDispatcher.pendingWant_, nullptr); 108 EXPECT_EQ(completedDispatcher.callback_, nullptr); 109 EXPECT_EQ(completedDispatcher.handler_, nullptr); 110 } 111 112 /* 113 * @tc.number : CompletedDispatcher_0200 114 * @tc.name : CompletedDispatcher Constructors 115 * @tc.desc : 1.The parameter is not nullptr 116 */ 117 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0200, Function | MediumTest | Level1) 118 { 119 std::shared_ptr<CompletedDispatcherTest::CompletedCallbackSon> callBack = 120 std::make_shared<CompletedDispatcherTest::CompletedCallbackSon>(); 121 CompletedDispatcher completedDispatcher(nullptr, callBack, nullptr); 122 EXPECT_EQ(completedDispatcher.pendingWant_, nullptr); 123 EXPECT_EQ(completedDispatcher.callback_, callBack); 124 EXPECT_EQ(completedDispatcher.handler_, nullptr); 125 } 126 127 /* 128 * @tc.number : CompletedDispatcher_0300 129 * @tc.name : CompletedDispatcher PerformReceive 130 * @tc.desc : 1.The parameter is not nullptr 131 */ 132 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0300, Function | MediumTest | Level1) 133 { 134 std::shared_ptr<CompletedDispatcherTest::CompletedCallbackSon> callBack = 135 std::make_shared<CompletedDispatcherTest::CompletedCallbackSon>(); 136 CompletedDispatcher completedDispatcher(nullptr, callBack, nullptr); 137 138 Want want = MakeWant("device", "ability", "bundleName"); 139 std::string key = "key"; 140 bool value = true; 141 WantParams wParams; 142 wParams.SetParam(key, Boolean::Box(value)); 143 completedDispatcher.PerformReceive(want, 10, "test", wParams, 0, 0, 1); 144 EXPECT_EQ(completedDispatcher.want_.GetElement().GetBundleName(), "bundleName"); 145 EXPECT_EQ(completedDispatcher.want_.GetElement().GetAbilityName(), "ability"); 146 EXPECT_EQ(completedDispatcher.resultCode_, 10); 147 EXPECT_EQ(completedDispatcher.resultData_, "test"); 148 EXPECT_EQ(Boolean::Unbox(IBoolean::Query(completedDispatcher.resultExtras_.GetParam(key))), value); 149 EXPECT_EQ(CompletedCallbackSon::code, 100); 150 CompletedCallbackSon::code = 0; 151 } 152 153 /* 154 * @tc.number : CompletedDispatcher_0400 155 * @tc.name : CompletedDispatcher PerformReceive 156 * @tc.desc : 1.The parameter is not nullptr 157 * 2.called callBack 158 */ 159 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0400, Function | MediumTest | Level1) 160 { 161 std::shared_ptr<CompletedDispatcherTest::CompletedCallbackSon> callBack = 162 std::make_shared<CompletedDispatcherTest::CompletedCallbackSon>(); 163 std::shared_ptr<EventHandler> handler = std::make_shared<EventHandler>(); 164 CompletedDispatcher completedDispatcher(nullptr, callBack, handler); 165 166 Want want = MakeWant("device", "ability", "bundleName"); 167 std::string key = "key"; 168 bool value = false; 169 WantParams wParams; 170 wParams.SetParam(key, Boolean::Box(value)); 171 completedDispatcher.PerformReceive(want, 10, "test", wParams, 0, 0, 1); 172 EXPECT_EQ(completedDispatcher.want_.GetElement().GetBundleName(), "bundleName"); 173 EXPECT_EQ(completedDispatcher.want_.GetElement().GetAbilityName(), "ability"); 174 EXPECT_EQ(completedDispatcher.resultCode_, 10); 175 EXPECT_EQ(completedDispatcher.resultData_, "test"); 176 EXPECT_EQ(Boolean::Unbox(IBoolean::Query(completedDispatcher.resultExtras_.GetParam(key))), value); 177 EXPECT_EQ(CompletedCallbackSon::code, 0); 178 CompletedCallbackSon::code = 0; 179 } 180 181 /* 182 * @tc.number : CompletedDispatcher_0500 183 * @tc.name : CompletedDispatcher Run 184 * @tc.desc : 1.The parameter is not nullptr 185 * 2.called callBack 186 */ 187 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0500, Function | MediumTest | Level1) 188 { 189 std::shared_ptr<CompletedDispatcherTest::CompletedCallbackSon> callBack = 190 std::make_shared<CompletedDispatcherTest::CompletedCallbackSon>(); 191 CompletedDispatcher completedDispatcher(nullptr, callBack, nullptr); 192 EXPECT_EQ(completedDispatcher.callback_, callBack); 193 completedDispatcher.Run(); 194 EXPECT_EQ(CompletedCallbackSon::code, 100); 195 CompletedCallbackSon::code = 0; 196 } 197 198 /* 199 * @tc.number : CompletedDispatcher_0600 200 * @tc.name : CompletedDispatcher Run 201 * @tc.desc : 1.The parameter is nullptr 202 * 2.no called callBack 203 */ 204 HWTEST_F(CompletedDispatcherTest, CompletedDispatcher_0600, Function | MediumTest | Level1) 205 { 206 CompletedDispatcher completedDispatcher(nullptr, nullptr, nullptr); 207 EXPECT_EQ(completedDispatcher.callback_, nullptr); 208 completedDispatcher.Run(); 209 EXPECT_EQ(CompletedCallbackSon::code, 0); 210 CompletedCallbackSon::code = 0; 211 } 212 } // namespace OHOS::AbilityRuntime::WantAgent 213