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
16 /**
17 * @addtogroup Audio
18 * @{
19 *
20 * @brief Defines audio-related APIs, including custom data types and functions for capture drivers function.
21 * accessing a driver adapter, and capturing audios.
22 *
23 * @since 1.0
24 * @version 1.0
25 */
26
27 /**
28 * @file audio_hdi_common.h
29 *
30 * @brief Declares APIs for operations related to the capturing audio adapter.
31 *
32 * @since 1.0
33 * @version 1.0
34 */
35
36 #include "audio_hdi_common.h"
37 #include "audio_hdicapture_control_test.h"
38
39 using namespace std;
40 using namespace testing::ext;
41 using namespace HMOS::Audio;
42
43 namespace {
44 const string ADAPTER_NAME_HDMI = "hdmi";
45 const string ADAPTER_NAME_USB = "usb";
46 const string ADAPTER_NAME_INTERNAL = "internal";
47
48 class AudioHdiCaptureControlTest : public testing::Test {
49 public:
50 static void SetUpTestCase(void);
51 static void TearDownTestCase(void);
52 void SetUp();
53 void TearDown();
54 static TestAudioManager *(*GetAudioManager)();
55 static void *handleSo;
56 #ifdef AUDIO_MPI_SO
57 static int32_t (*SdkInit)();
58 static void (*SdkExit)();
59 static void *sdkSo;
60 #endif
61 };
62
63 TestAudioManager *(*AudioHdiCaptureControlTest::GetAudioManager)() = nullptr;
64 void *AudioHdiCaptureControlTest::handleSo = nullptr;
65 #ifdef AUDIO_MPI_SO
66 int32_t (*AudioHdiCaptureControlTest::SdkInit)() = nullptr;
67 void (*AudioHdiCaptureControlTest::SdkExit)() = nullptr;
68 void *AudioHdiCaptureControlTest::sdkSo = nullptr;
69 #endif
70
SetUpTestCase(void)71 void AudioHdiCaptureControlTest::SetUpTestCase(void)
72 {
73 #ifdef AUDIO_MPI_SO
74 char sdkResolvedPath[] = HDF_LIBRARY_FULL_PATH("libhdi_audio_interface_lib_render");
75 sdkSo = dlopen(sdkResolvedPath, RTLD_LAZY);
76 if (sdkSo == nullptr) {
77 return;
78 }
79 SdkInit = (int32_t (*)())(dlsym(sdkSo, "MpiSdkInit"));
80 if (SdkInit == nullptr) {
81 return;
82 }
83 SdkExit = (void (*)())(dlsym(sdkSo, "MpiSdkExit"));
84 if (SdkExit == nullptr) {
85 return;
86 }
87 SdkInit();
88 #endif
89 char absPath[PATH_MAX] = {0};
90 if (realpath(RESOLVED_PATH.c_str(), absPath) == nullptr) {
91 return;
92 }
93 handleSo = dlopen(absPath, RTLD_LAZY);
94 if (handleSo == nullptr) {
95 return;
96 }
97 GetAudioManager = (TestAudioManager *(*)())(dlsym(handleSo, FUNCTION_NAME.c_str()));
98 if (GetAudioManager == nullptr) {
99 return;
100 }
101 }
102
TearDownTestCase(void)103 void AudioHdiCaptureControlTest::TearDownTestCase(void)
104 {
105 #ifdef AUDIO_MPI_SO
106 SdkExit();
107 if (sdkSo != nullptr) {
108 dlclose(sdkSo);
109 sdkSo = nullptr;
110 }
111 if (SdkInit != nullptr) {
112 SdkInit = nullptr;
113 }
114 if (SdkExit != nullptr) {
115 SdkExit = nullptr;
116 }
117 #endif
118 if (handleSo != nullptr) {
119 dlclose(handleSo);
120 handleSo = nullptr;
121 }
122 if (GetAudioManager != nullptr) {
123 GetAudioManager = nullptr;
124 }
125 }
126
SetUp(void)127 void AudioHdiCaptureControlTest::SetUp(void) {}
128
TearDown(void)129 void AudioHdiCaptureControlTest::TearDown(void) {}
130
131 /**
132 * @tc.name Test AudioCreateCapture API via legal input
133 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0001
134 * @tc.desc Test AudioCreateCapture interface,Returns 0 if the AudioCapture object is created successfully
135 * @tc.author: liweiming
136 */
137 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0001, TestSize.Level1)
138 {
139 int32_t ret = -1;
140 enum AudioPortPin pins = PIN_IN_MIC;
141 struct AudioAdapter *adapter = nullptr;
142 struct AudioCapture *capture = nullptr;
143
144 TestAudioManager* manager = GetAudioManager();
145 ASSERT_NE(nullptr, GetAudioManager);
146 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
147 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
148 adapter->DestroyCapture(adapter, capture);
149 manager->UnloadAdapter(manager, adapter);
150 }
151 /**
152 * @tc.name Test AudioCreateCapture API via creating a capture object when a render object was created
153 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0002
154 * @tc.desc test AudioCreateCapture interface:
155 (1)service mode:Returns 0,if the AudioCapture object can be created successfully which was created
156 (2)passthrough mode: Returns -1,if the AudioCapture object can't be created which was created
157 */
158 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0002, TestSize.Level1)
159 {
160 int32_t ret = -1;
161 enum AudioPortDirection portType = PORT_OUT_IN;
162 struct AudioAdapter *adapter = nullptr;
163 struct AudioCapture *firstCapture = nullptr;
164 struct AudioCapture *secondCapture = nullptr;
165 struct AudioPort* audioPort = nullptr;
166 struct AudioSampleAttributes attrs = {};
167 struct AudioDeviceDescriptor DevDesc = {};
168
169 ASSERT_NE(nullptr, GetAudioManager);
170 TestAudioManager* manager = GetAudioManager();
171 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, audioPort);
172 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
173 InitAttrs(attrs);
174 InitDevDesc(DevDesc, audioPort->portId, PIN_IN_MIC);
175 ret = adapter->CreateCapture(adapter, &DevDesc, &attrs, &firstCapture);
176 if (ret < 0) {
177 manager->UnloadAdapter(manager, adapter);
178 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
179 }
180 ret = adapter->CreateCapture(adapter, &DevDesc, &attrs, &secondCapture);
181 #if defined (AUDIO_ADM_SERVICE) || defined (AUDIO_MPI_SERVICE)
182 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
183 adapter->DestroyCapture(adapter, secondCapture);
184 #endif
185 #if defined (AUDIO_ADM_SO) || defined (AUDIO_MPI_SO) || defined (__LITEOS__)
186 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
187 adapter->DestroyCapture(adapter, firstCapture);
188 #endif
189 manager->UnloadAdapter(manager, adapter);
190 }
191 /**
192 * @tc.name Test AudioCreateCapture API via creating a capture object when a render object was created
193 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0003
194 * @tc.desc test AudioCreateCapture interface,Returns 0 if the AudioCapture object can be created successfully
195 when AudioRender was created
196 */
197 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0003, TestSize.Level1)
198 {
199 int32_t ret = -1;
200 enum AudioPortDirection portType = PORT_OUT_IN;
201 struct AudioAdapter *adapter = nullptr;
202 struct AudioRender *render = nullptr;
203 struct AudioCapture *capture = nullptr;
204 struct AudioPort* audioPort = nullptr;
205 struct AudioSampleAttributes attrs = {};
206 struct AudioDeviceDescriptor renderDevDesc = {};
207 struct AudioDeviceDescriptor captureDevDesc = {};
208
209 ASSERT_NE(nullptr, GetAudioManager);
210 TestAudioManager* manager = GetAudioManager();
211 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, audioPort);
212 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
213 InitAttrs(attrs);
214 InitDevDesc(renderDevDesc, audioPort->portId, PIN_OUT_SPEAKER);
215 InitDevDesc(captureDevDesc, audioPort->portId, PIN_IN_MIC);
216 ret = adapter->CreateRender(adapter, &renderDevDesc, &attrs, &render);
217 if (ret < 0) {
218 manager->UnloadAdapter(manager, adapter);
219 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
220 }
221 ret = adapter->CreateCapture(adapter, &captureDevDesc, &attrs, &capture);
222 if (ret < 0) {
223 adapter->DestroyRender(adapter, render);
224 manager->UnloadAdapter(manager, adapter);
225 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
226 }
227 adapter->DestroyRender(adapter, render);
228 adapter->DestroyCapture(adapter, capture);
229 manager->UnloadAdapter(manager, adapter);
230 }
231 /**
232 * @tc.name Test AudioCreateCapture API via creating two capture objects
233 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0004
234 * @tc.desc Test AudioCreateCapture interface,return 0 if the the two audiocapture objects are created successfully
235 * @tc.author: liweiming
236 */
237 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0004, TestSize.Level1)
238 {
239 int32_t ret = -1;
240 enum AudioPortPin pins = PIN_IN_MIC;
241 struct AudioAdapter *adapterFirst = nullptr;
242 struct AudioAdapter *adapterSecond = nullptr;
243 struct AudioCapture *captureFirst = nullptr;
244 struct AudioCapture *captureSecond = nullptr;
245
246 ASSERT_NE(nullptr, GetAudioManager);
247 TestAudioManager* manager = GetAudioManager();
248 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapterFirst, &captureFirst);
249 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
250 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_INTERNAL, &adapterSecond, &captureSecond);
251 if (ret < 0) {
252 adapterFirst->DestroyCapture(adapterFirst, captureFirst);
253 manager->UnloadAdapter(manager, adapterFirst);
254 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
255 }
256 adapterFirst->DestroyCapture(adapterFirst, captureFirst);
257 adapterSecond->DestroyCapture(adapterSecond, captureSecond);
258 manager->UnloadAdapter(manager, adapterFirst);
259 manager->UnloadAdapter(manager, adapterSecond);
260 }
261 /**
262 * @tc.name Test AudioCreateCapture API via setting the incoming parameter adapter is nullptr
263 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0005
264 * @tc.desc Test AudioCreateCapture interface,Returns -1 if the incoming parameter adapter is nullptr
265 * @tc.author: liweiming
266 */
267 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0005, TestSize.Level1)
268 {
269 int32_t ret = -1;
270 struct AudioPort* capturePort = nullptr;
271 struct AudioDeviceDescriptor devDesc = {};
272 struct AudioSampleAttributes attrs = {};
273 enum AudioPortDirection portType = PORT_IN;
274 enum AudioPortPin pins = PIN_IN_MIC;
275 struct AudioAdapter *adapter = nullptr;
276 struct AudioAdapter *adapterNull = nullptr;
277 struct AudioCapture *capture = nullptr;
278
279 ASSERT_NE(nullptr, GetAudioManager);
280 TestAudioManager* manager = GetAudioManager();
281 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, capturePort);
282 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
283 ret = InitAttrs(attrs);
284 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
285 ret = InitDevDesc(devDesc, capturePort->portId, pins);
286 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
287 ret = adapter->CreateCapture(adapterNull, &devDesc, &attrs, &capture);
288 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
289
290 manager->UnloadAdapter(manager, adapter);
291 }
292 /**
293 * @tc.name Test AudioCreateCapture API via setting the incoming parameter desc is nullptr
294 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0006
295 * @tc.desc Test AudioCreateCapture interface,Returns -1 if the incoming parameter desc is nullptr
296 * @tc.author: liweiming
297 */
298 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0006, TestSize.Level1)
299 {
300 int32_t ret = -1;
301 struct AudioPort* capturePort = nullptr;
302 struct AudioSampleAttributes attrs = {};
303 enum AudioPortDirection portType = PORT_IN;
304 struct AudioDeviceDescriptor *devDesc = nullptr;
305 struct AudioAdapter *adapter = nullptr;
306 struct AudioCapture *capture = nullptr;
307
308 ASSERT_NE(nullptr, GetAudioManager);
309 TestAudioManager* manager = GetAudioManager();
310 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, capturePort);
311 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
312 ret = InitAttrs(attrs);
313 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
314 ret = adapter->CreateCapture(adapter, devDesc, &attrs, &capture);
315 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
316
317 manager->UnloadAdapter(manager, adapter);
318 }
319 /**
320 * @tc.name Test AudioCreateCapture API via setting the incoming parameter attrs is nullptr
321 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0007
322 * @tc.desc Test AudioCreateCapture interface,Returns -1 if the incoming parameter attrs is nullptr
323 * @tc.author: liweiming
324 */
325 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0007, TestSize.Level1)
326 {
327 int32_t ret = -1;
328 struct AudioPort* capturePort = nullptr;
329 struct AudioDeviceDescriptor devDesc = {};
330 enum AudioPortDirection portType = PORT_IN;
331 enum AudioPortPin pins = PIN_IN_MIC;
332 struct AudioSampleAttributes *attrs = nullptr;
333 struct AudioAdapter *adapter = nullptr;
334 struct AudioCapture *capture = nullptr;
335
336 ASSERT_NE(nullptr, GetAudioManager);
337 TestAudioManager* manager = GetAudioManager();
338 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, capturePort);
339 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
340 ret = InitDevDesc(devDesc, capturePort->portId, pins);
341 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
342 ret = adapter->CreateCapture(adapter, &devDesc, attrs, &capture);
343 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
344
345 manager->UnloadAdapter(manager, adapter);
346 }
347 /**
348 * @tc.name Test AudioCreateCapture API via setting the incoming parameter capture is nullptr
349 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0008
350 * @tc.desc Test AudioCreateCapture interface,Returns -1 if the incoming parameter capture is nullptr
351 * @tc.author: liweiming
352 */
353 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0008, TestSize.Level1)
354 {
355 int32_t ret = -1;
356 struct AudioPort* capturePort = nullptr;
357 struct AudioDeviceDescriptor devDesc = {};
358 struct AudioSampleAttributes attrs = {};
359 enum AudioPortDirection portType = PORT_IN;
360 enum AudioPortPin pins = PIN_IN_MIC;
361 struct AudioAdapter *adapter = nullptr;
362 struct AudioCapture **capture = nullptr;
363
364 ASSERT_NE(nullptr, GetAudioManager);
365 TestAudioManager* manager = GetAudioManager();
366 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, capturePort);
367 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
368 ret = InitAttrs(attrs);
369 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
370 ret = InitDevDesc(devDesc, capturePort->portId, pins);
371 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
372 ret = adapter->CreateCapture(adapter, &devDesc, &attrs, capture);
373 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
374 manager->UnloadAdapter(manager, adapter);
375 }
376 /**
377 * @tc.name Test AudioCreateCapture API via setting the incoming parameter adapter which port type is PORT_OUT
378 * @tc.number SUB_Audio_HDI_AudioCreateCapture_0008
379 * @tc.desc Test AudioCreateCapture interface,Returns -1 if the incoming parameter adapter which port type is PORT_OUT
380 * @tc.author: liweiming
381 */
382 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0009, TestSize.Level1)
383 {
384 int32_t ret = -1;
385 struct AudioPort* capturePort = nullptr;
386 struct AudioDeviceDescriptor devDesc = {};
387 struct AudioSampleAttributes attrs = {};
388 enum AudioPortDirection portType = PORT_OUT;
389 enum AudioPortPin pins = PIN_OUT_SPEAKER;
390 struct AudioAdapter *adapter = nullptr;
391 struct AudioCapture *capture = nullptr;
392
393 ASSERT_NE(nullptr, GetAudioManager);
394 TestAudioManager* manager = GetAudioManager();
395 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_HDMI, &adapter, capturePort);
396 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
397 ret = InitAttrs(attrs);
398 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
399 ret = InitDevDesc(devDesc, capturePort->portId, pins);
400 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
401 ret = adapter->CreateCapture(adapter, &devDesc, &attrs, &capture);
402 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
403 adapter->DestroyCapture(adapter, capture);
404 manager->UnloadAdapter(manager, adapter);
405 }
406 /**
407 * @tc.name Test AudioDestroyCapture API via legal input
408 * @tc.number SUB_Audio_HDI_AudioDestroyCapture_0001
409 * @tc.desc Test AudioDestroyCapture interface,Returns 0 if the AudioCapture object is destroyed
410 * @tc.author: liweiming
411 */
412 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0001, TestSize.Level1)
413 {
414 int32_t ret = -1;
415 enum AudioPortPin pins = PIN_IN_MIC;
416 struct AudioAdapter *adapter = nullptr;
417 struct AudioCapture *capture = nullptr;
418
419 TestAudioManager* manager = GetAudioManager();
420 ASSERT_NE(nullptr, GetAudioManager);
421 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
422 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
423 ret = adapter->DestroyCapture(adapter, capture);
424 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
425 manager->UnloadAdapter(manager, adapter);
426 }
427 /**
428 * @tc.name Test AudioDestroyCapture API via setting the incoming parameter adapter is nullptr
429 * @tc.number SUB_Audio_HDI_AudioDestroyCapture_0002
430 * @tc.desc Test AudioDestroyCapture interface,Returns -1 if the incoming parameter adapter is nullptr
431 * @tc.author: liweiming
432 */
433 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0002, TestSize.Level1)
434 {
435 int32_t ret = -1;
436 enum AudioPortPin pins = PIN_IN_MIC;
437 struct AudioAdapter *adapter = nullptr;
438 struct AudioAdapter *adapterNull = nullptr;
439 struct AudioCapture *capture = nullptr;
440
441 TestAudioManager* manager = GetAudioManager();
442 ASSERT_NE(nullptr, GetAudioManager);
443 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
444 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
445 ret = adapter->DestroyCapture(adapterNull, capture);
446 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
447 ret = adapter->DestroyCapture(adapter, capture);
448 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
449 manager->UnloadAdapter(manager, adapter);
450 }
451 /**
452 * @tc.name Test AudioDestroyCapture API via setting the incoming parameter capture is nullptr
453 * @tc.number SUB_Audio_HDI_AudioDestroyCapture_0003
454 * @tc.desc Test AudioDestroyCapture interface,Returns -1 if the incoming parameter capture is nullptr
455 * @tc.author: liweiming
456 */
457 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0003, TestSize.Level1)
458 {
459 int32_t ret = -1;
460 struct AudioPort* capturePort = nullptr;
461 enum AudioPortDirection portType = PORT_IN;
462 struct AudioAdapter *adapter = nullptr;
463 struct AudioCapture *capture = nullptr;
464
465 ASSERT_NE(nullptr, GetAudioManager);
466 TestAudioManager* manager = GetAudioManager();
467 ret = GetLoadAdapter(manager, portType, ADAPTER_NAME_USB, &adapter, capturePort);
468 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
469 ret = adapter->DestroyCapture(adapter, capture);
470 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
471 manager->UnloadAdapter(manager, adapter);
472 }
473 /**
474 * @tc.name Test AudioCaptureStart API via legal input
475 * @tc.number SUB_Audio_HDI_StartCapture_0001
476 * @tc.desc Test AudioCaptureStart interface,return 0 if the audiocapture object is started successfully
477 * @tc.author: tiansuli
478 */
479 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0001, TestSize.Level1)
480 {
481 int32_t ret = -1;
482 TestAudioManager* manager = {};
483 enum AudioPortPin pins = PIN_IN_MIC;
484 struct AudioAdapter *adapter = nullptr;
485 struct AudioCapture *capture = nullptr;
486
487 manager = GetAudioManager();
488 ASSERT_NE(nullptr, GetAudioManager);
489 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
490 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
491 ret = capture->control.Start((AudioHandle)capture);
492 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
493
494 capture->control.Stop((AudioHandle)capture);
495 adapter->DestroyCapture(adapter, capture);
496 manager->UnloadAdapter(manager, adapter);
497 }
498 /**
499 * @tc.name Test CaptureStart API via setting the incoming parameter handle is nullptr
500 * @tc.number SUB_Audio_HDI_CaptureStart_0002
501 * @tc.desc Test CaptureStart interface,return -1 if the incoming parameter handle is nullptr
502 * @tc.author: tiansuli
503 */
504 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0002, TestSize.Level1)
505 {
506 int32_t ret = -1;
507 TestAudioManager* manager = {};
508 enum AudioPortPin pins = PIN_IN_MIC;
509 struct AudioAdapter *adapter = nullptr;
510 struct AudioCapture *capture = nullptr;
511 struct AudioCapture *captureNull = nullptr;
512
513 manager = GetAudioManager();
514 ASSERT_NE(nullptr, GetAudioManager);
515 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
516 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
517 ret = capture->control.Start((AudioHandle)captureNull);
518 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
519
520 capture->control.Stop((AudioHandle)capture);
521 adapter->DestroyCapture(adapter, capture);
522 manager->UnloadAdapter(manager, adapter);
523 }
524 /**
525 * @tc.name Test AudioCaptureStart API via start two capture object continuously
526 * @tc.number SUB_Audio_HDI_CaptureStart_0003
527 * @tc.desc Test AudioCaptureStart interface,return 0 if the Audiocapturestart was successfully called twice
528 * @tc.author: tiansuli
529 */
530 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0003, TestSize.Level1)
531 {
532 int32_t ret = -1;
533 TestAudioManager* manager = {};
534 enum AudioPortPin pins = PIN_IN_MIC;
535 struct AudioAdapter *adapter = nullptr;
536 struct AudioCapture *capture = nullptr;
537
538 manager = GetAudioManager();
539 ASSERT_NE(nullptr, GetAudioManager);
540 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
541 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
542 ret = capture->control.Start((AudioHandle)capture);
543 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
544 ret = capture->control.Start((AudioHandle)capture);
545 EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
546
547 capture->control.Stop((AudioHandle)capture);
548 adapter->DestroyCapture(adapter, capture);
549 manager->UnloadAdapter(manager, adapter);
550 }
551 /**
552 * @tc.name Test AudioCaptureStop API via legal input
553 * @tc.number SUB_Audio_HDI_CaptureStop_0001
554 * @tc.desc Test AudioCaptureStop interface,return 0 if the audiocapture object is stopped successfully
555 * @tc.author: tiansuli
556 */
557 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0001, TestSize.Level1)
558 {
559 int32_t ret = -1;
560 TestAudioManager* manager = {};
561 struct AudioAdapter *adapter = nullptr;
562 struct AudioCapture *capture = nullptr;
563
564 manager = GetAudioManager();
565 ASSERT_NE(nullptr, GetAudioManager);
566 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
567 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
568 ret = capture->control.Stop((AudioHandle)capture);
569 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
570
571 adapter->DestroyCapture(adapter, capture);
572 manager->UnloadAdapter(manager, adapter);
573 }
574 /**
575 * @tc.name Test AudioCaptureStop API via stop two capture object continuously
576 * @tc.number SUB_Audio_HDI_CaptureStop_0002
577 * @tc.desc Test AudioCaptureStop interface,return -4 if Audiocapturestop was successfully called twice
578 * @tc.author: tiansuli
579 */
580 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0002, TestSize.Level1)
581 {
582 int32_t ret = -1;
583 TestAudioManager* manager = {};
584 struct AudioAdapter *adapter = nullptr;
585 struct AudioCapture *capture = nullptr;
586
587 manager = GetAudioManager();
588 ASSERT_NE(nullptr, GetAudioManager);
589 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
590 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
591 ret = capture->control.Stop((AudioHandle)capture);
592 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
593 ret = capture->control.Stop((AudioHandle)capture);
594 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
595
596 adapter->DestroyCapture(adapter, capture);
597 manager->UnloadAdapter(manager, adapter);
598 }
599 /**
600 * @tc.name Test AudioCaptureStop API via start an audio capture after stopping
601 * @tc.number SUB_Audio_HDI_CaptureStop_0003
602 * @tc.desc Test AudioCaptureStop interface,return 0 if stop and start an audio capture successfully
603 * @tc.author: tiansuli
604 */
605 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0003, TestSize.Level1)
606 {
607 int32_t ret = -1;
608 TestAudioManager* manager = {};
609 struct AudioAdapter *adapter = nullptr;
610 struct AudioCapture *capture = nullptr;
611
612 manager = GetAudioManager();
613 ASSERT_NE(nullptr, GetAudioManager);
614 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
615 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
616 ret = capture->control.Stop((AudioHandle)capture);
617 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
618 ret = capture->control.Start((AudioHandle)capture);
619 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
620
621 capture->control.Stop((AudioHandle)capture);
622 adapter->DestroyCapture(adapter, capture);
623 manager->UnloadAdapter(manager, adapter);
624 }
625 /**
626 * @tc.name Test AudioCaptureStop API via the capture does not start and stop only
627 * @tc.number SUB_Audio_HDI_CaptureStop_0004
628 * @tc.desc Test AudioCaptureStop interface,return -4 if the capture does not start and stop only
629 * @tc.author: tiansuli
630 */
631 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0004, TestSize.Level1)
632 {
633 int32_t ret = -1;
634 TestAudioManager* manager = {};
635 enum AudioPortPin pins = PIN_IN_MIC;
636 struct AudioAdapter *adapter = nullptr;
637 struct AudioCapture *capture = nullptr;
638
639 manager = GetAudioManager();
640 ASSERT_NE(nullptr, GetAudioManager);
641 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
642 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
643 ret = capture->control.Stop((AudioHandle)capture);
644 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
645
646 adapter->DestroyCapture(adapter, capture);
647 manager->UnloadAdapter(manager, adapter);
648 }
649 /**
650 * @tc.name Test CaptureStop API via setting the incoming parameter handle is nullptr
651 * @tc.number SUB_Audio_HDI_CaptureStop_0005
652 * @tc.desc Test CaptureStop interface, return -1 if the incoming parameter handle is nullptr
653 * @tc.author: tiansuli
654 */
655 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0005, TestSize.Level1)
656 {
657 int32_t ret = -1;
658 TestAudioManager* manager = {};
659 struct AudioAdapter *adapter = nullptr;
660 struct AudioCapture *capture = nullptr;
661 struct AudioCapture *captureNull = nullptr;
662
663 manager = GetAudioManager();
664 ASSERT_NE(nullptr, GetAudioManager);
665 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
666 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
667 ret = capture->control.Stop((AudioHandle)captureNull);
668 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
669
670 adapter->DestroyCapture(adapter, capture);
671 manager->UnloadAdapter(manager, adapter);
672 }
673 /**
674 * @tc.name Test CapturePause API via legal input
675 * @tc.number SUB_Audio_HDI_CapturePause_0001
676 * @tc.desc test HDI CapturePause interface,return 0 if the capture is paused after start
677 * @tc.author: tiansuli
678 */
679 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0001, TestSize.Level1)
680 {
681 int32_t ret = -1;
682 TestAudioManager* manager = {};
683 struct AudioAdapter *adapter = nullptr;
684 struct AudioCapture *capture = nullptr;
685
686 manager = GetAudioManager();
687 ASSERT_NE(nullptr, GetAudioManager);
688 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
689 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
690 ret = capture->control.Pause((AudioHandle)capture);
691 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
692
693 ret = capture->control.Stop((AudioHandle)capture);
694 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
695 adapter->DestroyCapture(adapter, capture);
696 manager->UnloadAdapter(manager, adapter);
697 }
698 /**
699 * @tc.name Test CapturePause API via the interface is called twice in a row
700 * @tc.number SUB_Audio_HDI_CapturePause_0002
701 * @tc.desc Test CapturePause interface, return -1 the second time if CapturePause is called twice
702 * @tc.author: tiansuli
703 */
704 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0002, TestSize.Level1)
705 {
706 int32_t ret = -1;
707 TestAudioManager* manager = {};
708 struct AudioAdapter *adapter = nullptr;
709 struct AudioCapture *capture = nullptr;
710
711 manager = GetAudioManager();
712 ASSERT_NE(nullptr, GetAudioManager);
713 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
714 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
715 ret = capture->control.Pause((AudioHandle)capture);
716 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
717 ret = capture->control.Pause((AudioHandle)capture);
718 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
719
720 ret = capture->control.Stop((AudioHandle)capture);
721 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
722 adapter->DestroyCapture(adapter, capture);
723 manager->UnloadAdapter(manager, adapter);
724 }
725 /**
726 * @tc.name Test CapturePause API via setting the incoming parameter handle is nullptr
727 * @tc.number SUB_Audio_HDI_CapturePause_0003
728 * @tc.desc Test CapturePause interface,return -1 if the incoming parameter handle is nullptr
729 * @tc.author: tiansuli
730 */
731 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0003, TestSize.Level1)
732 {
733 int32_t ret = -1;
734 TestAudioManager* manager = {};
735 struct AudioAdapter *adapter = nullptr;
736 struct AudioCapture *capture = nullptr;
737 struct AudioCapture *captureNull = nullptr;
738
739 manager = GetAudioManager();
740 ASSERT_NE(nullptr, GetAudioManager);
741 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
742 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
743 ret = capture->control.Pause((AudioHandle)captureNull);
744 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
745
746 ret = capture->control.Stop((AudioHandle)capture);
747 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
748 adapter->DestroyCapture(adapter, capture);
749 manager->UnloadAdapter(manager, adapter);
750 }
751 /**
752 * @tc.name Test CapturePause API via the capture is not Started and paused only.
753 * @tc.number SUB_Audio_HDI_CapturePause_0004
754 * @tc.desc Test AudioRenderPause interface,return -1 if the capture is not Started and paused only.
755 * @tc.author: tiansuli
756 */
757 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0004, TestSize.Level1)
758 {
759 int32_t ret = -1;
760 TestAudioManager* manager = {};
761 enum AudioPortPin pins = PIN_IN_MIC;
762 struct AudioAdapter *adapter = nullptr;
763 struct AudioCapture *capture = nullptr;
764
765 manager = GetAudioManager();
766 ASSERT_NE(nullptr, GetAudioManager);
767 ret = AudioCreateCapture(manager, pins, ADAPTER_NAME_USB, &adapter, &capture);
768 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
769 ret = capture->control.Pause((AudioHandle)capture);
770 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
771
772 adapter->DestroyCapture(adapter, capture);
773 manager->UnloadAdapter(manager, adapter);
774 }
775 /**
776 * @tc.name Test CapturePause API via the capture is paused after stoped.
777 * @tc.number SUB_Audio_HDI_CapturePause_0005
778 * @tc.desc Test CapturePause interface, return -1 the capture is paused after stoped.
779 * @tc.author: tiansuli
780 */
781 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0005, TestSize.Level1)
782 {
783 int32_t ret = -1;
784 TestAudioManager* manager = {};
785 struct AudioAdapter *adapter = nullptr;
786 struct AudioCapture *capture = nullptr;
787 manager = GetAudioManager();
788 ASSERT_NE(nullptr, GetAudioManager);
789
790 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
791 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
792 ret = capture->control.Stop((AudioHandle)capture);
793 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
794 ret = capture->control.Pause((AudioHandle)capture);
795 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
796
797 adapter->DestroyCapture(adapter, capture);
798 manager->UnloadAdapter(manager, adapter);
799 }
800 /**
801 * @tc.name Test CaptureResume API via legal input
802 * @tc.number SUB_Audio_HDI_CaptureResume_0001
803 * @tc.desc Test CaptureResume interface,return 0 if the capture is resumed after paused
804 * @tc.author: tiansuli
805 */
806 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0001, TestSize.Level1)
807 {
808 int32_t ret = -1;
809 TestAudioManager* manager = {};
810 struct AudioAdapter *adapter = nullptr;
811 struct AudioCapture *capture = nullptr;
812
813 manager = GetAudioManager();
814 ASSERT_NE(nullptr, GetAudioManager);
815 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
816 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
817 ret = capture->control.Pause((AudioHandle)capture);
818 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
819 ret = capture->control.Resume((AudioHandle)capture);
820 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
821 ret = capture->control.Stop((AudioHandle)capture);
822 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
823 adapter->DestroyCapture(adapter, capture);
824 manager->UnloadAdapter(manager, adapter);
825 }
826 /**
827 * @tc.name Test CaptureResume API via the interface is called twice in a row
828 * @tc.number SUB_Audio_HDI_CaptureResume_0002
829 * @tc.desc Test CaptureResume interface,return -1 the second time if the CaptureResume is called twice
830 * @tc.author: tiansuli
831 */
832 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0002, TestSize.Level1)
833 {
834 int32_t ret = -1;
835 TestAudioManager* manager = {};
836 struct AudioAdapter *adapter = nullptr;
837 struct AudioCapture *capture = nullptr;
838
839 manager = GetAudioManager();
840 ASSERT_NE(nullptr, GetAudioManager);
841 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
842 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
843 ret = capture->control.Pause((AudioHandle)capture);
844 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
845 ret = capture->control.Resume((AudioHandle)capture);
846 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
847 ret = capture->control.Resume((AudioHandle)capture);
848 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
849
850 ret = capture->control.Stop((AudioHandle)capture);
851 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
852 adapter->DestroyCapture(adapter, capture);
853 manager->UnloadAdapter(manager, adapter);
854 }
855
856 /**
857 * @tc.name Test CaptureResume API via the capture is resumed after started
858 * @tc.number SUB_Audio_HDI_CaptureResume_0003
859 * @tc.desc test HDI CaptureResume interface,return -1 if the capture is resumed after started
860 * @tc.author: tiansuli
861 */
862 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0003, TestSize.Level1)
863 {
864 int32_t ret = -1;
865 TestAudioManager* manager = {};
866 struct AudioAdapter *adapter = nullptr;
867 struct AudioCapture *capture = nullptr;
868
869 manager = GetAudioManager();
870 ASSERT_NE(nullptr, GetAudioManager);
871 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
872 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
873 ret = capture->control.Resume((AudioHandle)capture);
874 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
875
876 ret = capture->control.Stop((AudioHandle)capture);
877 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
878 adapter->DestroyCapture(adapter, capture);
879 manager->UnloadAdapter(manager, adapter);
880 }
881 /**
882 * @tc.name Test CaptureResume API via setting the incoming parameter handle is nullptr
883 * @tc.number SUB_Audio_HDI_CaptureResume_0004
884 * @tc.desc Test CaptureResume interface, return -1 if the incoming parameter handle is nullptr
885 * @tc.author: tiansuli
886 */
887 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0004, TestSize.Level1)
888 {
889 int32_t ret = -1;
890 TestAudioManager* manager = {};
891 struct AudioAdapter *adapter = nullptr;
892 struct AudioCapture *capture = nullptr;
893 struct AudioCapture *captureNull = nullptr;
894
895 manager = GetAudioManager();
896 ASSERT_NE(nullptr, GetAudioManager);
897 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
898 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
899 ret = capture->control.Pause((AudioHandle)capture);
900 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
901 ret = capture->control.Resume((AudioHandle)captureNull);
902 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
903
904 ret = capture->control.Stop((AudioHandle)capture);
905 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
906 adapter->DestroyCapture(adapter, capture);
907 manager->UnloadAdapter(manager, adapter);
908 }
909 /**
910 * @tc.name Test CaptureResume API via the capture is resumed after stopped
911 * @tc.number SUB_Audio_HDI_CaptureResume_0005
912 * @tc.desc test HDI CaptureResume interface,return -1 if the capture is resumed after stopped
913 * @tc.author: tiansuli
914 */
915 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0005, TestSize.Level1)
916 {
917 int32_t ret = -1;
918 TestAudioManager* manager = {};
919 struct AudioAdapter *adapter = nullptr;
920 struct AudioCapture *capture = nullptr;
921
922 manager = GetAudioManager();
923 ASSERT_NE(nullptr, GetAudioManager);
924 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
925 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
926 ret = capture->control.Stop((AudioHandle)capture);
927 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
928 ret = capture->control.Resume((AudioHandle)capture);
929 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
930
931 adapter->DestroyCapture(adapter, capture);
932 manager->UnloadAdapter(manager, adapter);
933 }
934 /**
935 * @tc.name Test CaptureResume API via the capture Continue to start after resume
936 * @tc.number SUB_Audio_HDI_CaptureResume_0006
937 * @tc.desc test HDI CaptureResume interface,return -1 if the capture Continue to start after resume
938 * @tc.author: tiansuli
939 */
940 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0006, TestSize.Level1)
941 {
942 int32_t ret = -1;
943 TestAudioManager* manager = {};
944 struct AudioAdapter *adapter = nullptr;
945 struct AudioCapture *capture = nullptr;
946
947 manager = GetAudioManager();
948 ASSERT_NE(nullptr, GetAudioManager);
949 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
950 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
951 ret = capture->control.Pause((AudioHandle)capture);
952 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
953 ret = capture->control.Resume((AudioHandle)capture);
954 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
955 ret = capture->control.Start((AudioHandle)capture);
956 EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
957
958 capture->control.Stop((AudioHandle)capture);
959 adapter->DestroyCapture(adapter, capture);
960 manager->UnloadAdapter(manager, adapter);
961 }
962 /**
963 * @tc.name Test RenderResume API via the different capture objects is started、paused、resumed and stopped.
964 * @tc.number SUB_Audio_HDI_CaptureResume_0007
965 * @tc.desc test HDI CaptureResume interface,return 0 if the different objects is started、paused、resumed and stopped.
966 * @tc.author: tiansuli
967 */
968 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0007, TestSize.Level1)
969 {
970 int32_t ret1 = -1;
971 int32_t ret2 = -1;
972 TestAudioManager* manager = {};
973 struct AudioAdapter *adapterOne = nullptr;
974 struct AudioAdapter *adapterSec = nullptr;
975 struct AudioCapture *captureOne = nullptr;
976 struct AudioCapture *captureSec = nullptr;
977 manager = GetAudioManager();
978 ASSERT_NE(nullptr, GetAudioManager);
979 ret1 = AudioCreateStartCapture(manager, &captureOne, &adapterOne, ADAPTER_NAME_USB);
980 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret1);
981 ret1 = captureOne->control.Pause((AudioHandle)captureOne);
982 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
983 ret1 = captureOne->control.Resume((AudioHandle)captureOne);
984 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
985 ret1 = captureOne->control.Stop((AudioHandle)captureOne);
986 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
987 adapterOne->DestroyCapture(adapterOne, captureOne);
988 manager->UnloadAdapter(manager, adapterOne);
989 ret2 = AudioCreateStartCapture(manager, &captureSec, &adapterSec, ADAPTER_NAME_USB);
990 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret2);
991 ret2 = captureSec->control.Pause((AudioHandle)captureSec);
992 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
993 ret2 = captureSec->control.Resume((AudioHandle)captureSec);
994 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
995 ret2 = captureSec->control.Stop((AudioHandle)captureSec);
996 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
997 adapterSec->DestroyCapture(adapterSec, captureSec);
998 manager->UnloadAdapter(manager, adapterSec);
999 }
1000 /**
1001 * @tc.name Test CaptureFlush API via legal input Verify that the data in the buffer is flushed after stop
1002 * @tc.number SUB_Audio_HDI_CaptureFlush_0001
1003 * @tc.desc Test CaptureFlush interface,return -2 if the data in the buffer is flushed successfully after stop
1004 * @tc.author: tiansuli
1005 */
1006 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureFlush_0001, TestSize.Level1)
1007 {
1008 int32_t ret = -1;
1009 TestAudioManager* manager = {};
1010 struct AudioAdapter *adapter = nullptr;
1011 struct AudioCapture *capture = nullptr;
1012
1013 manager = GetAudioManager();
1014 ASSERT_NE(nullptr, GetAudioManager);
1015 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
1016 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1017 ret = capture->control.Stop((AudioHandle)capture);
1018 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1019 ret = capture->control.Flush((AudioHandle)capture);
1020 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret);
1021
1022 adapter->DestroyCapture(adapter, capture);
1023 manager->UnloadAdapter(manager, adapter);
1024 }
1025 /**
1026 * @tc.name Test CaptureFlush that the data in the buffer is flushed when handle is nullptr
1027 * @tc.number SUB_Audio_HDI_CaptureFlush_0002
1028 * @tc.desc Test CaptureFlush, return -1 if the data in the buffer is flushed when handle is nullptr
1029 * @tc.author: tiansuli
1030 */
1031 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureFlush_0002, TestSize.Level1)
1032 {
1033 int32_t ret = -1;
1034 TestAudioManager* manager = {};
1035 struct AudioAdapter *adapter = nullptr;
1036 struct AudioCapture *capture = nullptr;
1037 struct AudioCapture *captureNull = nullptr;
1038
1039 manager = GetAudioManager();
1040 ASSERT_NE(nullptr, GetAudioManager);
1041 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
1042 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1043 ret = capture->control.Stop((AudioHandle)capture);
1044 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1045 ret = capture->control.Flush((AudioHandle)captureNull);
1046 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
1047
1048 adapter->DestroyCapture(adapter, capture);
1049 manager->UnloadAdapter(manager, adapter);
1050 }
1051 }