119e95205Sopenharmony_ci/*
219e95205Sopenharmony_ci * Copyright (C) 2021 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#include <gmock/gmock.h>
1619e95205Sopenharmony_ci#include <gtest/gtest.h>
1719e95205Sopenharmony_ci#include "bluetooth_hfp_hf.h"
1819e95205Sopenharmony_ci#include "bluetooth_host.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_ciconstexpr int TIME = 2;
2819e95205Sopenharmony_ci
2919e95205Sopenharmony_ciclass HandsFreeUnitObserverCommon : public HandsFreeUnitObserver {
3019e95205Sopenharmony_cipublic:
3119e95205Sopenharmony_ci    HandsFreeUnitObserverCommon() = default;
3219e95205Sopenharmony_ci    virtual ~HandsFreeUnitObserverCommon() = default;
3319e95205Sopenharmony_ci
3419e95205Sopenharmony_ci    virtual void OnConnectionStateChanged(const BluetoothRemoteDevice &device, int state, int cause) {}
3519e95205Sopenharmony_ci    virtual void OnScoStateChanged(const BluetoothRemoteDevice &device, int state) {}
3619e95205Sopenharmony_ci    virtual void OnCallChanged(const BluetoothRemoteDevice &device, const HandsFreeUnitCall &call) {}
3719e95205Sopenharmony_ci    virtual void OnSignalStrengthChanged(const BluetoothRemoteDevice &device, int signal) {}
3819e95205Sopenharmony_ci    virtual void OnRegistrationStatusChanged(const BluetoothRemoteDevice &device, int status) {}
3919e95205Sopenharmony_ci    virtual void OnRoamingStatusChanged(const BluetoothRemoteDevice &device, int status) {}
4019e95205Sopenharmony_ci    virtual void OnOperatorSelectionChanged(const BluetoothRemoteDevice &device, const std::string &name) {}
4119e95205Sopenharmony_ci    virtual void OnSubscriberNumberChanged(const BluetoothRemoteDevice &device, const std::string &number) {}
4219e95205Sopenharmony_ci    virtual void OnVoiceRecognitionStatusChanged(const BluetoothRemoteDevice &device, int status) {}
4319e95205Sopenharmony_ci    virtual void OnInBandRingToneChanged(const BluetoothRemoteDevice &device, int status) {}
4419e95205Sopenharmony_ci
4519e95205Sopenharmony_ciprivate:
4619e95205Sopenharmony_ci};
4719e95205Sopenharmony_cistatic std::shared_ptr<HandsFreeUnitObserverCommon> observer_ =
4819e95205Sopenharmony_ci    std::make_shared<HandsFreeUnitObserverCommon>();
4919e95205Sopenharmony_cistatic HandsFreeUnit *profile_;
5019e95205Sopenharmony_cistatic BluetoothHost *host_;
5119e95205Sopenharmony_ciclass HandsFreeUnitTest : public testing::Test {
5219e95205Sopenharmony_cipublic:
5319e95205Sopenharmony_ci    HandsFreeUnitTest()
5419e95205Sopenharmony_ci    {}
5519e95205Sopenharmony_ci    ~HandsFreeUnitTest()
5619e95205Sopenharmony_ci    {}
5719e95205Sopenharmony_ci
5819e95205Sopenharmony_ci    static void SetUpTestCase(void);
5919e95205Sopenharmony_ci    static void TearDownTestCase(void);
6019e95205Sopenharmony_ci    void SetUp();
6119e95205Sopenharmony_ci    void TearDown();
6219e95205Sopenharmony_ci};
6319e95205Sopenharmony_ci
6419e95205Sopenharmony_ci
6519e95205Sopenharmony_civoid HandsFreeUnitTest::SetUpTestCase(void)
6619e95205Sopenharmony_ci{
6719e95205Sopenharmony_ci
6819e95205Sopenharmony_ci}
6919e95205Sopenharmony_civoid HandsFreeUnitTest::TearDownTestCase(void)
7019e95205Sopenharmony_ci{
7119e95205Sopenharmony_ci
7219e95205Sopenharmony_ci}
7319e95205Sopenharmony_civoid HandsFreeUnitTest::SetUp()
7419e95205Sopenharmony_ci{
7519e95205Sopenharmony_ci    host_ = &BluetoothHost::GetDefaultHost();
7619e95205Sopenharmony_ci    host_->EnableBt();
7719e95205Sopenharmony_ci    host_->EnableBle();
7819e95205Sopenharmony_ci    sleep(TIME);
7919e95205Sopenharmony_ci}
8019e95205Sopenharmony_ci
8119e95205Sopenharmony_civoid HandsFreeUnitTest::TearDown()
8219e95205Sopenharmony_ci{
8319e95205Sopenharmony_ci    host_->DisableBt();
8419e95205Sopenharmony_ci    host_->DisableBle();
8519e95205Sopenharmony_ci    host_ = nullptr;
8619e95205Sopenharmony_ci}
8719e95205Sopenharmony_ci
8819e95205Sopenharmony_ci
8919e95205Sopenharmony_ci/*
9019e95205Sopenharmony_ci * @tc.number: HandsFreeUnit001
9119e95205Sopenharmony_ci * @tc.name: GetProfile
9219e95205Sopenharmony_ci * @tc.desc: Get the instance of HandsFreeAudioGateway object.
9319e95205Sopenharmony_ci*/
9419e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_GetProfile, TestSize.Level1)
9519e95205Sopenharmony_ci{
9619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile start";
9719e95205Sopenharmony_ci
9819e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
9919e95205Sopenharmony_ci
10019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile end";
10119e95205Sopenharmony_ci}
10219e95205Sopenharmony_ci
10319e95205Sopenharmony_ci/*
10419e95205Sopenharmony_ci * @tc.number: HandsFreeUnit002
10519e95205Sopenharmony_ci * @tc.name: ConnectSco
10619e95205Sopenharmony_ci * @tc.desc:  Initiate the establishment of an audio connection to remote AG device.
10719e95205Sopenharmony_ci*/
10819e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_ConnectSco, TestSize.Level1)
10919e95205Sopenharmony_ci{
11019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco start";
11119e95205Sopenharmony_ci
11219e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
11319e95205Sopenharmony_ci    BluetoothRemoteDevice device;
11419e95205Sopenharmony_ci    EXPECT_EQ(profile_->ConnectSco(device), true);
11519e95205Sopenharmony_ci
11619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco end";
11719e95205Sopenharmony_ci}
11819e95205Sopenharmony_ci
11919e95205Sopenharmony_ci/*
12019e95205Sopenharmony_ci * @tc.number: HandsFreeUnit003
12119e95205Sopenharmony_ci * @tc.name: DisconnectSco
12219e95205Sopenharmony_ci * @tc.desc: Release the audio connection from remote HF device.
12319e95205Sopenharmony_ci*/
12419e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_DisconnectSco, TestSize.Level1)
12519e95205Sopenharmony_ci{
12619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco start";
12719e95205Sopenharmony_ci
12819e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
12919e95205Sopenharmony_ci    BluetoothRemoteDevice device;
13019e95205Sopenharmony_ci    EXPECT_EQ(profile_->DisconnectSco(device), true);
13119e95205Sopenharmony_ci
13219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco end";
13319e95205Sopenharmony_ci}
13419e95205Sopenharmony_ci
13519e95205Sopenharmony_ci/*
13619e95205Sopenharmony_ci * @tc.number: HandsFreeUnit004
13719e95205Sopenharmony_ci * @tc.name: GetDevicesByStates
13819e95205Sopenharmony_ci * @tc.desc: Get remote AG device list which are in the specified states.
13919e95205Sopenharmony_ci*/
14019e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_GetDevicesByStates, TestSize.Level1)
14119e95205Sopenharmony_ci{
14219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates start";
14319e95205Sopenharmony_ci
14419e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
14519e95205Sopenharmony_ci    BluetoothRemoteDevice device;
14619e95205Sopenharmony_ci    vector<int> states = {static_cast<int>(BTConnectState::CONNECTED)};
14719e95205Sopenharmony_ci    vector<BluetoothRemoteDevice> devices = profile_->GetDevicesByStates(states);
14819e95205Sopenharmony_ci
14919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates end";
15019e95205Sopenharmony_ci}
15119e95205Sopenharmony_ci
15219e95205Sopenharmony_ci/*
15319e95205Sopenharmony_ci * @tc.number: HandsFreeUnit005
15419e95205Sopenharmony_ci * @tc.name: GetDeviceState
15519e95205Sopenharmony_ci * @tc.desc: Get the connection state of the specified remote AG device.
15619e95205Sopenharmony_ci*/
15719e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_GetDeviceState, TestSize.Level1)
15819e95205Sopenharmony_ci{
15919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState start";
16019e95205Sopenharmony_ci
16119e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
16219e95205Sopenharmony_ci    BluetoothRemoteDevice device;
16319e95205Sopenharmony_ci    EXPECT_EQ(profile_->GetDeviceState(device), 0);
16419e95205Sopenharmony_ci
16519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState end";
16619e95205Sopenharmony_ci}
16719e95205Sopenharmony_ci
16819e95205Sopenharmony_ci/*
16919e95205Sopenharmony_ci * @tc.number: HandsFreeUnit006
17019e95205Sopenharmony_ci * @tc.name: GetScoState
17119e95205Sopenharmony_ci * @tc.desc: Get the Audio connection state of the specified remote AG device.
17219e95205Sopenharmony_ci*/
17319e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_GetScoState, TestSize.Level1)
17419e95205Sopenharmony_ci{
17519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetScoState start";
17619e95205Sopenharmony_ci
17719e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
17819e95205Sopenharmony_ci    BluetoothRemoteDevice device;
17919e95205Sopenharmony_ci    EXPECT_EQ(profile_->GetScoState(device), 0);
18019e95205Sopenharmony_ci
18119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetScoState end";
18219e95205Sopenharmony_ci}
18319e95205Sopenharmony_ci
18419e95205Sopenharmony_ci/*
18519e95205Sopenharmony_ci * @tc.number: HandsFreeUnit007
18619e95205Sopenharmony_ci * @tc.name: SendDTMFTone
18719e95205Sopenharmony_ci * @tc.desc: Send DTMF tone code to remote AG device.
18819e95205Sopenharmony_ci*/
18919e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_SendDTMFTone, TestSize.Level1)
19019e95205Sopenharmony_ci{
19119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SendDTMFTone start";
19219e95205Sopenharmony_ci
19319e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
19419e95205Sopenharmony_ci    BluetoothRemoteDevice device;
19519e95205Sopenharmony_ci    EXPECT_EQ(profile_->SendDTMFTone(device, 0), true);
19619e95205Sopenharmony_ci
19719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SendDTMFTone end";
19819e95205Sopenharmony_ci}
19919e95205Sopenharmony_ci
20019e95205Sopenharmony_ci
20119e95205Sopenharmony_ci/*
20219e95205Sopenharmony_ci * @tc.number: HandsFreeUnit008
20319e95205Sopenharmony_ci * @tc.name: Connect
20419e95205Sopenharmony_ci * @tc.desc: Initiate the establishment of a service level connection to remote AG device.
20519e95205Sopenharmony_ci*/
20619e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_Connect, TestSize.Level1)
20719e95205Sopenharmony_ci{
20819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect start";
20919e95205Sopenharmony_ci
21019e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
21119e95205Sopenharmony_ci    BluetoothRemoteDevice device;
21219e95205Sopenharmony_ci    EXPECT_EQ(profile_->Connect(device), true);
21319e95205Sopenharmony_ci
21419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect end";
21519e95205Sopenharmony_ci}
21619e95205Sopenharmony_ci
21719e95205Sopenharmony_ci/*
21819e95205Sopenharmony_ci * @tc.number: HandsFreeUnit009
21919e95205Sopenharmony_ci * @tc.name: Disconnect
22019e95205Sopenharmony_ci * @tc.desc: Release the audio connection from remote AG device.
22119e95205Sopenharmony_ci*/
22219e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_Disconnect, TestSize.Level1)
22319e95205Sopenharmony_ci{
22419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Disconnect start";
22519e95205Sopenharmony_ci
22619e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
22719e95205Sopenharmony_ci    BluetoothRemoteDevice device;
22819e95205Sopenharmony_ci    EXPECT_EQ(profile_->Disconnect(device), true);
22919e95205Sopenharmony_ci
23019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Disconnect end";
23119e95205Sopenharmony_ci}
23219e95205Sopenharmony_ci
23319e95205Sopenharmony_ci
23419e95205Sopenharmony_ci/*
23519e95205Sopenharmony_ci * @tc.number: HandsFreeUnit010
23619e95205Sopenharmony_ci * @tc.name: OpenVoiceRecognition
23719e95205Sopenharmony_ci * @tc.desc: Open voice recognition.
23819e95205Sopenharmony_ci*/
23919e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_OpenVoiceRecognition, TestSize.Level1)
24019e95205Sopenharmony_ci{
24119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition start";
24219e95205Sopenharmony_ci
24319e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
24419e95205Sopenharmony_ci    BluetoothRemoteDevice device;
24519e95205Sopenharmony_ci    EXPECT_EQ(profile_->OpenVoiceRecognition(device), true);
24619e95205Sopenharmony_ci
24719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition end";
24819e95205Sopenharmony_ci}
24919e95205Sopenharmony_ci
25019e95205Sopenharmony_ci/*
25119e95205Sopenharmony_ci * @tc.number: HandsFreeUnit011
25219e95205Sopenharmony_ci * @tc.name: CloseVoiceRecognition
25319e95205Sopenharmony_ci * @tc.desc: Close voice recognition.
25419e95205Sopenharmony_ci*/
25519e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_CloseVoiceRecognition, TestSize.Level1)
25619e95205Sopenharmony_ci{
25719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition start";
25819e95205Sopenharmony_ci
25919e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
26019e95205Sopenharmony_ci    BluetoothRemoteDevice device;
26119e95205Sopenharmony_ci    EXPECT_EQ(profile_->CloseVoiceRecognition(device), true);
26219e95205Sopenharmony_ci
26319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition end";
26419e95205Sopenharmony_ci}
26519e95205Sopenharmony_ci
26619e95205Sopenharmony_ci/*
26719e95205Sopenharmony_ci * @tc.number: HandsFreeUnit012
26819e95205Sopenharmony_ci * @tc.name: GetExistingCalls
26919e95205Sopenharmony_ci * @tc.desc: Get a list of all existing calls.
27019e95205Sopenharmony_ci*/
27119e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_GetExistingCalls, TestSize.Level1)
27219e95205Sopenharmony_ci{
27319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetExistingCalls start";
27419e95205Sopenharmony_ci
27519e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
27619e95205Sopenharmony_ci    BluetoothRemoteDevice device;
27719e95205Sopenharmony_ci    vector<HandsFreeUnitCall> calls = profile_->GetExistingCalls(device);
27819e95205Sopenharmony_ci
27919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetExistingCalls end";
28019e95205Sopenharmony_ci}
28119e95205Sopenharmony_ci
28219e95205Sopenharmony_ci/*
28319e95205Sopenharmony_ci * @tc.number: HandsFreeUnit013
28419e95205Sopenharmony_ci * @tc.name: AcceptIncomingCall
28519e95205Sopenharmony_ci * @tc.desc: Accept an incoming call.
28619e95205Sopenharmony_ci*/
28719e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_AcceptIncomingCall, TestSize.Level1)
28819e95205Sopenharmony_ci{
28919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_AcceptIncomingCall start";
29019e95205Sopenharmony_ci
29119e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
29219e95205Sopenharmony_ci    BluetoothRemoteDevice device;
29319e95205Sopenharmony_ci    EXPECT_EQ(profile_->AcceptIncomingCall(device, 0), true);
29419e95205Sopenharmony_ci
29519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_AcceptIncomingCall end";
29619e95205Sopenharmony_ci}
29719e95205Sopenharmony_ci
29819e95205Sopenharmony_ci/*
29919e95205Sopenharmony_ci * @tc.number: HandsFreeUnit014
30019e95205Sopenharmony_ci * @tc.name: HoldActiveCall
30119e95205Sopenharmony_ci * @tc.desc: Hold an active call.
30219e95205Sopenharmony_ci*/
30319e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_HoldActiveCall, TestSize.Level1)
30419e95205Sopenharmony_ci{
30519e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_HoldActiveCall start";
30619e95205Sopenharmony_ci
30719e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
30819e95205Sopenharmony_ci    BluetoothRemoteDevice device;
30919e95205Sopenharmony_ci    EXPECT_EQ(profile_->HoldActiveCall(device), true);
31019e95205Sopenharmony_ci
31119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_HoldActiveCall end";
31219e95205Sopenharmony_ci}
31319e95205Sopenharmony_ci
31419e95205Sopenharmony_ci/*
31519e95205Sopenharmony_ci * @tc.number: HandsFreeUnit015
31619e95205Sopenharmony_ci * @tc.name: RejectIncomingCall
31719e95205Sopenharmony_ci * @tc.desc: Reject an incoming call.
31819e95205Sopenharmony_ci*/
31919e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_RejectIncomingCall, TestSize.Level1)
32019e95205Sopenharmony_ci{
32119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RejectIncomingCall start";
32219e95205Sopenharmony_ci
32319e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
32419e95205Sopenharmony_ci    BluetoothRemoteDevice device;
32519e95205Sopenharmony_ci    EXPECT_EQ(profile_->RejectIncomingCall(device), true);
32619e95205Sopenharmony_ci
32719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RejectIncomingCall end";
32819e95205Sopenharmony_ci}
32919e95205Sopenharmony_ci
33019e95205Sopenharmony_ci/*
33119e95205Sopenharmony_ci * @tc.number: HandsFreeUnit016
33219e95205Sopenharmony_ci * @tc.name: FinishActiveCall
33319e95205Sopenharmony_ci * @tc.desc: Start dial with specified call number.
33419e95205Sopenharmony_ci*/
33519e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_FinishActiveCall, TestSize.Level1)
33619e95205Sopenharmony_ci{
33719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_FinishActiveCall start";
33819e95205Sopenharmony_ci
33919e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
34019e95205Sopenharmony_ci    BluetoothRemoteDevice device;
34119e95205Sopenharmony_ci    HandsFreeUnitCall call;
34219e95205Sopenharmony_ci    EXPECT_EQ(profile_->FinishActiveCall(device, call), true);
34319e95205Sopenharmony_ci
34419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_FinishActiveCall end";
34519e95205Sopenharmony_ci}
34619e95205Sopenharmony_ci
34719e95205Sopenharmony_ci/*
34819e95205Sopenharmony_ci * @tc.number: HandsFreeUnit017
34919e95205Sopenharmony_ci * @tc.name: StartDial
35019e95205Sopenharmony_ci * @tc.desc: Start dial with specified call number.
35119e95205Sopenharmony_ci*/
35219e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_StartDial, TestSize.Level1)
35319e95205Sopenharmony_ci{
35419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_StartDial start";
35519e95205Sopenharmony_ci
35619e95205Sopenharmony_ci    BluetoothRemoteDevice device;
35719e95205Sopenharmony_ci    std::string number = "000";
35819e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
35919e95205Sopenharmony_ci    std::optional<HandsFreeUnitCall> call = profile_->StartDial(device, number);
36019e95205Sopenharmony_ci
36119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_StartDial end";
36219e95205Sopenharmony_ci}
36319e95205Sopenharmony_ci
36419e95205Sopenharmony_ci/*
36519e95205Sopenharmony_ci * @tc.number: HandsFreeUnit018
36619e95205Sopenharmony_ci * @tc.name: RegisterObserver
36719e95205Sopenharmony_ci * @tc.desc: Register HandsFree Unit observer instance.
36819e95205Sopenharmony_ci*/
36919e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_RegisterObserver, TestSize.Level1)
37019e95205Sopenharmony_ci{
37119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver start";
37219e95205Sopenharmony_ci
37319e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
37419e95205Sopenharmony_ci    profile_->RegisterObserver(observer_);
37519e95205Sopenharmony_ci
37619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver end";
37719e95205Sopenharmony_ci}
37819e95205Sopenharmony_ci
37919e95205Sopenharmony_ci/*
38019e95205Sopenharmony_ci * @tc.number: HandsFreeUnit019
38119e95205Sopenharmony_ci * @tc.name: DeregisterObserver
38219e95205Sopenharmony_ci * @tc.desc: Deregister HandsFree Unit observer instance.
38319e95205Sopenharmony_ci*/
38419e95205Sopenharmony_ciHWTEST_F(HandsFreeUnitTest, HandsFreeUnit_UnitTest_DeregisterObserver, TestSize.Level1)
38519e95205Sopenharmony_ci{
38619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver start";
38719e95205Sopenharmony_ci
38819e95205Sopenharmony_ci    profile_ = HandsFreeUnit::GetProfile();
38919e95205Sopenharmony_ci    profile_->DeregisterObserver(observer_);
39019e95205Sopenharmony_ci
39119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver end";
39219e95205Sopenharmony_ci}
39319e95205Sopenharmony_ci
39419e95205Sopenharmony_ci}  // namespace Bluetooth
39519e95205Sopenharmony_ci}  // namespace OHOS