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,int cause)34 void OnConnectionStateChanged(const BluetoothRemoteDevice &device, int state, int cause) {}
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 std::shared_ptr<HandsFreeAudioGatewayObserverCommon> observer_ =
43 std::make_shared<HandsFreeAudioGatewayObserverCommon>();
44 static HandsFreeAudioGateway *profile_;
45 static BluetoothHost *host_;
46
47 class HandsFreeAudioGatewayTest : public testing::Test {
48 public:
HandsFreeAudioGatewayTest()49 HandsFreeAudioGatewayTest()
50 {}
~HandsFreeAudioGatewayTest()51 ~HandsFreeAudioGatewayTest()
52 {}
53
54 static void SetUpTestCase(void);
55 static void TearDownTestCase(void);
56 void SetUp();
57 void TearDown();
58 };
59
60
SetUpTestCase(void)61 void HandsFreeAudioGatewayTest::SetUpTestCase(void)
62 {
63
64 }
TearDownTestCase(void)65 void HandsFreeAudioGatewayTest::TearDownTestCase(void)
66 {
67
68 }
SetUp()69 void HandsFreeAudioGatewayTest::SetUp()
70 {
71 host_ = &BluetoothHost::GetDefaultHost();
72 host_->EnableBt();
73 host_->EnableBle();
74 sleep(TIME);
75 }
76
TearDown()77 void HandsFreeAudioGatewayTest::TearDown()
78 {
79 host_->DisableBt();
80 host_->DisableBle();
81 host_ = nullptr;
82 }
83
84
85 /*
86 * @tc.number: HandsFreeAudioGateway001
87 * @tc.name: GetProfile
88 * @tc.desc: Get the instance of HandsFreeAudioGateway object
89 */
90 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetProfile, TestSize.Level1)
91 {
92 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile start";
93
94 profile_ = HandsFreeAudioGateway::GetProfile();
95
96 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetProfile end";
97 }
98
99
100 /*
101 * @tc.number: HandsFreeAudioGateway002
102 * @tc.name: GetConnectedDevices
103 * @tc.desc: Get remote HF device list which are in the connected state.
104 */
105 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetConnectedDevices, TestSize.Level1)
106 {
107 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetConnectedDevices start";
108
109 profile_ = HandsFreeAudioGateway::GetProfile();
110 std::vector<BluetoothRemoteDevice> devices;
111 profile_->GetConnectedDevices(devices);
112
113 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetConnectedDevices end";
114 }
115
116 /*
117 * @tc.number: HandsFreeAudioGateway003
118 * @tc.name: GetDevicesByStates
119 * @tc.desc: Get remote HF device list which are in the specified states.
120 */
121 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetDevicesByStates, TestSize.Level1)
122 {
123 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates start";
124
125 profile_ = HandsFreeAudioGateway::GetProfile();
126 vector<int> states = {static_cast<int>(BTConnectState::CONNECTED)};
127 std::vector<BluetoothRemoteDevice> devices;
128 profile_->GetDevicesByStates(states, devices);
129 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDevicesByStates end";
130 }
131
132 /*
133 * @tc.number: HandsFreeAudioGateway004
134 * @tc.name: GetDeviceState
135 * @tc.desc: Get the connection state of the specified remote HF device.
136 */
137 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetDeviceState, TestSize.Level1)
138 {
139 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState start";
140
141 profile_ = HandsFreeAudioGateway::GetProfile();
142 BluetoothRemoteDevice device;
143 int32_t state = static_cast<int32_t>(BTConnectState::DISCONNECTED);
144 int state = profile_->GetDeviceState(device, state);
145 EXPECT_EQ(state, 0);
146 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetDeviceState end";
147 }
148
149
150 /*
151 * @tc.number: HandsFreeAudioGateway005
152 * @tc.name: Connect
153 * @tc.desc: Initiate the establishment of a service level connection to remote HF device.
154 */
155 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_Connect, TestSize.Level1)
156 {
157 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect start";
158
159 profile_ = HandsFreeAudioGateway::GetProfile();
160 BluetoothRemoteDevice device;
161 bool isOK = (profile_->Connect(device) == NO_ERROR ? true : false);
162 EXPECT_EQ(isOK, true);
163
164 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Connect end";
165 }
166
167
168 /*
169 * @tc.number: HandsFreeAudioGateway006
170 * @tc.name: Disconnect
171 * @tc.desc: Release the audio connection from remote HF device.
172 */
173 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_Disconnect, TestSize.Level1)
174 {
175 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ start";
176
177 profile_ = HandsFreeAudioGateway::GetProfile();
178 BluetoothRemoteDevice device;
179 bool isOK = (profile_->Disconnect(device) == NO_ERROR ? true : false);
180 EXPECT_EQ(isOK, true);
181 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_Disconnect end";
182 }
183
184
185 /*
186 * @tc.number: HandsFreeAudioGateway007
187 * @tc.name: GetScoState
188 * @tc.desc: Get the Audio connection state of the specified remote HF device.
189 */
190 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetScoState, TestSize.Level1)
191 {
192 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ start";
193
194 profile_ = HandsFreeAudioGateway::GetProfile();
195 BluetoothRemoteDevice device;
196 int state = profile_->GetScoState(device);
197 EXPECT_EQ(state, 0);
198 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ end";
199 }
200
201
202 /*
203 * @tc.number: HandsFreeAudioGateway008
204 * @tc.name: ConnectSco
205 * @tc.desc: Initiate the establishment of an audio connection to remote active HF device.
206 */
207 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_ConnectSco, TestSize.Level1)
208 {
209 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco start";
210
211 profile_ = HandsFreeAudioGateway::GetProfile();
212 bool isOK = profile_->ConnectSco();
213 EXPECT_EQ(isOK, true);
214 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ConnectSco end";
215 }
216
217
218 /*
219 * @tc.number: HandsFreeAudioGateway009
220 * @tc.name: DisconnectSco
221 * @tc.desc: Release the audio connection from remote active HF device.
222 */
223 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_DisconnectSco, TestSize.Level1)
224 {
225 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco start";
226
227 profile_ = HandsFreeAudioGateway::GetProfile();
228 bool isOK = profile_->DisconnectSco();
229 EXPECT_EQ(isOK, true);
230
231 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DisconnectSco end";
232 }
233
234
235 /*
236 * @tc.number: HandsFreeAudioGateway010
237 * @tc.name: PhoneStateChanged
238 * @tc.desc: This function used to Update changed phone call informations.
239 */
240 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_PhoneStateChanged, TestSize.Level1)
241 {
242 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_PhoneStateChanged start";
243
244 profile_ = HandsFreeAudioGateway::GetProfile();
245 profile_->PhoneStateChanged(0, 0, 0, "123", 0, "");
246 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_PhoneStateChanged end";
247 }
248
249
250 /*
251 * @tc.number: HandsFreeAudioGateway011
252 * @tc.name: ClccResponse
253 * @tc.desc: Send response for querying standard list current calls by remote Hf device.
254 */
255 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_ClccResponse, TestSize.Level1)
256 {
257 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ClccResponse start";
258
259 profile_ = HandsFreeAudioGateway::GetProfile();
260 profile_->ClccResponse(0, 0, 0, 0, false, "123", 0);
261
262 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_ClccResponse end";
263 }
264
265
266 /*
267 * @tc.number: HandsFreeAudioGateway012
268 * @tc.name: OpenVoiceRecognition
269 * @tc.desc: Open the voice recognition.
270 */
271 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition, TestSize.Level1)
272 {
273 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition start";
274
275 profile_ = HandsFreeAudioGateway::GetProfile();
276 BluetoothRemoteDevice device;
277 bool isOK = profile_->OpenVoiceRecognition(device);
278 EXPECT_EQ(isOK, true);
279
280 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_OpenVoiceRecognition end";
281 }
282
283
284 /*
285 * @tc.number: HandsFreeAudioGateway013
286 * @tc.name: CloseVoiceRecognition
287 * @tc.desc: Close the voice recognition.
288 */
289 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition, TestSize.Level1)
290 {
291 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition start";
292
293 profile_ = HandsFreeAudioGateway::GetProfile();
294 BluetoothRemoteDevice device;
295 bool isOK = profile_->CloseVoiceRecognition(device);
296 EXPECT_EQ(isOK, true);
297
298 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_CloseVoiceRecognition end";
299 }
300
301
302 /*
303 * @tc.number: HandsFreeAudioGateway014
304 * @tc.name: SetActiveDevice
305 * @tc.desc: Set the active device for audio connection.
306 */
307 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_SetActiveDevice, TestSize.Level1)
308 {
309 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SetActiveDevice start";
310
311 profile_ = HandsFreeAudioGateway::GetProfile();
312 BluetoothRemoteDevice device;
313 bool isOK = profile_->SetActiveDevice(device);
314 EXPECT_EQ(isOK, true);
315
316 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_SetActiveDevice end";
317 }
318
319 /*
320 * @tc.number: HandsFreeAudioGateway015
321 * @tc.name: GetActiveDevice
322 * @tc.desc: Set the active device for audio connection.
323 */
324 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_GetActiveDevice, TestSize.Level1)
325 {
326 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetActiveDevice start";
327
328 profile_ = HandsFreeAudioGateway::GetProfile();
329 BluetoothRemoteDevice device = profile_->GetActiveDevice();
330
331 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_GetActiveDevice end";
332 }
333
334 /*
335 * @tc.number: HandsFreeAudioGateway016
336 * @tc.name: RegisterObserver
337 * @tc.desc: Register HandsFree AudioGateway observer instance.
338 */
339 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_RegisterObserver, TestSize.Level1)
340 {
341 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver start";
342
343 profile_ = HandsFreeAudioGateway::GetProfile();
344 profile_->RegisterObserver(observer_);
345 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_RegisterObserver end";
346 }
347
348 /*
349 * @tc.number: HandsFreeAudioGateway017
350 * @tc.name: DeregisterObserver
351 * @tc.desc: Deregister HandsFree AudioGateway observer instance.
352 */
353 HWTEST_F(HandsFreeAudioGatewayTest, HandsFreeAudioGateway_UnitTest_DeregisterObserver, TestSize.Level1)
354 {
355 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver start";
356
357 profile_ = HandsFreeAudioGateway::GetProfile();
358 profile_->DeregisterObserver(observer_);
359 GTEST_LOG_(INFO) << "HandsFreeAudioGateway_UnitTest_DeregisterObserver end";
360 }
361
362
363 } // namespace Bluetooth
364 } // namespace OHOS