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