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_pan.h"
1819e95205Sopenharmony_ci#include "bluetooth_remote_device.h"
1919e95205Sopenharmony_ci
2019e95205Sopenharmony_ciusing namespace testing;
2119e95205Sopenharmony_ciusing namespace testing::ext;
2219e95205Sopenharmony_ci
2319e95205Sopenharmony_cinamespace OHOS {
2419e95205Sopenharmony_cinamespace Bluetooth {
2519e95205Sopenharmony_ciusing namespace std;
2619e95205Sopenharmony_ci
2719e95205Sopenharmony_ciclass PanObserverTest : public PanObserver {
2819e95205Sopenharmony_cipublic:
2919e95205Sopenharmony_ci    PanObserverTest() = default;
3019e95205Sopenharmony_ci    virtual ~PanObserverTest() = default;
3119e95205Sopenharmony_ci    virtual void OnConnectionStateChanged(const BluetoothRemoteDevice &device, int state, int cause) {}
3219e95205Sopenharmony_ci
3319e95205Sopenharmony_ciprivate:
3419e95205Sopenharmony_ci};
3519e95205Sopenharmony_ci
3619e95205Sopenharmony_ci
3719e95205Sopenharmony_cistatic Bluetooth::Pan *profile_;
3819e95205Sopenharmony_cistatic std::shared_ptr<PanObserverTest> panObserverTest = std::make_shared<PanObserverTest>();
3919e95205Sopenharmony_ci
4019e95205Sopenharmony_ciclass PanTest : public testing::Test {
4119e95205Sopenharmony_cipublic:
4219e95205Sopenharmony_ci    PanTest();
4319e95205Sopenharmony_ci    ~PanTest();
4419e95205Sopenharmony_ci
4519e95205Sopenharmony_ci    static void SetUpTestCase(void);
4619e95205Sopenharmony_ci    static void TearDownTestCase(void);
4719e95205Sopenharmony_ci    void SetUp();
4819e95205Sopenharmony_ci    void TearDown();
4919e95205Sopenharmony_ci    bool CompareDevice(std::vector<BluetoothRemoteDevice> bluetoothRemoteDeviceByState,
5019e95205Sopenharmony_ci                       std::vector<std::string> bluetoothRemoteDeviceAddr);
5119e95205Sopenharmony_ci
5219e95205Sopenharmony_ciprivate:
5319e95205Sopenharmony_ci};
5419e95205Sopenharmony_ci
5519e95205Sopenharmony_ciPanTest::PanTest()
5619e95205Sopenharmony_ci{
5719e95205Sopenharmony_ci}
5819e95205Sopenharmony_ci
5919e95205Sopenharmony_ciPanTest::~PanTest()
6019e95205Sopenharmony_ci{
6119e95205Sopenharmony_ci}
6219e95205Sopenharmony_ci
6319e95205Sopenharmony_civoid PanTest::SetUpTestCase(void)
6419e95205Sopenharmony_ci{
6519e95205Sopenharmony_ci}
6619e95205Sopenharmony_civoid PanTest::TearDownTestCase(void)
6719e95205Sopenharmony_ci{
6819e95205Sopenharmony_ci}
6919e95205Sopenharmony_civoid PanTest::SetUp()
7019e95205Sopenharmony_ci{
7119e95205Sopenharmony_ci}
7219e95205Sopenharmony_civoid PanTest::TearDown()
7319e95205Sopenharmony_ci{
7419e95205Sopenharmony_ci}
7519e95205Sopenharmony_cibool PanTest::CompareDevice(std::vector<BluetoothRemoteDevice> bluetoothRemoteDeviceByState,
7619e95205Sopenharmony_ci                            std::vector<std::string> bluetoothRemoteDeviceAddr)
7719e95205Sopenharmony_ci{
7819e95205Sopenharmony_ci    if (bluetoothRemoteDeviceByState.size() != bluetoothRemoteDeviceAddr.size()) {
7919e95205Sopenharmony_ci        return false;
8019e95205Sopenharmony_ci    }
8119e95205Sopenharmony_ci    for (int i = 0; i < bluetoothRemoteDeviceByState.size(); i++) {
8219e95205Sopenharmony_ci        if (bluetoothRemoteDeviceByState[i].GetDeviceAddr().compare(bluetoothRemoteDeviceAddr[i]) != 0) {
8319e95205Sopenharmony_ci            return false;
8419e95205Sopenharmony_ci        }
8519e95205Sopenharmony_ci    }
8619e95205Sopenharmony_ci    return true;
8719e95205Sopenharmony_ci}
8819e95205Sopenharmony_ci
8919e95205Sopenharmony_ci/*
9019e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_GetDevicesByStates_00100
9119e95205Sopenharmony_ci * @tc.name: GetDevicesByStates
9219e95205Sopenharmony_ci * @tc.desc:
9319e95205Sopenharmony_ci */
9419e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_GetDevicesByStates_00100, TestSize.Level1)
9519e95205Sopenharmony_ci{
9619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_GetDevicesByStates_00100 start";
9719e95205Sopenharmony_ci
9819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "GetDevicesByStates function test";
9919e95205Sopenharmony_ci
10019e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
10119e95205Sopenharmony_ci    std::vector<int> states;
10219e95205Sopenharmony_ci    std::vector<std::string> bluetoothRemoteDeviceAddr;
10319e95205Sopenharmony_ci    std::vector<BluetoothRemoteDevice> devices;
10419e95205Sopenharmony_ci    profile_->GetDevicesByStates(states, devices);
10519e95205Sopenharmony_ci    EXPECT_TRUE(CompareDevice(devices, bluetoothRemoteDeviceAddr));
10619e95205Sopenharmony_ci
10719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_GetDevicesByStates_00100 end";
10819e95205Sopenharmony_ci}
10919e95205Sopenharmony_ci
11019e95205Sopenharmony_ci/*
11119e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_GetDeviceState_00100
11219e95205Sopenharmony_ci * @tc.name: GetDeviceState
11319e95205Sopenharmony_ci * @tc.desc:
11419e95205Sopenharmony_ci */
11519e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_GetDeviceState_00100, TestSize.Level1)
11619e95205Sopenharmony_ci{
11719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_GetDeviceState_00100 start";
11819e95205Sopenharmony_ci
11919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "GetDeviceState function test";
12019e95205Sopenharmony_ci
12119e95205Sopenharmony_ci    int sucess = static_cast<int>(BTConnectState::DISCONNECTED);
12219e95205Sopenharmony_ci    BluetoothRemoteDevice device;
12319e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
12419e95205Sopenharmony_ci    int32_t state = static_cast<int32_t>(BTConnectState::DISCONNECTED);
12519e95205Sopenharmony_ci    profile_->GetDeviceState(device, state);
12619e95205Sopenharmony_ci    EXPECT_EQ(sucess, state);
12719e95205Sopenharmony_ci
12819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_GetDeviceState_00100 end";
12919e95205Sopenharmony_ci}
13019e95205Sopenharmony_ci
13119e95205Sopenharmony_ci/*
13219e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_Disconnect_00100
13319e95205Sopenharmony_ci * @tc.name: Disconnect
13419e95205Sopenharmony_ci * @tc.desc:
13519e95205Sopenharmony_ci */
13619e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_Disconnect_00100, TestSize.Level1)
13719e95205Sopenharmony_ci{
13819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_Disconnect_00100 start";
13919e95205Sopenharmony_ci
14019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "Disconnect function test";
14119e95205Sopenharmony_ci
14219e95205Sopenharmony_ci    BluetoothRemoteDevice device;
14319e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
14419e95205Sopenharmony_ci    EXPECT_TRUE(profile_->Disconnect(device));
14519e95205Sopenharmony_ci
14619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_Disconnect_00100 end";
14719e95205Sopenharmony_ci}
14819e95205Sopenharmony_ci
14919e95205Sopenharmony_ci/*
15019e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_RegisterObserver_00100
15119e95205Sopenharmony_ci * @tc.name: RegisterObserver
15219e95205Sopenharmony_ci * @tc.desc:
15319e95205Sopenharmony_ci */
15419e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_RegisterObserver_00100, TestSize.Level1)
15519e95205Sopenharmony_ci{
15619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_RegisterObserver_00100 start";
15719e95205Sopenharmony_ci
15819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "RegisterObserver function test";
15919e95205Sopenharmony_ci
16019e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
16119e95205Sopenharmony_ci    profile_->RegisterObserver(panObserverTest);
16219e95205Sopenharmony_ci
16319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_RegisterObserver_00100 end";
16419e95205Sopenharmony_ci}
16519e95205Sopenharmony_ci
16619e95205Sopenharmony_ci/*
16719e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_DeregisterObserver_00100
16819e95205Sopenharmony_ci * @tc.name: DeregisterObserver
16919e95205Sopenharmony_ci * @tc.desc:
17019e95205Sopenharmony_ci */
17119e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_DeregisterObserver_00100, TestSize.Level1)
17219e95205Sopenharmony_ci{
17319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_DeregisterObserver_00100 start";
17419e95205Sopenharmony_ci
17519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "DeregisterObserver function test";
17619e95205Sopenharmony_ci
17719e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
17819e95205Sopenharmony_ci    profile_->DeregisterObserver(panObserverTest);
17919e95205Sopenharmony_ci
18019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_DeregisterObserver_00100 end";
18119e95205Sopenharmony_ci}
18219e95205Sopenharmony_ci
18319e95205Sopenharmony_ci/*
18419e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_OnConnectionStateChanged_00100
18519e95205Sopenharmony_ci * @tc.name: OnConnectionStateChanged
18619e95205Sopenharmony_ci * @tc.desc:
18719e95205Sopenharmony_ci */
18819e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_OnConnectionStateChanged_00100, TestSize.Level1)
18919e95205Sopenharmony_ci{
19019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_OnConnectionStateChanged_00100 start";
19119e95205Sopenharmony_ci
19219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "OnConnectionStateChanged function test";
19319e95205Sopenharmony_ci
19419e95205Sopenharmony_ci    BluetoothRemoteDevice device;
19519e95205Sopenharmony_ci    int state = static_cast<int>(BTConnectState::DISCONNECTED);
19619e95205Sopenharmony_ci    panObserverTest->OnConnectionStateChanged(device, state, 0);
19719e95205Sopenharmony_ci
19819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_OnConnectionStateChanged_00100 end";
19919e95205Sopenharmony_ci}
20019e95205Sopenharmony_ci
20119e95205Sopenharmony_ci/*
20219e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_SetTethering_00100
20319e95205Sopenharmony_ci * @tc.name: SetTethering
20419e95205Sopenharmony_ci * @tc.desc:
20519e95205Sopenharmony_ci */
20619e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_SetTethering_00100, TestSize.Level1)
20719e95205Sopenharmony_ci{
20819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_SetTethering_00100 start";
20919e95205Sopenharmony_ci
21019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "SetTethering function test";
21119e95205Sopenharmony_ci
21219e95205Sopenharmony_ci    bool value = false;
21319e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
21419e95205Sopenharmony_ci    EXPECT_TRUE(profile_->SetTethering(value));
21519e95205Sopenharmony_ci
21619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_SetTethering_00100 end";
21719e95205Sopenharmony_ci}
21819e95205Sopenharmony_ci
21919e95205Sopenharmony_ci/*
22019e95205Sopenharmony_ci * @tc.number: PAN_ModuleTest_IsTetheringOn_00100
22119e95205Sopenharmony_ci * @tc.name: IsTetheringOn
22219e95205Sopenharmony_ci * @tc.desc:
22319e95205Sopenharmony_ci */
22419e95205Sopenharmony_ciHWTEST_F(PanTest, PAN_ModuleTest_IsTetheringOn_00100, TestSize.Level1)
22519e95205Sopenharmony_ci{
22619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_IsTetheringOn_00100 start";
22719e95205Sopenharmony_ci
22819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "IsTetheringOn function test";
22919e95205Sopenharmony_ci
23019e95205Sopenharmony_ci    profile_ = Pan::GetProfile();
23119e95205Sopenharmony_ci    bool result = false;
23219e95205Sopenharmony_ci    profile_->IsTetheringOn(result);
23319e95205Sopenharmony_ci    EXPECT_FALSE(result);
23419e95205Sopenharmony_ci
23519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PAN_ModuleTest_IsTetheringOn_00100 end";
23619e95205Sopenharmony_ci}
23719e95205Sopenharmony_ci}  // namespace Bluetooth
23819e95205Sopenharmony_ci}  // namespace OHOS