119e95205Sopenharmony_ci/* 219e95205Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 319e95205Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 419e95205Sopenharmony_ci * you may not use this file except in compliance with the License. 519e95205Sopenharmony_ci * You may obtain a copy of the License at 619e95205Sopenharmony_ci * 719e95205Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 819e95205Sopenharmony_ci * 919e95205Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1019e95205Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1119e95205Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1219e95205Sopenharmony_ci * See the License for the specific language governing permissions and 1319e95205Sopenharmony_ci * limitations under the License. 1419e95205Sopenharmony_ci */ 1519e95205Sopenharmony_ci 1619e95205Sopenharmony_ci#include <gtest/gtest.h> 1719e95205Sopenharmony_ci#include "bluetooth_errorcode.h" 1819e95205Sopenharmony_ci#include "bluetooth_hid_host.h" 1919e95205Sopenharmony_ci#include "bluetooth_remote_device.h" 2019e95205Sopenharmony_ci 2119e95205Sopenharmony_ciusing namespace testing; 2219e95205Sopenharmony_ciusing namespace testing::ext; 2319e95205Sopenharmony_ci 2419e95205Sopenharmony_cinamespace OHOS { 2519e95205Sopenharmony_cinamespace Bluetooth { 2619e95205Sopenharmony_ciusing namespace std; 2719e95205Sopenharmony_ci 2819e95205Sopenharmony_ciclass HidHostObserverTest : public HidHostObserver { 2919e95205Sopenharmony_cipublic: 3019e95205Sopenharmony_ci HidHostObserverTest() = default; 3119e95205Sopenharmony_ci virtual ~HidHostObserverTest() = default; 3219e95205Sopenharmony_ci virtual void OnConnectionStateChanged(const BluetoothRemoteDevice &device, int state, int cause) {} 3319e95205Sopenharmony_ci 3419e95205Sopenharmony_ciprivate: 3519e95205Sopenharmony_ci}; 3619e95205Sopenharmony_ci 3719e95205Sopenharmony_ci 3819e95205Sopenharmony_cistatic Bluetooth::HidHost *profile_; 3919e95205Sopenharmony_cistatic std::shared_ptr<HidHostObserverTest> hidHostObserverTest = std::make_shared<HidHostObserverTest>(); 4019e95205Sopenharmony_ci 4119e95205Sopenharmony_ciclass HidHostTest : public testing::Test { 4219e95205Sopenharmony_cipublic: 4319e95205Sopenharmony_ci HidHostTest(); 4419e95205Sopenharmony_ci ~HidHostTest(); 4519e95205Sopenharmony_ci 4619e95205Sopenharmony_ci static void SetUpTestCase(void); 4719e95205Sopenharmony_ci static void TearDownTestCase(void); 4819e95205Sopenharmony_ci void SetUp(); 4919e95205Sopenharmony_ci void TearDown(); 5019e95205Sopenharmony_ci bool CompareDevice(std::vector<BluetoothRemoteDevice> bluetoothRemoteDeviceByState, 5119e95205Sopenharmony_ci std::vector<std::string> bluetoothRemoteDeviceAddr); 5219e95205Sopenharmony_ci 5319e95205Sopenharmony_ciprivate: 5419e95205Sopenharmony_ci}; 5519e95205Sopenharmony_ci 5619e95205Sopenharmony_ciHidHostTest::HidHostTest() 5719e95205Sopenharmony_ci{ 5819e95205Sopenharmony_ci} 5919e95205Sopenharmony_ci 6019e95205Sopenharmony_ciHidHostTest::~HidHostTest() 6119e95205Sopenharmony_ci{ 6219e95205Sopenharmony_ci} 6319e95205Sopenharmony_ci 6419e95205Sopenharmony_civoid HidHostTest::SetUpTestCase(void) 6519e95205Sopenharmony_ci{ 6619e95205Sopenharmony_ci} 6719e95205Sopenharmony_civoid HidHostTest::TearDownTestCase(void) 6819e95205Sopenharmony_ci{ 6919e95205Sopenharmony_ci} 7019e95205Sopenharmony_civoid HidHostTest::SetUp() 7119e95205Sopenharmony_ci{ 7219e95205Sopenharmony_ci} 7319e95205Sopenharmony_civoid HidHostTest::TearDown() 7419e95205Sopenharmony_ci{ 7519e95205Sopenharmony_ci} 7619e95205Sopenharmony_ci 7719e95205Sopenharmony_cibool HidHostTest::CompareDevice(std::vector<BluetoothRemoteDevice> bluetoothRemoteDeviceByState, 7819e95205Sopenharmony_ci std::vector<std::string> bluetoothRemoteDeviceAddr) 7919e95205Sopenharmony_ci{ 8019e95205Sopenharmony_ci if (bluetoothRemoteDeviceByState.size() != bluetoothRemoteDeviceAddr.size()) { 8119e95205Sopenharmony_ci return false; 8219e95205Sopenharmony_ci } 8319e95205Sopenharmony_ci for (int i = 0; i < bluetoothRemoteDeviceByState.size(); i++) { 8419e95205Sopenharmony_ci if (bluetoothRemoteDeviceByState[i].GetDeviceAddr().compare(bluetoothRemoteDeviceAddr[i]) != 0) { 8519e95205Sopenharmony_ci return false; 8619e95205Sopenharmony_ci } 8719e95205Sopenharmony_ci } 8819e95205Sopenharmony_ci return true; 8919e95205Sopenharmony_ci} 9019e95205Sopenharmony_ci 9119e95205Sopenharmony_ci/* 9219e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_GetDevicesByStates_00100 9319e95205Sopenharmony_ci * @tc.name: GetDevicesByStates 9419e95205Sopenharmony_ci * @tc.desc: 9519e95205Sopenharmony_ci */ 9619e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_GetDevicesByStates_00100, TestSize.Level1) 9719e95205Sopenharmony_ci{ 9819e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_GetDevicesByStates_00100 start"; 9919e95205Sopenharmony_ci 10019e95205Sopenharmony_ci GTEST_LOG_(INFO) << "GetDevicesByStates function test"; 10119e95205Sopenharmony_ci 10219e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 10319e95205Sopenharmony_ci std::vector<int> states; 10419e95205Sopenharmony_ci std::vector<std::string> bluetoothRemoteDeviceAddr; 10519e95205Sopenharmony_ci std::vector<BluetoothRemoteDevice> devices; 10619e95205Sopenharmony_ci profile_->GetDevicesByStates(states, devices); 10719e95205Sopenharmony_ci EXPECT_TRUE(CompareDevice(devices, bluetoothRemoteDeviceAddr)); 10819e95205Sopenharmony_ci 10919e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_GetDevicesByStates_00100 end"; 11019e95205Sopenharmony_ci} 11119e95205Sopenharmony_ci 11219e95205Sopenharmony_ci 11319e95205Sopenharmony_ci/* 11419e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_GetDeviceState_00100 11519e95205Sopenharmony_ci * @tc.name: GetDeviceState 11619e95205Sopenharmony_ci * @tc.desc: 11719e95205Sopenharmony_ci */ 11819e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_GetDeviceState_00100, TestSize.Level1) 11919e95205Sopenharmony_ci{ 12019e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_GetDeviceState_00100 start"; 12119e95205Sopenharmony_ci 12219e95205Sopenharmony_ci GTEST_LOG_(INFO) << "GetDeviceState function test"; 12319e95205Sopenharmony_ci 12419e95205Sopenharmony_ci int sucess = static_cast<int>(BTConnectState::DISCONNECTED); 12519e95205Sopenharmony_ci BluetoothRemoteDevice device; 12619e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 12719e95205Sopenharmony_ci int32_t state = static_cast<int32_t>(BTConnectState::DISCONNECTED); 12819e95205Sopenharmony_ci profile_->GetDeviceState(device, state); 12919e95205Sopenharmony_ci EXPECT_EQ(sucess, state); 13019e95205Sopenharmony_ci 13119e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_GetDeviceState_00100 end"; 13219e95205Sopenharmony_ci} 13319e95205Sopenharmony_ci 13419e95205Sopenharmony_ci/* 13519e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_Connect_00100 13619e95205Sopenharmony_ci * @tc.name: Connect 13719e95205Sopenharmony_ci * @tc.desc: 13819e95205Sopenharmony_ci */ 13919e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_Connect_00100, TestSize.Level1) 14019e95205Sopenharmony_ci{ 14119e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_Connect_00100 start"; 14219e95205Sopenharmony_ci 14319e95205Sopenharmony_ci GTEST_LOG_(INFO) << "Connect function test"; 14419e95205Sopenharmony_ci 14519e95205Sopenharmony_ci BluetoothRemoteDevice device; 14619e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 14719e95205Sopenharmony_ci bool isOK = (profile_->Connect(device) == NO_ERROR ? true : false); 14819e95205Sopenharmony_ci EXPECT_FALSE(isOK); 14919e95205Sopenharmony_ci 15019e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_Connect_00100 end"; 15119e95205Sopenharmony_ci} 15219e95205Sopenharmony_ci 15319e95205Sopenharmony_ci/* 15419e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_Disconnect_00100 15519e95205Sopenharmony_ci * @tc.name: Disconnect 15619e95205Sopenharmony_ci * @tc.desc: 15719e95205Sopenharmony_ci */ 15819e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_Disconnect_00100, TestSize.Level1) 15919e95205Sopenharmony_ci{ 16019e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_Disconnect_00100 start"; 16119e95205Sopenharmony_ci 16219e95205Sopenharmony_ci GTEST_LOG_(INFO) << "Disconnect function test"; 16319e95205Sopenharmony_ci 16419e95205Sopenharmony_ci BluetoothRemoteDevice device; 16519e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 16619e95205Sopenharmony_ci bool isOK = (profile_->Disconnect(device) == NO_ERROR ? true : false); 16719e95205Sopenharmony_ci EXPECT_FALSE(isOK); 16819e95205Sopenharmony_ci 16919e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_Disconnect_00100 end"; 17019e95205Sopenharmony_ci} 17119e95205Sopenharmony_ci 17219e95205Sopenharmony_ci/* 17319e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_RegisterObserver_00100 17419e95205Sopenharmony_ci * @tc.name: RegisterObserver 17519e95205Sopenharmony_ci * @tc.desc: 17619e95205Sopenharmony_ci */ 17719e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_RegisterObserver_00100, TestSize.Level1) 17819e95205Sopenharmony_ci{ 17919e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_RegisterObserver_00100 start"; 18019e95205Sopenharmony_ci 18119e95205Sopenharmony_ci GTEST_LOG_(INFO) << "RegisterObserver function test"; 18219e95205Sopenharmony_ci 18319e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 18419e95205Sopenharmony_ci profile_->RegisterObserver(hidHostObserverTest); 18519e95205Sopenharmony_ci 18619e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_RegisterObserver_00100 end"; 18719e95205Sopenharmony_ci} 18819e95205Sopenharmony_ci 18919e95205Sopenharmony_ci/* 19019e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_DeregisterObserver_00100 19119e95205Sopenharmony_ci * @tc.name: DeregisterObserver 19219e95205Sopenharmony_ci * @tc.desc: 19319e95205Sopenharmony_ci */ 19419e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_DeregisterObserver_00100, TestSize.Level1) 19519e95205Sopenharmony_ci{ 19619e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_DeregisterObserver_00100 start"; 19719e95205Sopenharmony_ci 19819e95205Sopenharmony_ci GTEST_LOG_(INFO) << "DeregisterObserver function test"; 19919e95205Sopenharmony_ci 20019e95205Sopenharmony_ci profile_ = HidHost::GetProfile(); 20119e95205Sopenharmony_ci profile_->DeregisterObserver(hidHostObserverTest); 20219e95205Sopenharmony_ci 20319e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_DeregisterObserver_00100 end"; 20419e95205Sopenharmony_ci} 20519e95205Sopenharmony_ci 20619e95205Sopenharmony_ci/* 20719e95205Sopenharmony_ci * @tc.number: HID_ModuleTest_OnConnectionStateChanged_00100 20819e95205Sopenharmony_ci * @tc.name: OnConnectionStateChanged 20919e95205Sopenharmony_ci * @tc.desc: 21019e95205Sopenharmony_ci */ 21119e95205Sopenharmony_ciHWTEST_F(HidHostTest, HID_ModuleTest_OnConnectionStateChanged_00100, TestSize.Level1) 21219e95205Sopenharmony_ci{ 21319e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_OnConnectionStateChanged_00100 start"; 21419e95205Sopenharmony_ci 21519e95205Sopenharmony_ci GTEST_LOG_(INFO) << "OnConnectionStateChanged function test"; 21619e95205Sopenharmony_ci 21719e95205Sopenharmony_ci BluetoothRemoteDevice device; 21819e95205Sopenharmony_ci int ret = 0; 21919e95205Sopenharmony_ci hidHostObserverTest->OnConnectionStateChanged(device, ret, 0); 22019e95205Sopenharmony_ci 22119e95205Sopenharmony_ci GTEST_LOG_(INFO) << "HID_ModuleTest_OnConnectionStateChanged_00100 end"; 22219e95205Sopenharmony_ci} 22319e95205Sopenharmony_ci} // namespace Bluetooth 22419e95205Sopenharmony_ci} // namespace OHOS 225