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