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