• 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 * @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 }