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