• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <gmock/gmock.h>
16 #include <gtest/gtest.h>
17 #include "bluetooth_errorcode.h"
18 #include "bluetooth_hfp_ag.h"
19 #include "bluetooth_host.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 using namespace std;
24 
25 namespace OHOS {
26 namespace Bluetooth {
27 constexpr int TIME = 2;
28 
29 class HandsFreeAudioGatewayObserverCommon : public HandsFreeAudioGatewayObserver {
30 public:
31     HandsFreeAudioGatewayObserverCommon() = default;
32     virtual ~HandsFreeAudioGatewayObserverCommon() = default;
33 
OnConnectionStateChanged(const BluetoothRemoteDevice & device,int state)34     void OnConnectionStateChanged(const BluetoothRemoteDevice &device, int state) {}
OnScoStateChanged(const BluetoothRemoteDevice & device,int state)35     void OnScoStateChanged(const BluetoothRemoteDevice &device, int state) {}
OnActiveDeviceChanged(const BluetoothRemoteDevice & device)36     void OnActiveDeviceChanged(const BluetoothRemoteDevice &device) {}
OnHfEnhancedDriverSafetyChanged(const BluetoothRemoteDevice & device,int indValue)37     void OnHfEnhancedDriverSafetyChanged(const BluetoothRemoteDevice &device, int indValue) {}
38 
39 private:
40 };
41 
42 static HandsFreeAudioGatewayObserverCommon observer_;
43 static HandsFreeAudioGateway *profile_;
44 static BluetoothHost *host_;
45 
46 class HandsFreeAudioGatewayTest : public testing::Test {
47 public:
HandsFreeAudioGatewayTest()48     HandsFreeAudioGatewayTest()
49     {}
~HandsFreeAudioGatewayTest()50     ~HandsFreeAudioGatewayTest()
51     {}
52 
53     static void SetUpTestCase(void);
54     static void TearDownTestCase(void);
55     void SetUp();
56     void TearDown();
57 };
58 
59 
SetUpTestCase(void)60 void HandsFreeAudioGatewayTest::SetUpTestCase(void)
61 {
62 
63 }
TearDownTestCase(void)64 void HandsFreeAudioGatewayTest::TearDownTestCase(void)
65 {
66 
67 }
SetUp()68 void HandsFreeAudioGatewayTest::SetUp()
69 {
70     host_ = &BluetoothHost::GetDefaultHost();
71     host_->EnableBt();
72     host_->EnableBle();
73     sleep(TIME);
74 }
75 
TearDown()76 void HandsFreeAudioGatewayTest::TearDown()
77 {
78     host_->DisableBt();
79     host_->DisableBle();
80     host_ = nullptr;
81 }
82 
83 
84 /*
85  * @tc.number: HandsFreeAudioGateway001
86  * @tc.name: GetProfile
87  * @tc.desc: Get the instance of HandsFreeAudioGateway object
88 */
89 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetProfile, TestSize.Level1)
90 {
91     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile start";
92 
93     profile_ = HandsFreeAudioGateway::GetProfile();
94 
95     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile end";
96 }
97 
98 
99 /*
100  * @tc.number: HandsFreeAudioGateway002
101  * @tc.name: GetConnectedDevices
102  * @tc.desc: Get remote HF device list which are in the connected state.
103 */
104 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetConnectedDevices, TestSize.Level1)
105 {
106     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetConnectedDevices start";
107 
108     profile_ = HandsFreeAudioGateway::GetProfile();
109     std::vector<BluetoothRemoteDevice> devices;
110     profile_->GetConnectedDevices(devices);
111 
112     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetConnectedDevices end";
113 }
114 
115 /*
116  * @tc.number: HandsFreeAudioGateway003
117  * @tc.name: GetDevicesByStates
118  * @tc.desc: Get remote HF device list which are in the specified states.
119 */
120 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetDevicesByStates, TestSize.Level1)
121 {
122     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates start";
123 
124     profile_ = HandsFreeAudioGateway::GetProfile();
125     vector<int> states = {static_cast<int>(BTConnectState::CONNECTED)};
126     std::vector<BluetoothRemoteDevice> devices;
127     profile_->GetDevicesByStates(states, devices);
128     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates end";
129 }
130 
131 /*
132  * @tc.number: HandsFreeAudioGateway004
133  * @tc.name: GetDeviceState
134  * @tc.desc: Get the connection state of the specified remote HF device.
135 */
136 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetDeviceState, TestSize.Level1)
137 {
138     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState start";
139 
140     profile_ = HandsFreeAudioGateway::GetProfile();
141     BluetoothRemoteDevice device;
142     int32_t state = static_cast<int32_t>(BTConnectState::DISCONNECTED);
143     int state = profile_->GetDeviceState(device, state);
144     EXPECT_EQ(state, 0);
145     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState end";
146 }
147 
148 
149 /*
150  * @tc.number: HandsFreeAudioGateway005
151  * @tc.name: Connect
152  * @tc.desc: Initiate the establishment of a service level connection to remote HF device.
153 */
154 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_Connect, TestSize.Level1)
155 {
156     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect start";
157 
158     profile_ = HandsFreeAudioGateway::GetProfile();
159     BluetoothRemoteDevice device;
160     bool isOK = (profile_->Connect(device) == BT_SUCCESS ? true : false);
161     EXPECT_EQ(isOK, true);
162 
163     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect end";
164 }
165 
166 
167 /*
168  * @tc.number: HandsFreeAudioGateway006
169  * @tc.name: Disconnect
170  * @tc.desc: Release the audio connection from remote HF device.
171 */
172 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_Disconnect, TestSize.Level1)
173 {
174     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ start";
175 
176     profile_ = HandsFreeAudioGateway::GetProfile();
177     BluetoothRemoteDevice device;
178     bool isOK = (profile_->Disconnect(device) == BT_SUCCESS ? true : false);
179     EXPECT_EQ(isOK, true);
180     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Disconnect end";
181 }
182 
183 
184 /*
185  * @tc.number: HandsFreeAudioGateway007
186  * @tc.name: GetScoState
187  * @tc.desc: Get the Audio connection state of the specified remote HF device.
188 */
189 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetScoState, TestSize.Level1)
190 {
191     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ start";
192 
193     profile_ = HandsFreeAudioGateway::GetProfile();
194     BluetoothRemoteDevice device;
195     int state = profile_->GetScoState(device);
196     EXPECT_EQ(state, 0);
197     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ end";
198 }
199 
200 
201 /*
202  * @tc.number: HandsFreeAudioGateway008
203  * @tc.name: ConnectSco
204  * @tc.desc: Initiate the establishment of an audio connection to remote active HF device.
205 */
206 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_ConnectSco, TestSize.Level1)
207 {
208     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco start";
209 
210     profile_ = HandsFreeAudioGateway::GetProfile();
211     bool isOK = profile_->ConnectSco();
212     EXPECT_EQ(isOK, true);
213     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco end";
214 }
215 
216 
217 /*
218  * @tc.number: HandsFreeAudioGateway009
219  * @tc.name: DisconnectSco
220  * @tc.desc: Release the audio connection from remote active HF device.
221 */
222 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_DisconnectSco, TestSize.Level1)
223 {
224     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco start";
225 
226     profile_ = HandsFreeAudioGateway::GetProfile();
227     bool isOK = profile_->DisconnectSco();
228     EXPECT_EQ(isOK, true);
229 
230     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco end";
231 }
232 
233 
234 /*
235  * @tc.number: HandsFreeAudioGateway010
236  * @tc.name: PhoneStateChanged
237  * @tc.desc: This function used to Update changed phone call informations.
238 */
239 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_PhoneStateChanged, TestSize.Level1)
240 {
241     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_PhoneStateChanged start";
242 
243     profile_ = HandsFreeAudioGateway::GetProfile();
244     profile_->PhoneStateChanged(0, 0, 0, "123", 0, "");
245     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_PhoneStateChanged end";
246 }
247 
248 
249 /*
250  * @tc.number: HandsFreeAudioGateway011
251  * @tc.name: ClccResponse
252  * @tc.desc: Send response for querying standard list current calls by remote Hf device.
253 */
254 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_ClccResponse, TestSize.Level1)
255 {
256     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ClccResponse start";
257 
258     profile_ = HandsFreeAudioGateway::GetProfile();
259     profile_->ClccResponse(0, 0, 0, 0, false, "123", 0);
260 
261     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ClccResponse end";
262 }
263 
264 
265 /*
266  * @tc.number: HandsFreeAudioGateway012
267  * @tc.name: OpenVoiceRecognition
268  * @tc.desc: Open the voice recognition.
269 */
270 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition, TestSize.Level1)
271 {
272     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition start";
273 
274     profile_ = HandsFreeAudioGateway::GetProfile();
275     BluetoothRemoteDevice device;
276     bool isOK = profile_->OpenVoiceRecognition(device);
277     EXPECT_EQ(isOK, true);
278 
279     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition end";
280 }
281 
282 
283 /*
284  * @tc.number: HandsFreeAudioGateway013
285  * @tc.name: CloseVoiceRecognition
286  * @tc.desc: Close the voice recognition.
287 */
288 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition, TestSize.Level1)
289 {
290     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition start";
291 
292     profile_ = HandsFreeAudioGateway::GetProfile();
293     BluetoothRemoteDevice device;
294     bool isOK = profile_->CloseVoiceRecognition(device);
295     EXPECT_EQ(isOK, true);
296 
297     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition end";
298 }
299 
300 
301 /*
302  * @tc.number: HandsFreeAudioGateway014
303  * @tc.name: SetActiveDevice
304  * @tc.desc: Set the active device for audio connection.
305 */
306 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_SetActiveDevice, TestSize.Level1)
307 {
308     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SetActiveDevice start";
309 
310     profile_ = HandsFreeAudioGateway::GetProfile();
311     BluetoothRemoteDevice device;
312     bool isOK = profile_->SetActiveDevice(device);
313     EXPECT_EQ(isOK, true);
314 
315     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SetActiveDevice end";
316 }
317 
318 /*
319  * @tc.number: HandsFreeAudioGateway015
320  * @tc.name: GetActiveDevice
321  * @tc.desc: Set the active device for audio connection.
322 */
323 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetActiveDevice, TestSize.Level1)
324 {
325     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetActiveDevice start";
326 
327     profile_ = HandsFreeAudioGateway::GetProfile();
328     BluetoothRemoteDevice device = profile_->GetActiveDevice();
329 
330     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetActiveDevice end";
331 }
332 
333 /*
334  * @tc.number: HandsFreeAudioGateway016
335  * @tc.name: RegisterObserver
336  * @tc.desc: Register HandsFree AudioGateway observer instance.
337 */
338 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_RegisterObserver, TestSize.Level1)
339 {
340     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver start";
341 
342     profile_ = HandsFreeAudioGateway::GetProfile();
343     profile_->RegisterObserver(&observer_);
344     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver end";
345 }
346 
347 /*
348  * @tc.number: HandsFreeAudioGateway017
349  * @tc.name: DeregisterObserver
350  * @tc.desc: Deregister HandsFree AudioGateway observer instance.
351 */
352 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_DeregisterObserver, TestSize.Level1)
353 {
354     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver start";
355 
356     profile_ = HandsFreeAudioGateway::GetProfile();
357     profile_->DeregisterObserver(&observer_);
358     GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver end";
359 }
360 
361 
362 }  // namespace Bluetooth
363 }  // namespace OHOS