1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#include <future> 17c29fa5a6Sopenharmony_ci#include <optional> 18c29fa5a6Sopenharmony_ci 19c29fa5a6Sopenharmony_ci#include <unistd.h> 20c29fa5a6Sopenharmony_ci#include <utility> 21c29fa5a6Sopenharmony_ci 22c29fa5a6Sopenharmony_ci#include <gtest/gtest.h> 23c29fa5a6Sopenharmony_ci 24c29fa5a6Sopenharmony_ci#include "cooperate_client.h" 25c29fa5a6Sopenharmony_ci#include "devicestatus_define.h" 26c29fa5a6Sopenharmony_ci#include "devicestatus_errors.h" 27c29fa5a6Sopenharmony_ci 28c29fa5a6Sopenharmony_ci 29c29fa5a6Sopenharmony_ci#undef LOG_TAG 30c29fa5a6Sopenharmony_ci#define LOG_TAG "CooperateClientTest" 31c29fa5a6Sopenharmony_ci 32c29fa5a6Sopenharmony_cinamespace OHOS { 33c29fa5a6Sopenharmony_cinamespace Msdp { 34c29fa5a6Sopenharmony_cinamespace DeviceStatus { 35c29fa5a6Sopenharmony_ciusing namespace testing::ext; 36c29fa5a6Sopenharmony_cinamespace { 37c29fa5a6Sopenharmony_ciconstexpr int32_t TIME_WAIT_FOR_OP_MS { 20 }; 38c29fa5a6Sopenharmony_ciconst std::string SYSTEM_BASIC { "system_basic" }; 39c29fa5a6Sopenharmony_ci} // namespace 40c29fa5a6Sopenharmony_ci 41c29fa5a6Sopenharmony_ciclass CooperateClientTest : public testing::Test { 42c29fa5a6Sopenharmony_cipublic: 43c29fa5a6Sopenharmony_ci void SetUp(); 44c29fa5a6Sopenharmony_ci void TearDown(); 45c29fa5a6Sopenharmony_ci static void SetUpTestCase(); 46c29fa5a6Sopenharmony_ci static void TearDownTestCase(); 47c29fa5a6Sopenharmony_ci}; 48c29fa5a6Sopenharmony_ci 49c29fa5a6Sopenharmony_civoid CooperateClientTest::SetUpTestCase() {} 50c29fa5a6Sopenharmony_ci 51c29fa5a6Sopenharmony_civoid CooperateClientTest::TearDownTestCase() {} 52c29fa5a6Sopenharmony_ci 53c29fa5a6Sopenharmony_civoid CooperateClientTest::SetUp() {} 54c29fa5a6Sopenharmony_ci 55c29fa5a6Sopenharmony_civoid CooperateClientTest::TearDown() 56c29fa5a6Sopenharmony_ci{ 57c29fa5a6Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(TIME_WAIT_FOR_OP_MS)); 58c29fa5a6Sopenharmony_ci} 59c29fa5a6Sopenharmony_ci 60c29fa5a6Sopenharmony_ciclass CoordinationListenerTest : public ICoordinationListener { 61c29fa5a6Sopenharmony_ci public: 62c29fa5a6Sopenharmony_ci CoordinationListenerTest() : ICoordinationListener() {} 63c29fa5a6Sopenharmony_ci void OnCoordinationMessage(const std::string &networkId, CoordinationMessage msg) override 64c29fa5a6Sopenharmony_ci { 65c29fa5a6Sopenharmony_ci FI_HILOGD("Register coordination listener test"); 66c29fa5a6Sopenharmony_ci (void) networkId; 67c29fa5a6Sopenharmony_ci }; 68c29fa5a6Sopenharmony_ci }; 69c29fa5a6Sopenharmony_ci 70c29fa5a6Sopenharmony_ciclass TunnelClientTest : public ITunnelClient { 71c29fa5a6Sopenharmony_ci public: 72c29fa5a6Sopenharmony_ci TunnelClientTest() : ITunnelClient() {} 73c29fa5a6Sopenharmony_ci int32_t Enable(Intention intention, ParamBase &data, ParamBase &reply) 74c29fa5a6Sopenharmony_ci { 75c29fa5a6Sopenharmony_ci return RET_ERR; 76c29fa5a6Sopenharmony_ci } 77c29fa5a6Sopenharmony_ci int32_t Disable(Intention intention, ParamBase &data, ParamBase &reply) 78c29fa5a6Sopenharmony_ci { 79c29fa5a6Sopenharmony_ci return RET_ERR; 80c29fa5a6Sopenharmony_ci } 81c29fa5a6Sopenharmony_ci int32_t Start(Intention intention, ParamBase &data, ParamBase &reply) 82c29fa5a6Sopenharmony_ci { 83c29fa5a6Sopenharmony_ci return RET_ERR; 84c29fa5a6Sopenharmony_ci } 85c29fa5a6Sopenharmony_ci int32_t Stop(Intention intention, ParamBase &data, ParamBase &reply) 86c29fa5a6Sopenharmony_ci { 87c29fa5a6Sopenharmony_ci return RET_ERR; 88c29fa5a6Sopenharmony_ci } 89c29fa5a6Sopenharmony_ci int32_t AddWatch(Intention intention, uint32_t id, ParamBase &data, ParamBase &reply) 90c29fa5a6Sopenharmony_ci { 91c29fa5a6Sopenharmony_ci return RET_OK; 92c29fa5a6Sopenharmony_ci } 93c29fa5a6Sopenharmony_ci int32_t RemoveWatch(Intention intention, uint32_t id, ParamBase &data, ParamBase &reply) 94c29fa5a6Sopenharmony_ci { 95c29fa5a6Sopenharmony_ci return RET_ERR; 96c29fa5a6Sopenharmony_ci } 97c29fa5a6Sopenharmony_ci int32_t SetParam(Intention intention, uint32_t id, ParamBase &data, ParamBase &reply) 98c29fa5a6Sopenharmony_ci { 99c29fa5a6Sopenharmony_ci return RET_ERR; 100c29fa5a6Sopenharmony_ci } 101c29fa5a6Sopenharmony_ci int32_t GetParam(Intention intention, uint32_t id, ParamBase &data, ParamBase &reply) 102c29fa5a6Sopenharmony_ci { 103c29fa5a6Sopenharmony_ci return RET_OK; 104c29fa5a6Sopenharmony_ci } 105c29fa5a6Sopenharmony_ci int32_t Control(Intention intention, uint32_t id, ParamBase &data, ParamBase &reply) 106c29fa5a6Sopenharmony_ci { 107c29fa5a6Sopenharmony_ci return RET_ERR; 108c29fa5a6Sopenharmony_ci } 109c29fa5a6Sopenharmony_ci }; 110c29fa5a6Sopenharmony_ci 111c29fa5a6Sopenharmony_ciclass StreamClientTest : public StreamClient { 112c29fa5a6Sopenharmony_ci public: 113c29fa5a6Sopenharmony_ci StreamClientTest() = default; 114c29fa5a6Sopenharmony_ci void Stop() override 115c29fa5a6Sopenharmony_ci {} 116c29fa5a6Sopenharmony_ci int32_t Socket() override 117c29fa5a6Sopenharmony_ci { 118c29fa5a6Sopenharmony_ci return RET_ERR; 119c29fa5a6Sopenharmony_ci } 120c29fa5a6Sopenharmony_ci }; 121c29fa5a6Sopenharmony_ci 122c29fa5a6Sopenharmony_ci/** 123c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_RegisterListener_001 124c29fa5a6Sopenharmony_ci * @tc.desc: On Coordination Listener 125c29fa5a6Sopenharmony_ci * @tc.type: FUNC 126c29fa5a6Sopenharmony_ci * @tc.require: 127c29fa5a6Sopenharmony_ci */ 128c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_RegisterListener_001, TestSize.Level1) 129c29fa5a6Sopenharmony_ci{ 130c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 131c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 132c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 133c29fa5a6Sopenharmony_ci bool isCompatible = true; 134c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 135c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 136c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 137c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 138c29fa5a6Sopenharmony_ci ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 139c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_ERR); 140c29fa5a6Sopenharmony_ci} 141c29fa5a6Sopenharmony_ci 142c29fa5a6Sopenharmony_ci/** 143c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_RegisterListener_002 144c29fa5a6Sopenharmony_ci * @tc.desc: On Coordination Listener 145c29fa5a6Sopenharmony_ci * @tc.type: FUNC 146c29fa5a6Sopenharmony_ci * @tc.require: 147c29fa5a6Sopenharmony_ci */ 148c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_RegisterListener_002, TestSize.Level1) 149c29fa5a6Sopenharmony_ci{ 150c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 151c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 152c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 153c29fa5a6Sopenharmony_ci bool isCompatible = true; 154c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 155c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 156c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 157c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 158c29fa5a6Sopenharmony_ci} 159c29fa5a6Sopenharmony_ci 160c29fa5a6Sopenharmony_ci/** 161c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_OnCoordinationListener_001 162c29fa5a6Sopenharmony_ci * @tc.desc: On Coordination Listener 163c29fa5a6Sopenharmony_ci * @tc.type: FUNC 164c29fa5a6Sopenharmony_ci * @tc.require: 165c29fa5a6Sopenharmony_ci */ 166c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_OnCoordinationListener_001, TestSize.Level1) 167c29fa5a6Sopenharmony_ci{ 168c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 169c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 170c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 171c29fa5a6Sopenharmony_ci bool isCompatible = true; 172c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 173c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 174c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 175c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 176c29fa5a6Sopenharmony_ci StreamClientTest client; 177c29fa5a6Sopenharmony_ci int32_t userData = 0; 178c29fa5a6Sopenharmony_ci std::string networkId = "networkId"; 179c29fa5a6Sopenharmony_ci CoordinationMessage msg = CoordinationMessage::ACTIVATE_SUCCESS; 180c29fa5a6Sopenharmony_ci MessageId msgId = MessageId::COORDINATION_ADD_LISTENER; 181c29fa5a6Sopenharmony_ci NetPacket pkt(msgId); 182c29fa5a6Sopenharmony_ci pkt << userData << networkId << static_cast<int32_t>(msg); 183c29fa5a6Sopenharmony_ci ret = cooperateClient.OnCoordinationListener(client, pkt); 184c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 185c29fa5a6Sopenharmony_ci} 186c29fa5a6Sopenharmony_ci 187c29fa5a6Sopenharmony_ci/** 188c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_OnCoordinationListener_002 189c29fa5a6Sopenharmony_ci * @tc.desc: On Coordination Listener 190c29fa5a6Sopenharmony_ci * @tc.type: FUNC 191c29fa5a6Sopenharmony_ci * @tc.require: 192c29fa5a6Sopenharmony_ci */ 193c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_OnCoordinationListener_002, TestSize.Level1) 194c29fa5a6Sopenharmony_ci{ 195c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 196c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 197c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 198c29fa5a6Sopenharmony_ci bool isCompatible = true; 199c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 200c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 201c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 202c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 203c29fa5a6Sopenharmony_ci StreamClientTest client; 204c29fa5a6Sopenharmony_ci CoordinationMessage msg = CoordinationMessage::ACTIVATE_SUCCESS; 205c29fa5a6Sopenharmony_ci MessageId msgId = MessageId::COORDINATION_ADD_LISTENER; 206c29fa5a6Sopenharmony_ci NetPacket pkt(msgId); 207c29fa5a6Sopenharmony_ci pkt << static_cast<int32_t>(msg); 208c29fa5a6Sopenharmony_ci ret = cooperateClient.OnCoordinationListener(client, pkt); 209c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_ERR); 210c29fa5a6Sopenharmony_ci} 211c29fa5a6Sopenharmony_ci 212c29fa5a6Sopenharmony_ci/** 213c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_OnMouseLocationListener_001 214c29fa5a6Sopenharmony_ci * @tc.desc: On Hot Area Listener 215c29fa5a6Sopenharmony_ci * @tc.type: FUNC 216c29fa5a6Sopenharmony_ci * @tc.require: 217c29fa5a6Sopenharmony_ci */ 218c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_OnMouseLocationListener_001, TestSize.Level1) 219c29fa5a6Sopenharmony_ci{ 220c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 221c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 222c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 223c29fa5a6Sopenharmony_ci bool isCompatible = true; 224c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 225c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 226c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 227c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 228c29fa5a6Sopenharmony_ci Event event; 229c29fa5a6Sopenharmony_ci std::string networkId = "networkId"; 230c29fa5a6Sopenharmony_ci MessageId msgId = MessageId::COORDINATION_ADD_LISTENER; 231c29fa5a6Sopenharmony_ci NetPacket pkt(msgId); 232c29fa5a6Sopenharmony_ci pkt << networkId << event.displayX << event.displayY << event.displayWidth << event.displayHeight; 233c29fa5a6Sopenharmony_ci StreamClientTest client; 234c29fa5a6Sopenharmony_ci ret = cooperateClient.OnMouseLocationListener(client, pkt); 235c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 236c29fa5a6Sopenharmony_ci} 237c29fa5a6Sopenharmony_ci 238c29fa5a6Sopenharmony_ci/** 239c29fa5a6Sopenharmony_ci * @tc.name: CooperateClientTest_OnMouseLocationListener_002 240c29fa5a6Sopenharmony_ci * @tc.desc: On Hot Area Listener 241c29fa5a6Sopenharmony_ci * @tc.type: FUNC 242c29fa5a6Sopenharmony_ci * @tc.require: 243c29fa5a6Sopenharmony_ci */ 244c29fa5a6Sopenharmony_ciHWTEST_F(CooperateClientTest, CooperateClientTest_OnMouseLocationListener_002, TestSize.Level1) 245c29fa5a6Sopenharmony_ci{ 246c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 247c29fa5a6Sopenharmony_ci std::shared_ptr<CoordinationListenerTest> consumer = 248c29fa5a6Sopenharmony_ci std::make_shared<CoordinationListenerTest>(); 249c29fa5a6Sopenharmony_ci bool isCompatible = true; 250c29fa5a6Sopenharmony_ci TunnelClientTest tunnel; 251c29fa5a6Sopenharmony_ci CooperateClient cooperateClient; 252c29fa5a6Sopenharmony_ci int32_t ret = cooperateClient.RegisterListener(tunnel, consumer, isCompatible); 253c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_OK); 254c29fa5a6Sopenharmony_ci std::string networkId = "networkId"; 255c29fa5a6Sopenharmony_ci MessageId msgId = MessageId::COORDINATION_ADD_LISTENER; 256c29fa5a6Sopenharmony_ci NetPacket pkt(msgId); 257c29fa5a6Sopenharmony_ci StreamClientTest client; 258c29fa5a6Sopenharmony_ci ret = cooperateClient.OnMouseLocationListener(client, pkt); 259c29fa5a6Sopenharmony_ci ASSERT_EQ(ret, RET_ERR); 260c29fa5a6Sopenharmony_ci} 261c29fa5a6Sopenharmony_ci} // namespace DeviceStatus 262c29fa5a6Sopenharmony_ci} // namespace Msdp 263c29fa5a6Sopenharmony_ci} // namespace OHOS