• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 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  capturing drivers,
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 audio adapter capturing
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 OHOS::Audio;
42 
43 namespace {
44 class AudioHdiCaptureControlTest : public testing::Test {
45 public:
46     static void SetUpTestCase(void);
47     static void TearDownTestCase(void);
48     void SetUp();
49     void TearDown();
50 };
SetUpTestCase(void)51 void AudioHdiCaptureControlTest::SetUpTestCase(void) {}
52 
TearDownTestCase(void)53 void AudioHdiCaptureControlTest::TearDownTestCase(void) {}
54 
SetUp(void)55 void AudioHdiCaptureControlTest::SetUp(void) {}
56 
TearDown(void)57 void AudioHdiCaptureControlTest::TearDown(void) {}
58 
59 /**
60 * @tc.name  Test AudioCreateCapture API via legal input
61 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0001
62 * @tc.desc  Test the AudioCreateCapture API ,check whether 0 is returned if the AudioCapture object is created successfully
63 */
64 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0001, Function | MediumTest | Level1)
65 {
66     int32_t ret = -1;
67     struct AudioAdapter *adapter = nullptr;
68     struct AudioCapture *capture = nullptr;
69 
70     TestAudioManager* manager = GetAudioManagerFuncs();
71 
72     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
73     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
74     adapter->DestroyCapture(adapter, capture);
75     manager->UnloadAdapter(manager, adapter);
76 }
77 /**
78 * @tc.name  Test AudioCreateCapture API via creating a capture object when a render object was created
79 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0002
80 * @tc.desc  Test the AudioCreateCapture API as follows:
81      (1)service mode: 0 is returned  if the AudioCapture object  can be created successfully
82      (2)passthrough mode: -1 is returned  if the AudioCapture object falis to be created
83 */
84 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0002, Function | MediumTest | Level1)
85 {
86     int32_t ret = -1;
87     struct AudioAdapter *adapter = nullptr;
88     struct AudioCapture *firstCapture = nullptr;
89     struct AudioCapture *secondCapture = nullptr;
90     struct AudioPort* audioPort = nullptr;
91     struct AudioSampleAttributes attrs = {};
92     struct AudioDeviceDescriptor DevDesc = {};
93 
94 
95     TestAudioManager* manager = GetAudioManagerFuncs();
96     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, audioPort);
97     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
98     InitAttrs(attrs);
99     InitDevDesc(DevDesc, audioPort->portId, PIN_IN_MIC);
100     ret = adapter->CreateCapture(adapter, &DevDesc, &attrs, &firstCapture);
101     if (ret < 0) {
102         manager->UnloadAdapter(manager, adapter);
103         ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
104     }
105     ret = adapter->CreateCapture(adapter, &DevDesc, &attrs, &secondCapture);
106 #if defined (AUDIO_ADM_SERVICE)
107     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
108     adapter->DestroyCapture(adapter, secondCapture);
109 #endif
110 #if defined (AUDIO_ADM_SO) || defined (__LITEOS__)
111     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
112     adapter->DestroyCapture(adapter, firstCapture);
113 #endif
114     manager->UnloadAdapter(manager, adapter);
115 }
116 /**
117 * @tc.name  Test AudioCreateCapture API via creating a capture object when a render object was created
118 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0003
119 * @tc.desc  After calling the  AudioCreateCapture API,check whether 0 is returned if the AudioCapture object is created successfully
120             when AudioRender was created
121 */
122 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0003, Function | MediumTest | Level1)
123 {
124     int32_t ret = -1;
125     struct AudioAdapter *adapter = nullptr;
126     struct AudioRender *render = nullptr;
127     struct AudioCapture *capture = nullptr;
128     struct AudioPort* audioPort = nullptr;
129     struct AudioSampleAttributes attrs = {};
130     struct AudioDeviceDescriptor renderDevDesc = {};
131     struct AudioDeviceDescriptor captureDevDesc = {};
132 
133 
134     TestAudioManager* manager = GetAudioManagerFuncs();
135     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, audioPort);
136     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
137     InitAttrs(attrs);
138     InitDevDesc(renderDevDesc, audioPort->portId, PIN_OUT_SPEAKER);
139     InitDevDesc(captureDevDesc, audioPort->portId, PIN_IN_MIC);
140     ret = adapter->CreateRender(adapter, &renderDevDesc, &attrs, &render);
141     if (ret < 0) {
142         manager->UnloadAdapter(manager, adapter);
143         ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
144     }
145     ret = adapter->CreateCapture(adapter, &captureDevDesc, &attrs, &capture);
146     if (ret < 0) {
147         adapter->DestroyRender(adapter, render);
148         manager->UnloadAdapter(manager, adapter);
149         ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
150     }
151     adapter->DestroyRender(adapter, render);
152     adapter->DestroyCapture(adapter, capture);
153     manager->UnloadAdapter(manager, adapter);
154 }
155 /**
156 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter adapter is nullptr
157 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0005
158 * @tc.desc  After calling the AudioCreateCapture API,check whether -1 is returned if the input parameter adapter is nullptr
159 */
160 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0005, Function | MediumTest | Level1)
161 {
162     int32_t ret = -1;
163     struct AudioPort* capturePort = nullptr;
164     struct AudioDeviceDescriptor devDesc = {};
165     struct AudioSampleAttributes attrs = {};
166     struct AudioAdapter *adapter = nullptr;
167     struct AudioAdapter *adapterNull = nullptr;
168     struct AudioCapture *capture = nullptr;
169 
170 
171     TestAudioManager* manager = GetAudioManagerFuncs();
172     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
173     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
174     ret = InitAttrs(attrs);
175     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
176     ret = InitDevDesc(devDesc, capturePort->portId, PIN_IN_MIC);
177     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
178     ret = adapter->CreateCapture(adapterNull, &devDesc, &attrs, &capture);
179     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
180 
181     manager->UnloadAdapter(manager, adapter);
182 }
183 /**
184 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter desc is nullptr
185 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0006
186 * @tc.desc  After calling the AudioCreateCapture API,check whether -1 is returned if the input parameter desc is nullptr
187 */
188 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0006, Function | MediumTest | Level1)
189 {
190     int32_t ret = -1;
191     struct AudioPort* capturePort = nullptr;
192     struct AudioSampleAttributes attrs = {};
193     struct AudioDeviceDescriptor *devDesc = nullptr;
194     struct AudioAdapter *adapter = nullptr;
195     struct AudioCapture *capture = nullptr;
196 
197 
198     TestAudioManager* manager = GetAudioManagerFuncs();
199     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
200     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
201     ret = InitAttrs(attrs);
202     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
203     ret = adapter->CreateCapture(adapter, devDesc, &attrs, &capture);
204     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
205 
206     manager->UnloadAdapter(manager, adapter);
207 }
208 /**
209 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter attrs is nullptr
210 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0007
211 * @tc.desc After calling the AudioCreateCapture API,check whether -1 is returned if the input parameter attrs is nullptr
212 */
213 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0007, Function | MediumTest | Level1)
214 {
215     int32_t ret = -1;
216     struct AudioPort* capturePort = nullptr;
217     struct AudioDeviceDescriptor devDesc = {};
218     struct AudioSampleAttributes *attrs = nullptr;
219     struct AudioAdapter *adapter = nullptr;
220     struct AudioCapture *capture = nullptr;
221 
222 
223     TestAudioManager* manager = GetAudioManagerFuncs();
224     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
225     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
226     ret = InitDevDesc(devDesc, capturePort->portId, PIN_IN_MIC);
227     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
228     ret = adapter->CreateCapture(adapter, &devDesc, attrs, &capture);
229     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
230 
231     manager->UnloadAdapter(manager, adapter);
232 }
233 /**
234 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter capture is nullptr
235 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0008
236 * @tc.desc  After calling the AudioCreateCapture API,check whether -1 is returned if the input parameter capture is nullptr
237 */
238 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0008, Function | MediumTest | Level1)
239 {
240     int32_t ret = -1;
241     struct AudioPort* capturePort = nullptr;
242     struct AudioDeviceDescriptor devDesc = {};
243     struct AudioSampleAttributes attrs = {};
244     struct AudioAdapter *adapter = nullptr;
245     struct AudioCapture **capture = nullptr;
246 
247 
248     TestAudioManager* manager = GetAudioManagerFuncs();
249     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
250     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
251     ret = InitAttrs(attrs);
252     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
253     ret = InitDevDesc(devDesc, capturePort->portId, PIN_IN_MIC);
254     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
255     ret = adapter->CreateCapture(adapter, &devDesc, &attrs, capture);
256     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
257     manager->UnloadAdapter(manager, adapter);
258 }
259 /**
260 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter adapter which port type is PORT_OUT
261 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0008
262 * @tc.desc  After calling the AudioCreateCapture API,check whether -1 is returned if the port type of the specified adapter is PORT_OUT
263 */
264 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0009, Function | MediumTest | Level1)
265 {
266     int32_t ret = -1;
267     struct AudioPort* capturePort = nullptr;
268     struct AudioDeviceDescriptor devDesc = {};
269     struct AudioSampleAttributes attrs = {};
270     struct AudioAdapter *adapter = nullptr;
271     struct AudioCapture *capture = nullptr;
272 
273 
274     TestAudioManager* manager = GetAudioManagerFuncs();
275     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME_OUT, &adapter, capturePort);
276     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
277     ret = InitAttrs(attrs);
278     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
279     ret = InitDevDesc(devDesc, capturePort->portId, PIN_OUT_SPEAKER);
280     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
281     ret = adapter->CreateCapture(adapter, &devDesc, &attrs, &capture);
282     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
283     adapter->DestroyCapture(adapter, capture);
284     manager->UnloadAdapter(manager, adapter);
285 }
286 /**
287 * @tc.name  Test AudioCreateCapture API via setting the incoming parameter desc which portID is not configed
288 * @tc.number  SUB_Audio_HDI_AudioCreateCapture_0010
289 * @tc.desc  Test AudioCreateCapture interface,Returns -1 if the incoming parameter desc which portID is not configed
290 */
291 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioCreateCapture_0010, TestSize.Level1)
292 {
293     int32_t ret = -1;
294     struct AudioPort* capturePort = nullptr;
295     struct AudioDeviceDescriptor devDesc = {};
296     struct AudioSampleAttributes attrs = {};
297     uint32_t portID = 12;
298     struct AudioAdapter *adapter = nullptr;
299     struct AudioCapture *capture = nullptr;
300 
301 
302     TestAudioManager* manager = GetAudioManagerFuncs();
303     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
304     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
305     ret = InitAttrs(attrs);
306     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
307     ret = InitDevDesc(devDesc, portID, PIN_IN_MIC);
308     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
309     ret = adapter->CreateCapture(adapter, &devDesc, &attrs, &capture);
310     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
311     adapter->DestroyCapture(adapter, capture);
312     manager->UnloadAdapter(manager, adapter);
313 }
314 /**
315 * @tc.name  Test AudioDestroyCapture API via legal input
316 * @tc.number  SUB_Audio_HDI_AudioDestroyCapture_0001
317 * @tc.desc  After calling the AudioDestroyCapture API, check whether 0 is returned if the AudioCapture object is destroyed
318 */
319 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0001, Function | MediumTest | Level1)
320 {
321     int32_t ret = -1;
322     struct AudioAdapter *adapter = nullptr;
323     struct AudioCapture *capture = nullptr;
324 
325     TestAudioManager* manager = GetAudioManagerFuncs();
326 
327     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
328     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
329     ret = adapter->DestroyCapture(adapter, capture);
330     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
331     manager->UnloadAdapter(manager, adapter);
332 }
333 /**
334 * @tc.name  Test AudioDestroyCapture API via setting the incoming parameter adapter is nullptr
335 * @tc.number  SUB_Audio_HDI_AudioDestroyCapture_0002
336 * @tc.desc  After calling the AudioDestroyCapture API, check whether -1 is returned if the input parameter adapter is nullptr
337 */
338 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0002, Function | MediumTest | Level1)
339 {
340     int32_t ret = -1;
341     struct AudioAdapter *adapter = nullptr;
342     struct AudioAdapter *adapterNull = nullptr;
343     struct AudioCapture *capture = nullptr;
344 
345     TestAudioManager* manager = GetAudioManagerFuncs();
346 
347     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
348     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
349     ret = adapter->DestroyCapture(adapterNull, capture);
350     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
351     ret = adapter->DestroyCapture(adapter, capture);
352     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
353     manager->UnloadAdapter(manager, adapter);
354 }
355 /**
356 * @tc.name  Test AudioDestroyCapture API via setting the incoming parameter capture is nullptr
357 * @tc.number  SUB_Audio_HDI_AudioDestroyCapture_0003
358 * @tc.desc  After calling the AudioDestroyCapture API, check whether -1 is returned if the input parameter capture is nullptr
359 */
360 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_AudioDestroyCapture_0003, Function | MediumTest | Level1)
361 {
362     int32_t ret = -1;
363     struct AudioPort* capturePort = nullptr;
364     struct AudioAdapter *adapter = nullptr;
365     struct AudioCapture *capture = nullptr;
366 
367 
368     TestAudioManager* manager = GetAudioManagerFuncs();
369     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, capturePort);
370     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
371     ret = adapter->DestroyCapture(adapter, capture);
372     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
373     manager->UnloadAdapter(manager, adapter);
374 }
375 /**
376 * @tc.name  Test AudioCaptureStart API via legal input
377 * @tc.number  SUB_Audio_HDI_StartCapture_0001
378 * @tc.desc  After calling the CaptureStart API, check whether 0 is returned if the audiocapture object is started successfully
379 */
380 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0001, Function | MediumTest | Level1)
381 {
382     int32_t ret = -1;
383     TestAudioManager* manager = nullptr;
384     struct AudioAdapter *adapter = nullptr;
385     struct AudioCapture *capture = nullptr;
386 
387     manager = GetAudioManagerFuncs();
388 
389     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
390     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
391     ret = capture->control.Start((AudioHandle)capture);
392     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
393 
394     capture->control.Stop((AudioHandle)capture);
395     adapter->DestroyCapture(adapter, capture);
396     manager->UnloadAdapter(manager, adapter);
397 }
398 /**
399 * @tc.name  Test CaptureStart API via setting the incoming parameter handle is nullptr
400 * @tc.number  SUB_Audio_HDI_CaptureStart_0002
401 * @tc.desc  After calling the CaptureStart API, check whether -1 is returned if the incoming parameter handle is nullptr
402 */
403 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0002, Function | MediumTest | Level1)
404 {
405     int32_t ret = -1;
406     TestAudioManager* manager = nullptr;
407     struct AudioAdapter *adapter = nullptr;
408     struct AudioCapture *capture = nullptr;
409     struct AudioCapture *captureNull = nullptr;
410 
411     manager = GetAudioManagerFuncs();
412 
413     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
414     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
415     ret = capture->control.Start((AudioHandle)captureNull);
416     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
417 
418     capture->control.Stop((AudioHandle)capture);
419     adapter->DestroyCapture(adapter, capture);
420     manager->UnloadAdapter(manager, adapter);
421 }
422 /**
423 * @tc.name  Test AudioCaptureStart API via startingtwo capture objects continuously
424 * @tc.number  SUB_Audio_HDI_CaptureStart_0003
425 * @tc.desc  After the AudioCaptureStart API is successfully called twice , check whether 0 is returned
426 */
427 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStart_0003, Function | MediumTest | Level1)
428 {
429     int32_t ret = -1;
430     TestAudioManager* manager = {};
431     struct AudioAdapter *adapter = nullptr;
432     struct AudioCapture *capture = nullptr;
433 
434     manager = GetAudioManagerFuncs();
435 
436     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
437     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
438     ret = capture->control.Start((AudioHandle)capture);
439     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
440     ret = capture->control.Start((AudioHandle)capture);
441     EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
442 
443     capture->control.Stop((AudioHandle)capture);
444     adapter->DestroyCapture(adapter, capture);
445     manager->UnloadAdapter(manager, adapter);
446 }
447 /**
448 * @tc.name  Test AudioCaptureStop API via legal input
449 * @tc.number  SUB_Audio_HDI_CaptureStop_0001
450 * @tc.desc  After calling the CaptureStop API, check whether 0 is returned if the audiocapture object is stopped successfully
451 */
452 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0001, Function | MediumTest | Level1)
453 {
454     int32_t ret = -1;
455     TestAudioManager* manager = {};
456     struct AudioAdapter *adapter = nullptr;
457     struct AudioCapture *capture = nullptr;
458 
459     manager = GetAudioManagerFuncs();
460 
461     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
462     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
463     ret = capture->control.Stop((AudioHandle)capture);
464     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
465 
466     adapter->DestroyCapture(adapter, capture);
467     manager->UnloadAdapter(manager, adapter);
468 }
469 /**
470 * @tc.name  Test AudioCaptureStop API via stopping two capture objects continuously
471 * @tc.number  SUB_Audio_HDI_CaptureStop_0002
472 * @tc.desc  After calling the CaptureStop API twice , check whether -4 is returned
473 */
474 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0002, Function | MediumTest | Level1)
475 {
476     int32_t ret = -1;
477     TestAudioManager* manager = {};
478     struct AudioAdapter *adapter = nullptr;
479     struct AudioCapture *capture = nullptr;
480 
481     manager = GetAudioManagerFuncs();
482 
483     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
484     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
485     ret = capture->control.Stop((AudioHandle)capture);
486     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
487     ret = capture->control.Stop((AudioHandle)capture);
488     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
489 
490     adapter->DestroyCapture(adapter, capture);
491     manager->UnloadAdapter(manager, adapter);
492 }
493 /**
494 * @tc.name  Test AudioCaptureStop API via starting an AudioCapture object that has been stopped
495 * @tc.number  SUB_Audio_HDI_CaptureStop_0003
496 * @tc.desc   After calling the CaptureStop API, check whether 0 is returned if the AudioCapture object that has been stopped is started
497 */
498 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0003, Function | MediumTest | Level1)
499 {
500     int32_t ret = -1;
501     TestAudioManager* manager = {};
502     struct AudioAdapter *adapter = nullptr;
503     struct AudioCapture *capture = nullptr;
504 
505     manager = GetAudioManagerFuncs();
506 
507     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
508     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
509     ret = capture->control.Stop((AudioHandle)capture);
510     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
511     ret = capture->control.Start((AudioHandle)capture);
512     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
513 
514     capture->control.Stop((AudioHandle)capture);
515     adapter->DestroyCapture(adapter, capture);
516     manager->UnloadAdapter(manager, adapter);
517 }
518 /**
519 * @tc.name  Test AudioCaptureStop API via stopping an AudioCapture object that has not been started
520 * @tc.number  SUB_Audio_HDI_CaptureStop_0004
521 * @tc.desc After calling the CaptureStop API, check whether -4 is returned if the Audiocapture object has not been
522 */
523 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0004, Function | MediumTest | Level1)
524 {
525     int32_t ret = -1;
526     TestAudioManager* manager = {};
527     struct AudioAdapter *adapter = nullptr;
528     struct AudioCapture *capture = nullptr;
529 
530     manager = GetAudioManagerFuncs();
531 
532     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
533     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
534     ret = capture->control.Stop((AudioHandle)capture);
535     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
536 
537     adapter->DestroyCapture(adapter, capture);
538     manager->UnloadAdapter(manager, adapter);
539 }
540 /**
541 * @tc.name Test CaptureStop API via setting the  parameter handle to nullptr
542 * @tc.number  SUB_Audio_HDI_CaptureStop_0005
543 * @tc.desc After calling the CaptureStop API, check whether -1 is returned if the input parameter handle is nullptr
544 */
545 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureStop_0005, Function | MediumTest | Level1)
546 {
547     int32_t ret = -1;
548     TestAudioManager* manager = {};
549     struct AudioAdapter *adapter = nullptr;
550     struct AudioCapture *capture = nullptr;
551     struct AudioCapture *captureNull = nullptr;
552 
553     manager = GetAudioManagerFuncs();
554 
555     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
556     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
557     ret = capture->control.Stop((AudioHandle)captureNull);
558     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
559 
560     adapter->DestroyCapture(adapter, capture);
561     manager->UnloadAdapter(manager, adapter);
562 }
563 /**
564 * @tc.name  Test CapturePause API via legal input
565 * @tc.number  SUB_Audio_HDI_CapturePause_0001
566 * @tc.desc  After calling the CapturePause API, check whether -1 is returned if the capture that has been started is paused
567 */
568 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0001, Function | MediumTest | Level1)
569 {
570     int32_t ret = -1;
571     TestAudioManager* manager = {};
572     struct AudioAdapter *adapter = nullptr;
573     struct AudioCapture *capture = nullptr;
574 
575     manager = GetAudioManagerFuncs();
576 
577     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
578     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
579     ret = capture->control.Pause((AudioHandle)capture);
580     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
581 
582     ret = capture->control.Stop((AudioHandle)capture);
583     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
584     adapter->DestroyCapture(adapter, capture);
585     manager->UnloadAdapter(manager, adapter);
586 }
587 /**
588 * @tc.name  Test CapturePause API via calling it twice
589 * @tc.number  SUB_Audio_HDI_CapturePause_0002
590 * @tc.desc   After calling the CapturePause API twice ,check whether -1 is returned
591 */
592 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0002, Function | MediumTest | Level1)
593 {
594     int32_t ret = -1;
595     TestAudioManager* manager = {};
596     struct AudioAdapter *adapter = nullptr;
597     struct AudioCapture *capture = nullptr;
598 
599     manager = GetAudioManagerFuncs();
600 
601     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
602     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
603     ret = capture->control.Pause((AudioHandle)capture);
604     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
605     ret = capture->control.Pause((AudioHandle)capture);
606     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
607 
608     ret = capture->control.Stop((AudioHandle)capture);
609     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
610     adapter->DestroyCapture(adapter, capture);
611     manager->UnloadAdapter(manager, adapter);
612 }
613 /**
614 * @tc.name  Test CapturePause API via setting the  parameter handle to nullptr
615 * @tc.number  SUB_Audio_HDI_CapturePause_0003
616 * @tc.desc   After calling the CapturePause API, check whether -1 is returned if the input parameter handle is nullptr
617 */
618 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0003, Function | MediumTest | Level1)
619 {
620     int32_t ret = -1;
621     TestAudioManager* manager = {};
622     struct AudioAdapter *adapter = nullptr;
623     struct AudioCapture *capture = nullptr;
624     struct AudioCapture *captureNull = nullptr;
625 
626     manager = GetAudioManagerFuncs();
627 
628     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
629     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
630     ret = capture->control.Pause((AudioHandle)captureNull);
631     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
632 
633     ret = capture->control.Stop((AudioHandle)capture);
634     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
635     adapter->DestroyCapture(adapter, capture);
636     manager->UnloadAdapter(manager, adapter);
637 }
638 /**
639 * @tc.name  Test CapturePause API via pausing capture that has  not Started
640 * @tc.number  SUB_Audio_HDI_CapturePause_0004
641 * @tc.desc After calling the CapturePause API, check whether -1 is returned if the capture that has  not Started is paused .
642 */
643 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0004, Function | MediumTest | Level1)
644 {
645     int32_t ret = -1;
646     TestAudioManager* manager = {};
647     struct AudioAdapter *adapter = nullptr;
648     struct AudioCapture *capture = nullptr;
649 
650     manager = GetAudioManagerFuncs();
651 
652     ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME, &adapter, &capture);
653     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
654     ret = capture->control.Pause((AudioHandle)capture);
655     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
656 
657     adapter->DestroyCapture(adapter, capture);
658     manager->UnloadAdapter(manager, adapter);
659 }
660 /**
661 * @tc.name  Test CapturePause API via pausing capture that has stopped
662 * @tc.number  SUB_Audio_HDI_CapturePause_0005
663 * @tc.desc After calling the CapturePause API,check whether -1 is returned if the capture that has stopped is paused
664 */
665 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CapturePause_0005, Function | MediumTest | Level1)
666 {
667     int32_t ret = -1;
668     TestAudioManager* manager = {};
669     struct AudioAdapter *adapter = nullptr;
670     struct AudioCapture *capture = nullptr;
671     manager = GetAudioManagerFuncs();
672 
673 
674     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
675     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
676     ret = capture->control.Stop((AudioHandle)capture);
677     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
678     ret = capture->control.Pause((AudioHandle)capture);
679     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
680 
681     adapter->DestroyCapture(adapter, capture);
682     manager->UnloadAdapter(manager, adapter);
683 }
684 /**
685 * @tc.name  Test CaptureResume API via legal input
686 * @tc.number  SUB_Audio_HDI_CaptureResume_0001
687 * @tc.desc  After calling the CaptureResume API, check whether 0 is returned if the capture is resumed after being paused
688 */
689 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0001, Function | MediumTest | Level1)
690 {
691     int32_t ret = -1;
692     TestAudioManager* manager = {};
693     struct AudioAdapter *adapter = nullptr;
694     struct AudioCapture *capture = nullptr;
695 
696     manager = GetAudioManagerFuncs();
697 
698     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
699     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
700     ret = capture->control.Pause((AudioHandle)capture);
701     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
702     ret = capture->control.Resume((AudioHandle)capture);
703     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
704     ret = capture->control.Stop((AudioHandle)capture);
705     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
706     adapter->DestroyCapture(adapter, capture);
707     manager->UnloadAdapter(manager, adapter);
708 }
709 /**
710 * @tc.name  Test CaptureResume API via calling it twice
711 * @tc.number  SUB_Audio_HDI_CaptureResume_0002
712 * @tc.desc   After calling the CaptureResume API twice ,check whether -1 is returned
713 */
714 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0002, Function | MediumTest | Level1)
715 {
716     int32_t ret = -1;
717     TestAudioManager* manager = {};
718     struct AudioAdapter *adapter = nullptr;
719     struct AudioCapture *capture = nullptr;
720 
721     manager = GetAudioManagerFuncs();
722 
723     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
724     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
725     ret = capture->control.Pause((AudioHandle)capture);
726     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
727     ret = capture->control.Resume((AudioHandle)capture);
728     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
729     ret = capture->control.Resume((AudioHandle)capture);
730     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
731 
732     ret = capture->control.Stop((AudioHandle)capture);
733     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
734     adapter->DestroyCapture(adapter, capture);
735     manager->UnloadAdapter(manager, adapter);
736 }
737 
738 /**
739 * @tc.name  Test CaptureResume API via resuming capture that has started
740 * @tc.number  SUB_Audio_HDI_CaptureResume_0003
741 * @tc.desc  After calling the CaptureResume API, check whether -1 is returned if the capture is resumed after started
742 */
743 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0003, Function | MediumTest | Level1)
744 {
745     int32_t ret = -1;
746     TestAudioManager* manager = {};
747     struct AudioAdapter *adapter = nullptr;
748     struct AudioCapture *capture = nullptr;
749 
750     manager = GetAudioManagerFuncs();
751 
752     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
753     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
754     ret = capture->control.Resume((AudioHandle)capture);
755     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
756 
757     ret = capture->control.Stop((AudioHandle)capture);
758     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
759     adapter->DestroyCapture(adapter, capture);
760     manager->UnloadAdapter(manager, adapter);
761 }
762 /**
763 * @tc.name  Test CaptureResume API via setting the input parameter handle to nullptr
764 * @tc.number  SUB_Audio_HDI_CaptureResume_0004
765 * @tc.desc  After calling the CaptureResume API,check whether -1 is returned if the input parameter handle is nullptr
766 */
767 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0004, Function | MediumTest | Level1)
768 {
769     int32_t ret = -1;
770     TestAudioManager* manager = {};
771     struct AudioAdapter *adapter = nullptr;
772     struct AudioCapture *capture = nullptr;
773     struct AudioCapture *captureNull = nullptr;
774 
775     manager = GetAudioManagerFuncs();
776 
777     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
778     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
779     ret = capture->control.Pause((AudioHandle)capture);
780     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
781     ret = capture->control.Resume((AudioHandle)captureNull);
782     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
783 
784     ret = capture->control.Stop((AudioHandle)capture);
785     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
786     adapter->DestroyCapture(adapter, capture);
787     manager->UnloadAdapter(manager, adapter);
788 }
789 /**
790 * @tc.name  Test CaptureResume API via  resuming capture after stopped
791 * @tc.number  SUB_Audio_HDI_CaptureResume_0005
792 * @tc.desc  After calling the CaptureResume API, check whether -1 is returned if the capture is resumed after stopped
793 */
794 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0005, Function | MediumTest | Level1)
795 {
796     int32_t ret = -1;
797     TestAudioManager* manager = {};
798     struct AudioAdapter *adapter = nullptr;
799     struct AudioCapture *capture = nullptr;
800 
801     manager = GetAudioManagerFuncs();
802 
803     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
804     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
805     ret = capture->control.Stop((AudioHandle)capture);
806     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
807     ret = capture->control.Resume((AudioHandle)capture);
808     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
809 
810     adapter->DestroyCapture(adapter, capture);
811     manager->UnloadAdapter(manager, adapter);
812 }
813 /**
814 * @tc.name  Test CaptureResume API via the continuing to start capture after resumed
815 * @tc.number  SUB_Audio_HDI_CaptureResume_0006
816 * @tc.desc  After calling the CaptureResume API, check whether -1 is returned if the capture is started contionously after resumed
817 */
818 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0006, Function | MediumTest | Level1)
819 {
820     int32_t ret = -1;
821     TestAudioManager* manager = {};
822     struct AudioAdapter *adapter = nullptr;
823     struct AudioCapture *capture = nullptr;
824 
825     manager = GetAudioManagerFuncs();
826 
827     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
828     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
829     ret = capture->control.Pause((AudioHandle)capture);
830     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
831     ret = capture->control.Resume((AudioHandle)capture);
832     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
833     ret = capture->control.Start((AudioHandle)capture);
834     EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
835 
836     capture->control.Stop((AudioHandle)capture);
837     adapter->DestroyCapture(adapter, capture);
838     manager->UnloadAdapter(manager, adapter);
839 }
840 /**
841 * @tc.name  Test RenderResume API via starting,pausing,resuming, and stopping different capture objects
842 * @tc.number  SUB_Audio_HDI_CaptureResume_0007
843 * @tc.desc  After calling the RenderResume API, check whether 0 is returned if different objects are started,paused,resumed and stopped
844 */
845 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureResume_0007, Function | MediumTest | Level1)
846 {
847     int32_t ret1 = -1;
848     int32_t ret2 = -1;
849     TestAudioManager* manager = {};
850     struct AudioAdapter *adapterOne = nullptr;
851     struct AudioAdapter *adapterSec = nullptr;
852     struct AudioCapture *captureOne = nullptr;
853     struct AudioCapture *captureSec = nullptr;
854     manager = GetAudioManagerFuncs();
855 
856     ret1 = AudioCreateStartCapture(manager, &captureOne, &adapterOne, ADAPTER_NAME);
857     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret1);
858     ret1 = captureOne->control.Pause((AudioHandle)captureOne);
859     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
860     ret1 = captureOne->control.Resume((AudioHandle)captureOne);
861     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
862     ret1 = captureOne->control.Stop((AudioHandle)captureOne);
863     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret1);
864     adapterOne->DestroyCapture(adapterOne, captureOne);
865     manager->UnloadAdapter(manager, adapterOne);
866     ret2 = AudioCreateStartCapture(manager, &captureSec, &adapterSec, ADAPTER_NAME);
867     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret2);
868     ret2 = captureSec->control.Pause((AudioHandle)captureSec);
869     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
870     ret2 = captureSec->control.Resume((AudioHandle)captureSec);
871     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
872     ret2 = captureSec->control.Stop((AudioHandle)captureSec);
873     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret2);
874     adapterSec->DestroyCapture(adapterSec, captureSec);
875     manager->UnloadAdapter(manager, adapterSec);
876 }
877 /**
878     * @tc.name  Test CaptureFlush API via flushing the data in the buffer  after stopped
879     * @tc.number  SUB_Audio_HDI_CaptureFlush_0001
880     * @tc.desc   After calling the CaptureFlush API,check whether -2 is returned if the data in the buffer is flushed successfully after stopped.
881 */
882 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureFlush_0001, Function | MediumTest | Level1)
883 {
884     int32_t ret = -1;
885     TestAudioManager* manager = {};
886     struct AudioAdapter *adapter = nullptr;
887     struct AudioCapture *capture = nullptr;
888 
889     manager = GetAudioManagerFuncs();
890 
891     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
892     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
893     ret = capture->control.Stop((AudioHandle)capture);
894     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
895     ret = capture->control.Flush((AudioHandle)capture);
896     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret);
897 
898     adapter->DestroyCapture(adapter, capture);
899     manager->UnloadAdapter(manager, adapter);
900 }
901 /**
902 * @tc.name  Test CaptureFlush via flushing the data in the buffer when handle is nullptr
903 * @tc.number  SUB_Audio_HDI_CaptureFlush_0002
904 * @tc.desc After calling the CaptureFlush API,check whether -1 is returned if the data in the buffer is flushed when handle is nullptr
905 */
906 HWTEST_F(AudioHdiCaptureControlTest, SUB_Audio_HDI_CaptureFlush_0002, Function | MediumTest | Level1)
907 {
908     int32_t ret = -1;
909     TestAudioManager* manager = {};
910     struct AudioAdapter *adapter = nullptr;
911     struct AudioCapture *capture = nullptr;
912     struct AudioCapture *captureNull = nullptr;
913 
914     manager = GetAudioManagerFuncs();
915 
916     ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME);
917     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
918     ret = capture->control.Stop((AudioHandle)capture);
919     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
920     ret = capture->control.Flush((AudioHandle)captureNull);
921     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
922 
923     adapter->DestroyCapture(adapter, capture);
924     manager->UnloadAdapter(manager, adapter);
925 }
926 }
927