1/* 2 * Copyright (c) 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 "UTTest_dm_publish_manager.h" 17 18#include "dm_log.h" 19#include "dm_constants.h" 20#include "dm_anonymous.h" 21#include "ipc_server_listener.h" 22#include "device_manager_service_listener.h" 23#include "softbus_bus_center.h" 24#include "device_manager_service_listener.h" 25#include "softbus_error_code.h" 26 27namespace OHOS { 28namespace DistributedHardware { 29void DmPublishManagerTest::SetUp() 30{ 31} 32 33void DmPublishManagerTest::TearDown() 34{ 35} 36 37void DmPublishManagerTest::SetUpTestCase() 38{ 39} 40 41void DmPublishManagerTest::TearDownTestCase() 42{ 43} 44 45namespace { 46std::shared_ptr<SoftbusConnector> softbusConnector_ = std::make_shared<SoftbusConnector>(); 47std::shared_ptr<DeviceManagerServiceListener> listener_ = std::make_shared<DeviceManagerServiceListener>(); 48std::shared_ptr<DmPublishManager> publishMgr_ = std::make_shared<DmPublishManager>(softbusConnector_, listener_); 49 50/** 51 * @tc.name: DmPublishManager_001 52 * @tc.desc: Test whether the DmPublishManager function can generate a new pointer 53 * @tc.type: FUNC 54 * @tc.require: I5N1K3 55 */ 56HWTEST_F(DmPublishManagerTest, DmPublishManager_001, testing::ext::TestSize.Level0) 57{ 58 std::shared_ptr<DmPublishManager> Test = std::make_shared<DmPublishManager>(softbusConnector_, listener_); 59 ASSERT_NE(Test, nullptr); 60} 61 62/** 63 * @tc.name: DmPublishManager_002 64 * @tc.desc: Test whether the DmPublishManager function can delete a new pointer 65 * @tc.type: FUNC 66 * @tc.require: I5N1K3 67 */ 68HWTEST_F(DmPublishManagerTest, DmPublishManager_002, testing::ext::TestSize.Level0) 69{ 70 std::shared_ptr<DmPublishManager> Test = std::make_shared<DmPublishManager>(softbusConnector_, listener_); 71 Test.reset(); 72 EXPECT_EQ(Test, nullptr); 73} 74 75/** 76 * @tc.name: PublishDeviceDiscovery_001 77 * @tc.desc: keeping pkgame unchanged, call PublishDeviceDiscovery twice 78 * so that its PublishQueue is not empty and return ERR_DM_PUBLISH_REPEATED 79 * @tc.type: FUNC 80 * @tc.require: I5N1K3 81 */ 82HWTEST_F(DmPublishManagerTest, PublishDeviceDiscovery_001, testing::ext::TestSize.Level0) 83{ 84 std::string pkgName = "com.ohos.helloworld"; 85 DmPublishInfo publishInfo; 86 publishInfo.publishId = 9; 87 publishInfo.mode = DM_DISCOVER_MODE_PASSIVE; 88 publishInfo.freq = DM_HIGH; 89 publishInfo.ranging = 1; 90 publishMgr_->PublishDeviceDiscovery(pkgName, publishInfo); 91 int32_t ret = publishMgr_->PublishDeviceDiscovery(pkgName, publishInfo); 92 EXPECT_EQ(ret, ERR_DM_PUBLISH_REPEATED); 93 publishMgr_->UnPublishDeviceDiscovery(pkgName, publishInfo.publishId); 94} 95 96/** 97 * @tc.name: PublishDeviceDiscovery_002 98 * @tc.desc: pkgame changed, call PublishDeviceDiscovery twice 99 * so that its discoveryQueue is not empty and return ERR_DM_PUBLISH_REPEATED 100 * @tc.type: FUNC 101 * @tc.require: I5N1K3 102 */ 103HWTEST_F(DmPublishManagerTest, PublishDeviceDiscovery_002, testing::ext::TestSize.Level0) 104{ 105 std::string pkgName = "com.ohos.helloworld"; 106 DmPublishInfo publishInfo; 107 publishInfo.publishId = 9; 108 publishInfo.mode = DM_DISCOVER_MODE_PASSIVE; 109 publishInfo.freq = DM_FREQ_BUTT; 110 publishInfo.ranging = 1; 111 publishMgr_->PublishDeviceDiscovery(pkgName, publishInfo); 112 pkgName = "com.ohos.helloworld.new"; 113 int32_t ret = publishMgr_->PublishDeviceDiscovery(pkgName, publishInfo); 114 ASSERT_TRUE(ret == SOFTBUS_INVALID_PARAM || ret == SOFTBUS_NETWORK_NOT_INIT || ret == SOFTBUS_NETWORK_LOOPER_ERR); 115 publishMgr_->UnPublishDeviceDiscovery(pkgName, publishInfo.publishId); 116} 117 118/** 119 * @tc.name: OnPublishResult_001 120 * @tc.desc: The OnPublishFailed function takes the wrong case and emptying pkgName 121 * @tc.type: FUNC 122 * @tc.require: I5N1K3 123 */ 124HWTEST_F(DmPublishManagerTest, OnPublishResult_001, testing::ext::TestSize.Level0) 125{ 126 std::string pkgName = "com.ohos.helloworld"; 127 int32_t publishId = 1; 128 int32_t failedReason = 3; 129 publishMgr_->OnPublishResult(pkgName, publishId, failedReason); 130 std::shared_ptr<IpcNotifyPublishResultReq> pReq = 131 std::static_pointer_cast<IpcNotifyPublishResultReq>(listener_->ipcServerListener_.req_); 132 std::string ret = pReq->GetPkgName(); 133 EXPECT_EQ(ret, pkgName); 134} 135 136/** 137 * @tc.name: OnPublishResult_002 138 * @tc.desc: The OnPublishSuccess function takes the wrong case and return pkgName 139 * @tc.type: FUNC 140 * @tc.require: I5N1K3 141 */ 142HWTEST_F(DmPublishManagerTest, OnPublishResult_002, testing::ext::TestSize.Level0) 143{ 144 std::string pkgName; 145 int32_t publishId = 1; 146 publishMgr_->OnPublishResult(pkgName, publishId, 0); 147 std::shared_ptr<IpcNotifyPublishResultReq> pReq = 148 std::static_pointer_cast<IpcNotifyPublishResultReq>(listener_->ipcServerListener_.req_); 149 std::string ret = pReq->GetPkgName(); 150 EXPECT_NE(ret, pkgName); 151} 152} // namespace 153} // namespace DistributedHardware 154} // namespace OHOS 155