1 /*
2 * Copyright (c) 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 Test audio-related APIs, including custom data types and functions for loading drivers,
21 * accessing a driver adapter.
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 audio adapter.
31 *
32 * @since 1.0
33 * @version 1.0
34 */
35
36 #include "audio_hdi_common.h"
37 #include "audio_usb_caputer_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 const int BUFFER_SIZE = 16384;
46 const uint64_t FILESIZE = 1024;
47
48 class AudioUsbCaputerTest : public testing::Test {
49 public:
50 static void SetUpTestCase(void);
51 static void TearDownTestCase(void);
52 void SetUp();
53 void TearDown();
54 static TestAudioManager *manager;
55 };
56
57 using THREAD_FUNC = void *(*)(void *);
58 TestAudioManager *AudioUsbCaputerTest::manager = nullptr;
59
SetUpTestCase(void)60 void AudioUsbCaputerTest::SetUpTestCase(void)
61 {
62 manager = GetAudioManagerFuncs();
63 ASSERT_NE(nullptr, manager);
64 }
65
TearDownTestCase(void)66 void AudioUsbCaputerTest::TearDownTestCase(void) {}
67
SetUp(void)68 void AudioUsbCaputerTest::SetUp(void) {}
69
TearDown(void)70 void AudioUsbCaputerTest::TearDown(void) {}
71
72 /**
73 * @tc.name AudioStartCapture_001
74 * @tc.desc Test AudioCaptureStart interface,return 0 if the audiocapture object is started successfully
75 * @tc.type: FUNC
76 */
77 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStart_001, TestSize.Level1)
78 {
79 int32_t ret = -1;
80 struct AudioAdapter *adapter = nullptr;
81 struct AudioCapture *capture = nullptr;
82
83 ASSERT_NE(nullptr, manager);
84 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
85 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
86 ret = capture->control.Start((AudioHandle)capture);
87 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
88
89 ret = capture->control.Pause((AudioHandle)capture);
90 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
91 ret = capture->control.Resume((AudioHandle)capture);
92 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
93 ret = capture->control.Stop((AudioHandle)capture);
94 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
95 adapter->DestroyCapture(adapter, capture);
96 manager->UnloadAdapter(manager, adapter);
97 }
98 /**
99 * @tc.name AudioCaptureStart_003
100 * @tc.desc Test AudioCaptureStart interface,return 0 if the Audiocapturestart was successfully called twice
101 * @tc.type: FUNC
102 */
103 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStart_003, TestSize.Level1)
104 {
105 int32_t ret = -1;
106 struct AudioAdapter *adapter = nullptr;
107 struct AudioCapture *capture = nullptr;
108
109 ASSERT_NE(nullptr, manager);
110 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
111 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
112 ret = capture->control.Start((AudioHandle)capture);
113 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
114 ret = capture->control.Start((AudioHandle)capture);
115 EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
116
117 capture->control.Stop((AudioHandle)capture);
118 adapter->DestroyCapture(adapter, capture);
119 manager->UnloadAdapter(manager, adapter);
120 }
121 /**
122 * @tc.name AudioCaptureStop_001
123 * @tc.desc Test AudioCaptureStop interface,return 0 if the audiocapture object is stopped successfully
124 * @tc.type: FUNC
125 */
126 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStop_001, TestSize.Level1)
127 {
128 int32_t ret = -1;
129 struct AudioAdapter *adapter = nullptr;
130 struct AudioCapture *capture = nullptr;
131
132 ASSERT_NE(nullptr, manager);
133 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
134 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
135 ret = capture->control.Stop((AudioHandle)capture);
136 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
137
138 adapter->DestroyCapture(adapter, capture);
139 manager->UnloadAdapter(manager, adapter);
140 }
141 /**
142 * @tc.name AudioCaptureStop_002
143 * @tc.desc Test AudioCaptureStop interface,return -4 if Audiocapturestop was successfully called twice
144 * @tc.type: FUNC
145 */
146 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStop_002, TestSize.Level1)
147 {
148 int32_t ret = -1;
149 struct AudioAdapter *adapter = nullptr;
150 struct AudioCapture *capture = nullptr;
151
152 ASSERT_NE(nullptr, manager);
153 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
154 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
155 ret = capture->control.Stop((AudioHandle)capture);
156 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
157 ret = capture->control.Stop((AudioHandle)capture);
158 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
159
160 adapter->DestroyCapture(adapter, capture);
161 manager->UnloadAdapter(manager, adapter);
162 }
163 /**
164 * @tc.name AudioCaptureStop_003
165 * @tc.desc Test AudioCaptureStop interface,return 0 if stop and start an audio capture successfully
166 * @tc.type: FUNC
167 */
168 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStop_003, TestSize.Level1)
169 {
170 int32_t ret = -1;
171 struct AudioAdapter *adapter = nullptr;
172 struct AudioCapture *capture = nullptr;
173
174 ASSERT_NE(nullptr, manager);
175 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
176 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
177 ret = capture->control.Stop((AudioHandle)capture);
178 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
179 ret = capture->control.Start((AudioHandle)capture);
180 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
181
182 capture->control.Stop((AudioHandle)capture);
183 adapter->DestroyCapture(adapter, capture);
184 manager->UnloadAdapter(manager, adapter);
185 }
186 /**
187 * @tc.name AudioCaptureStop_004
188 * @tc.desc Test AudioCaptureStop interface,return -4 if the capture does not start and stop only
189 * @tc.type: FUNC
190 */
191 HWTEST_F(AudioUsbCaputerTest, AudioCaptureStop_004, TestSize.Level1)
192 {
193 int32_t ret = -1;
194 struct AudioAdapter *adapter = nullptr;
195 struct AudioCapture *capture = nullptr;
196
197 ASSERT_NE(nullptr, manager);
198 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
199 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
200 ret = capture->control.Stop((AudioHandle)capture);
201 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
202
203 adapter->DestroyCapture(adapter, capture);
204 manager->UnloadAdapter(manager, adapter);
205 }
206 /**
207 * @tc.name AudioCapturePause_001
208 * @tc.desc test HDI CapturePause interface,return 0 if the capture is paused after start
209 * @tc.type: FUNC
210 */
211 HWTEST_F(AudioUsbCaputerTest, AudioCapturePause_001, TestSize.Level1)
212 {
213 int32_t ret = -1;
214 struct AudioAdapter *adapter = nullptr;
215 struct AudioCapture *capture = nullptr;
216
217 ASSERT_NE(nullptr, manager);
218 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
219 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
220 ret = capture->control.Pause((AudioHandle)capture);
221 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
222
223 ret = capture->control.Stop((AudioHandle)capture);
224 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
225 adapter->DestroyCapture(adapter, capture);
226 manager->UnloadAdapter(manager, adapter);
227 }
228 /**
229 * @tc.name AudioCapturePause_002
230 * @tc.desc Test CapturePause interface, return -1 the second time if CapturePause is called twice
231 * @tc.type: FUNC
232 */
233 HWTEST_F(AudioUsbCaputerTest, AudioCapturePause_002, TestSize.Level1)
234 {
235 int32_t ret = -1;
236 struct AudioAdapter *adapter = nullptr;
237 struct AudioCapture *capture = nullptr;
238
239 ASSERT_NE(nullptr, manager);
240 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
241 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
242 ret = capture->control.Pause((AudioHandle)capture);
243 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
244 ret = capture->control.Pause((AudioHandle)capture);
245 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
246
247 ret = capture->control.Stop((AudioHandle)capture);
248 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
249 adapter->DestroyCapture(adapter, capture);
250 manager->UnloadAdapter(manager, adapter);
251 }
252 /**
253 * @tc.name AudioCapturePause_004
254 * @tc.desc Test AudioRenderPause interface,return -1 if the capture is not Started and paused only.
255 * @tc.type: FUNC
256 */
257 HWTEST_F(AudioUsbCaputerTest, AudioCapturePause_004, TestSize.Level1)
258 {
259 int32_t ret = -1;
260 struct AudioAdapter *adapter = nullptr;
261 struct AudioCapture *capture = nullptr;
262
263 ASSERT_NE(nullptr, manager);
264 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
265 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
266 ret = capture->control.Pause((AudioHandle)capture);
267 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
268
269 adapter->DestroyCapture(adapter, capture);
270 manager->UnloadAdapter(manager, adapter);
271 }
272 /**
273 * @tc.name AudioCapturePause_005
274 * @tc.desc Test CapturePause interface, return -1 the capture is paused after stopped.
275 * @tc.type: FUNC
276 */
277 HWTEST_F(AudioUsbCaputerTest, AudioCapturePause_005, TestSize.Level1)
278 {
279 int32_t ret = -1;
280 struct AudioAdapter *adapter = nullptr;
281 struct AudioCapture *capture = nullptr;
282 ASSERT_NE(nullptr, manager);
283
284 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
285 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
286 ret = capture->control.Stop((AudioHandle)capture);
287 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
288 ret = capture->control.Pause((AudioHandle)capture);
289 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
290
291 adapter->DestroyCapture(adapter, capture);
292 manager->UnloadAdapter(manager, adapter);
293 }
294 /**
295 * @tc.name AudioCaptureResume_001
296 * @tc.desc Test CaptureResume interface,return 0 if the capture is resumed after paused
297 * @tc.type: FUNC
298 */
299 HWTEST_F(AudioUsbCaputerTest, AudioCaptureResume_001, TestSize.Level1)
300 {
301 int32_t ret = -1;
302 struct AudioAdapter *adapter = nullptr;
303 struct AudioCapture *capture = nullptr;
304
305 ASSERT_NE(nullptr, manager);
306 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
307 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
308 ret = capture->control.Pause((AudioHandle)capture);
309 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
310 ret = capture->control.Resume((AudioHandle)capture);
311 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
312 ret = capture->control.Stop((AudioHandle)capture);
313 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
314 adapter->DestroyCapture(adapter, capture);
315 manager->UnloadAdapter(manager, adapter);
316 }
317 /**
318 * @tc.name AudioCaptureResume_002
319 * @tc.desc Test CaptureResume interface,return -1 the second time if the CaptureResume is called twice
320 * @tc.type: FUNC
321 */
322 HWTEST_F(AudioUsbCaputerTest, AudioCaptureResume_002, TestSize.Level1)
323 {
324 int32_t ret = -1;
325 struct AudioAdapter *adapter = nullptr;
326 struct AudioCapture *capture = nullptr;
327
328 ASSERT_NE(nullptr, manager);
329 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
330 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
331 ret = capture->control.Pause((AudioHandle)capture);
332 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
333 ret = capture->control.Resume((AudioHandle)capture);
334 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
335 ret = capture->control.Resume((AudioHandle)capture);
336 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
337
338 ret = capture->control.Stop((AudioHandle)capture);
339 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
340 adapter->DestroyCapture(adapter, capture);
341 manager->UnloadAdapter(manager, adapter);
342 }
343 /**
344 * @tc.name AudioCaptureResume_003
345 * @tc.desc test HDI CaptureResume interface,return -1 if the capture is resumed after started
346 * @tc.type: FUNC
347 */
348 HWTEST_F(AudioUsbCaputerTest, AudioCaptureResume_003, TestSize.Level1)
349 {
350 int32_t ret = -1;
351 struct AudioAdapter *adapter = nullptr;
352 struct AudioCapture *capture = nullptr;
353
354 ASSERT_NE(nullptr, manager);
355 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
356 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
357 ret = capture->control.Resume((AudioHandle)capture);
358 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
359
360 ret = capture->control.Stop((AudioHandle)capture);
361 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
362 adapter->DestroyCapture(adapter, capture);
363 manager->UnloadAdapter(manager, adapter);
364 }
365 /**
366 * @tc.name AudioCaptureResume_005
367 * @tc.desc test HDI CaptureResume interface,return -1 if the capture is resumed after stopped
368 * @tc.type: FUNC
369 */
370 HWTEST_F(AudioUsbCaputerTest, AudioCaptureResume_005, TestSize.Level1)
371 {
372 int32_t ret = -1;
373 struct AudioAdapter *adapter = nullptr;
374 struct AudioCapture *capture = nullptr;
375
376 ASSERT_NE(nullptr, manager);
377 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
378 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
379 ret = capture->control.Stop((AudioHandle)capture);
380 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
381 ret = capture->control.Resume((AudioHandle)capture);
382 EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, ret);
383
384 adapter->DestroyCapture(adapter, capture);
385 manager->UnloadAdapter(manager, adapter);
386 }
387 /**
388 * @tc.name AudioCaptureResume_006
389 * @tc.desc test HDI CaptureResume interface,return -1 if the capture Continue to start after resume
390 * @tc.type: FUNC
391 */
392 HWTEST_F(AudioUsbCaputerTest, AudioCaptureResume_006, TestSize.Level1)
393 {
394 int32_t ret = -1;
395 struct AudioAdapter *adapter = nullptr;
396 struct AudioCapture *capture = nullptr;
397
398 ASSERT_NE(nullptr, manager);
399 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
400 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
401 ret = capture->control.Pause((AudioHandle)capture);
402 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
403 ret = capture->control.Resume((AudioHandle)capture);
404 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
405 ret = capture->control.Start((AudioHandle)capture);
406 EXPECT_EQ(AUDIO_HAL_ERR_AI_BUSY, ret);
407
408 capture->control.Stop((AudioHandle)capture);
409 adapter->DestroyCapture(adapter, capture);
410 manager->UnloadAdapter(manager, adapter);
411 }
412 /**
413 * @tc.name AudioCaptureFlush_001
414 * @tc.desc Test CaptureFlush interface,return -2 if the data in the buffer is flushed successfully after stop
415 * @tc.type: FUNC
416 */
417 HWTEST_F(AudioUsbCaputerTest, AudioCaptureFlush_001, TestSize.Level1)
418 {
419 int32_t ret = -1;
420 struct AudioAdapter *adapter = nullptr;
421 struct AudioCapture *capture = nullptr;
422
423 ASSERT_NE(nullptr, manager);
424 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
425 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
426 ret = capture->control.Stop((AudioHandle)capture);
427 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
428 ret = capture->control.Flush((AudioHandle)capture);
429 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret);
430
431 adapter->DestroyCapture(adapter, capture);
432 manager->UnloadAdapter(manager, adapter);
433 }
434 /**
435 * @tc.name AudioCaptureSetSampleAttributes_001
436 * @tc.desc Test AudioCaptureSetSampleAttributes ,the setting parameters are as follows.
437 * attrs.type = AUDIO_IN_MEDIA;
438 * attrs.format = AUDIO_FORMAT_PCM_16_BIT;
439 * attrs.sampleRate = 8000;
440 * attrs.channelCount = 1;
441 * @tc.type: FUNC
442 */
443 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetSampleAttributes_001, TestSize.Level1)
444 {
445 int32_t ret = -1;
446 uint32_t ret1 = 1;
447 uint32_t ret2 = 8000;
448 struct AudioSampleAttributes attrs = {};
449 struct AudioSampleAttributes attrsValue = {};
450 struct AudioAdapter *adapter = nullptr;
451 struct AudioCapture *capture = nullptr;
452 ASSERT_NE(nullptr, manager);
453 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
454 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
455 InitAttrsUpdate(attrs, AUDIO_FORMAT_PCM_16_BIT, 1, 8000);
456
457 ret = AudioCaptureSetGetSampleAttributes(attrs, attrsValue, capture);
458 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
459 EXPECT_EQ(AUDIO_IN_MEDIA, attrsValue.type);
460 EXPECT_EQ(AUDIO_FORMAT_PCM_16_BIT, attrsValue.format);
461 EXPECT_EQ(ret2, attrsValue.sampleRate);
462 EXPECT_EQ(ret1, attrsValue.channelCount);
463
464 adapter->DestroyCapture(adapter, capture);
465 manager->UnloadAdapter(manager, adapter);
466 }
467 /**
468 * @tc.name AudioCaptureGetSampleAttributes_001
469 * @tc.desc Test AudioCaptureGetSampleAttributes ,the setting parameters are as follows.
470 * attrs.type = AUDIO_IN_MEDIA;
471 * attrs.format = AUDIO_FORMAT_PCM_16_BIT;
472 * attrs.sampleRate = 8000;
473 * attrs.channelCount = 1;
474 * @tc.type: FUNC
475 */
476 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetSampleAttributes_001, TestSize.Level1)
477 {
478 int32_t ret = -1;
479 uint32_t ret1 = 32000;
480 uint32_t ret2 = 1;
481 struct AudioSampleAttributes attrs = {};
482 struct AudioSampleAttributes attrsValue = {};
483 struct AudioAdapter *adapter = nullptr;
484 struct AudioCapture *capture = nullptr;
485 ASSERT_NE(nullptr, manager);
486 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
487 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
488 ret = capture->attr.GetSampleAttributes(capture, &attrsValue);
489 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
490 InitAttrsUpdate(attrs, AUDIO_FORMAT_PCM_16_BIT, 1, 32000);
491
492 ret = AudioCaptureSetGetSampleAttributes(attrs, attrsValue, capture);
493 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
494 EXPECT_EQ(AUDIO_IN_MEDIA, attrsValue.type);
495 EXPECT_EQ(AUDIO_FORMAT_PCM_16_BIT, attrsValue.format);
496 EXPECT_EQ(ret1, attrsValue.sampleRate);
497 EXPECT_EQ(ret2, attrsValue.channelCount);
498
499 adapter->DestroyCapture(adapter, capture);
500 manager->UnloadAdapter(manager, adapter);
501 }
502 /**
503 * @tc.name AudioCaptureGetFrameSize_001
504 * @tc.desc test AudioCaptureGetFrameSize interface, return 0 is call successfully.
505 * @tc.type: FUNC
506 */
507 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetFrameSize_001, TestSize.Level1)
508 {
509 int32_t ret = -1;
510 uint64_t size = 0;
511 struct AudioAdapter *adapter = nullptr;
512 struct AudioCapture *capture = nullptr;
513 ASSERT_NE(nullptr, manager);
514 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
515 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
516 ret = capture->attr.GetFrameSize(capture, &size);
517 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
518 EXPECT_GT(size, INITIAL_VALUE);
519
520 adapter->DestroyCapture(adapter, capture);
521 manager->UnloadAdapter(manager, adapter);
522 }
523 /**
524 * @tc.name AudioCaptureGetFrameCount_001
525 * @tc.desc test AudioCaptureGetFrameCount interface, return 0 if the FrameCount is called after creating the object.
526 * @tc.type: FUNC
527 */
528 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetFrameCount_001, TestSize.Level1)
529 {
530 int32_t ret = -1;
531 uint64_t count = 0;
532 struct AudioAdapter *adapter = nullptr;
533 struct AudioCapture *capture = nullptr;
534 ASSERT_NE(nullptr, manager);
535 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
536 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
537
538 ret = capture->attr.GetFrameCount(capture, &count);
539 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
540 EXPECT_EQ(count, INITIAL_VALUE);
541
542 adapter->DestroyCapture(adapter, capture);
543 manager->UnloadAdapter(manager, adapter);
544 }
545 /**
546 * @tc.name AudioCaptureGetFrameCount_002
547 * @tc.desc test AudioCaptureGetFrameCount interface, return 0 if the GetFrameCount is called after started.
548 * @tc.type: FUNC
549 */
550 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetFrameCount_002, TestSize.Level1)
551 {
552 int32_t ret = -1;
553 uint64_t count = 0;
554 struct AudioAdapter *adapter = nullptr;
555 struct AudioCapture *capture = nullptr;
556 ASSERT_NE(nullptr, manager);
557 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
558 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
559
560 ret = AudioCaptureStartAndOneFrame(capture);
561 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
562
563 ret = capture->attr.GetFrameCount(capture, &count);
564 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
565 EXPECT_GT(count, INITIAL_VALUE);
566
567 capture->control.Stop((AudioHandle)capture);
568 adapter->DestroyCapture(adapter, capture);
569 manager->UnloadAdapter(manager, adapter);
570 }
571
572 /**
573 * @tc.name AudioRenderGetCurrentChannelId_001
574 * @tc.desc Test GetCurrentChannelId, return 0 if the default CurrentChannelId is obtained successfully
575 * @tc.type: FUNC
576 */
577 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetCurrentChannelId_001, TestSize.Level1)
578 {
579 int32_t ret = -1;
580 uint32_t channelId = 0;
581 uint32_t channelIdValue = CHANNELCOUNT;
582 struct AudioAdapter *adapter = nullptr;
583 struct AudioCapture *capture = nullptr;
584 ASSERT_NE(nullptr, manager);
585 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
586 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
587
588 ret = capture->attr.GetCurrentChannelId(capture, &channelId);
589 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
590 EXPECT_EQ(channelIdValue, channelId);
591
592 adapter->DestroyCapture(adapter, capture);
593 manager->UnloadAdapter(manager, adapter);
594 }
595 /**
596 * @tc.name AudioCaptureGetCurrentChannelId_002
597 * @tc.desc Test GetCurrentChannelId interface,return 0 if get channelId to 1 and set channelCount to 1
598 * @tc.type: FUNC
599 */
600 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetCurrentChannelId_002, TestSize.Level1)
601 {
602 int32_t ret = -1;
603 uint32_t channelId = 0;
604 uint32_t channelIdExp = 1;
605 uint32_t channelCountExp = 1;
606 struct AudioSampleAttributes attrs = {};
607 struct AudioSampleAttributes attrsValue = {};
608 struct AudioAdapter *adapter = nullptr;
609 struct AudioCapture *capture = nullptr;
610 ASSERT_NE(nullptr, manager);
611 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
612 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
613
614 InitAttrsUpdate(attrs, AUDIO_FORMAT_PCM_16_BIT, 1, 48000);
615
616 ret = AudioCaptureSetGetSampleAttributes(attrs, attrsValue, capture);
617 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
618 EXPECT_EQ(channelCountExp, attrsValue.channelCount);
619
620 ret = capture->attr.GetCurrentChannelId(capture, &channelId);
621 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
622 EXPECT_EQ(channelIdExp, channelId);
623
624 adapter->DestroyCapture(adapter, capture);
625 manager->UnloadAdapter(manager, adapter);
626 }
627 /**
628 * @tc.name AudioCaptureGetCurrentChannelId_003
629 * @tc.desc Test GetCurrentChannelId interface, return 0 if CurrentChannelId is obtained after started
630 * @tc.type: FUNC
631 */
632 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetCurrentChannelId_003, TestSize.Level1)
633 {
634 int32_t ret = -1;
635 uint32_t channelId = 0;
636 uint32_t channelIdExp = 2;
637 struct AudioAdapter *adapter = nullptr;
638 struct AudioCapture *capture = nullptr;
639 ASSERT_NE(nullptr, manager);
640 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
641 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
642 ret = AudioCaptureStartAndOneFrame(capture);
643 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
644
645 ret = capture->attr.GetCurrentChannelId(capture, &channelId);
646 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
647 EXPECT_EQ(channelIdExp, channelId);
648
649 capture->control.Stop((AudioHandle)capture);
650 adapter->DestroyCapture(adapter, capture);
651 manager->UnloadAdapter(manager, adapter);
652 }
653 /**
654 * @tc.name AudioCaptureSetExtraParams_001
655 * @tc.desc Test CaptureSetExtraParams interface,return 0 if the ExtraParams is set during playback
656 * @tc.type: FUNC
657 */
658 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetExtraParams_001, TestSize.Level1)
659 {
660 int32_t ret = -1;
661 char keyValueList[] = "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000";
662 char keyValueListExp[] = "attr-route=1;attr-format=32;attr-channels=2;attr-sampling-rate=48000";
663 size_t index = 1;
664 char keyValueListValue[256] = {};
665 int32_t listLenth = 256;
666 uint64_t FILESIZE = 1024;
667 struct PrepareAudioPara audiopara = {
668 .portType = PORT_IN, .adapterName = ADAPTER_NAME_USB.c_str(), .pins = PIN_IN_MIC,
669 .path = AUDIO_CAPTURE_FILE.c_str(), .fileSize = FILESIZE
670 };
671 audiopara.manager = manager;
672 ASSERT_NE(nullptr, audiopara.manager);
673
674 ret = pthread_create(&audiopara.tids, NULL, (THREAD_FUNC)RecordAudio, &audiopara);
675 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
676 sleep(1);
677 if (audiopara.capture != nullptr) {
678 ret = audiopara.capture->attr.SetExtraParams((AudioHandle)audiopara.capture, keyValueList);
679 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
680 ret = audiopara.capture->attr.GetExtraParams((AudioHandle)audiopara.capture, keyValueListValue, listLenth);
681 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
682 string strGetValue = keyValueListValue;
683 size_t indexAttr = strGetValue.find("attr-frame-count");
684 size_t indexFlag = strGetValue.rfind(";");
685 if (indexAttr != string::npos && indexFlag != string::npos) {
686 strGetValue.replace(indexAttr, indexFlag - indexAttr + index, "");
687 }
688 EXPECT_STREQ(keyValueListExp, strGetValue.c_str());
689 }
690
691 ret = ThreadRelease(audiopara);
692 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
693 }
694 /**
695 * @tc.name AudioCaptureSetExtraParams_002
696 * @tc.desc Test CaptureSetExtraParams interface,return 0 if some parameters is set after playing
697 * @tc.type: FUNC
698 */
699 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetExtraParams_002, TestSize.Level1)
700 {
701 int32_t ret = -1;
702 struct AudioAdapter *adapter = {};
703 struct AudioCapture *capture = nullptr;
704 char keyValueListOne[] = "attr-frame-count=4096;";
705 char keyValueListOneExp[] = "attr-route=0;attr-format=16;attr-channels=2;attr-frame-count=4096;\
706 attr-sampling-rate=48000";
707 char keyValueListTwo[] = "attr-route=1;attr-frame-count=1024;";
708 char keyValueListTwoExp[] = "attr-route=1;attr-format=16;attr-channels=2;attr-frame-count=1024;\
709 attr-sampling-rate=48000";
710 char keyValueListThr[] = "attr-route=0;attr-channels=1;attr-frame-count=4096;";
711 char keyValueListThrExp[] = "attr-route=0;attr-format=16;attr-channels=1;attr-frame-count=4096;\
712 attr-sampling-rate=48000";
713 char keyValueListFour[] = "attr-format=32;attr-channels=2;attr-frame-count=4096;attr-sampling-rate=48000";
714 char keyValueListFourExp[] = "attr-route=0;attr-format=32;attr-channels=2;attr-frame-count=4096;\
715 attr-sampling-rate=48000";
716 char keyValueListValueOne[256] = {};
717 char keyValueListValueTwo[256] = {};
718 char keyValueListValueThr[256] = {};
719 char keyValueListValueFour[256] = {};
720 int32_t listLenth = 256;
721 ASSERT_NE(nullptr, manager);
722 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
723 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
724
725 ret = capture->attr.SetExtraParams((AudioHandle)capture, keyValueListOne);
726 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
727 ret = capture->attr.GetExtraParams((AudioHandle)capture, keyValueListValueOne, listLenth);
728 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
729 EXPECT_STREQ(keyValueListOneExp, keyValueListValueOne);
730 ret = capture->attr.SetExtraParams((AudioHandle)capture, keyValueListTwo);
731 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
732 ret = capture->attr.GetExtraParams((AudioHandle)capture, keyValueListValueTwo, listLenth);
733 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
734 EXPECT_STREQ(keyValueListTwoExp, keyValueListValueTwo);
735 ret = capture->attr.SetExtraParams((AudioHandle)capture, keyValueListThr);
736 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
737 ret = capture->attr.GetExtraParams((AudioHandle)capture, keyValueListValueThr, listLenth);
738 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
739 EXPECT_STREQ(keyValueListThrExp, keyValueListValueThr);
740 ret = capture->attr.SetExtraParams((AudioHandle)capture, keyValueListFour);
741 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
742 ret = capture->attr.GetExtraParams((AudioHandle)capture, keyValueListValueFour, listLenth);
743 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
744 EXPECT_STREQ(keyValueListFourExp, keyValueListValueFour);
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 AudioCaptureGetExtraParams_001
753 * @tc.desc Test CaptureGetExtraParams interface,return 0 if the RenderGetExtraParams was obtained successfully
754 * @tc.type: FUNC
755 */
756 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetExtraParams_001, TestSize.Level1)
757 {
758 int32_t ret = -1;
759 uint64_t count = 0;
760 struct AudioAdapter *adapter = {};
761 struct AudioCapture *capture = nullptr;
762 struct AudioSampleAttributes attrsValue = {};
763 char keyValueList[] = "attr-format=24;attr-frame-count=4096;";
764 char keyValueListExp[] = "attr-route=0;attr-format=24;attr-channels=2;attr-frame-count=4096;\
765 attr-sampling-rate=48000";
766 char keyValueListValue[256] = {};
767 int32_t listLenth = 256;
768 int32_t formatExp = 3;
769 uint32_t sampleRateExp = 48000;
770 uint32_t channelCountExp = 2;
771 uint32_t frameCountExp = 4096;
772
773 ASSERT_NE(nullptr, manager);
774 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
775 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
776 ret = capture->attr.SetExtraParams((AudioHandle)capture, keyValueList);
777 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
778 ret = capture->attr.GetExtraParams((AudioHandle)capture, keyValueListValue, listLenth);
779 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
780 EXPECT_STREQ(keyValueListExp, keyValueListValue);
781
782 ret = capture->attr.GetSampleAttributes(capture, &attrsValue);
783 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
784 EXPECT_EQ(formatExp, attrsValue.format);
785 EXPECT_EQ(sampleRateExp, attrsValue.sampleRate);
786 EXPECT_EQ(channelCountExp, attrsValue.channelCount);
787 ret = capture->attr.GetFrameCount(capture, &count);
788 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
789 EXPECT_EQ(count, frameCountExp);
790
791 ret = capture->control.Stop((AudioHandle)capture);
792 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
793 adapter->DestroyCapture(adapter, capture);
794 manager->UnloadAdapter(manager, adapter);
795 }
796 /**
797 * @tc.name AudioCaptureCheckSceneCapability_001
798 * @tc.desc Test AudioCaptureCheckSceneCapability interface,return 0 if check scene's capability successful.
799 * @tc.type: FUNC
800 */
801 HWTEST_F(AudioUsbCaputerTest, AudioCaptureCheckSceneCapability_001, TestSize.Level1)
802 {
803 int32_t ret = -1;
804 bool supported = false;
805 struct AudioSceneDescriptor scenes = {};
806 struct AudioAdapter *adapter = nullptr;
807 struct AudioCapture *capture = nullptr;
808 ASSERT_NE(nullptr, manager);
809 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
810 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
811 scenes.scene.id = 0;
812 scenes.desc.pins = PIN_IN_MIC;
813 ret = capture->scene.CheckSceneCapability(capture, &scenes, &supported);
814 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
815 EXPECT_TRUE(supported);
816
817 adapter->DestroyCapture(adapter, capture);
818 manager->UnloadAdapter(manager, adapter);
819 }
820 /**
821 * @tc.name AudioCaptureCheckSceneCapability_002
822 * @tc.desc Test AudioCreateCapture interface,return -1 if the scene is not configured in the json.
823 * @tc.type: FUNC
824 */
825 HWTEST_F(AudioUsbCaputerTest, AudioCaptureCheckSceneCapability_002, TestSize.Level1)
826 {
827 int32_t ret = -1;
828 bool supported = true;
829 struct AudioSceneDescriptor scenes = {};
830 struct AudioAdapter *adapter = nullptr;
831 struct AudioCapture *capture = nullptr;
832 ASSERT_NE(nullptr, manager);
833 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
834 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
835 scenes.scene.id = 5;
836 scenes.desc.pins = PIN_IN_MIC;
837 ret = capture->scene.CheckSceneCapability(capture, &scenes, &supported);
838 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
839
840 adapter->DestroyCapture(adapter, capture);
841 manager->UnloadAdapter(manager, adapter);
842 }
843
844 /**
845 * @tc.name AudioCaptureSelectScene_001
846 * @tc.desc Test AudioCaptureSelectScene interface,return 0 if select capture's scene successful.
847 * @tc.type: FUNC
848 */
849 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSelectScene_001, TestSize.Level1)
850 {
851 int32_t ret = -1;
852 struct AudioSceneDescriptor scenes = {};
853 struct AudioAdapter *adapter = nullptr;
854 struct AudioCapture *capture = nullptr;
855 ASSERT_NE(nullptr, manager);
856 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
857 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
858 scenes.scene.id = 0;
859 scenes.desc.pins = PIN_IN_MIC;
860 ret = capture->scene.SelectScene(capture, &scenes);
861 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
862
863 adapter->DestroyCapture(adapter, capture);
864 manager->UnloadAdapter(manager, adapter);
865 }
866 /**
867 * @tc.name AudioCaptureSelectScene_002
868 * @tc.desc Test AudioCaptureSelectScene, return 0 if select capture's scene successful after capture start.
869 * @tc.type: FUNC
870 */
871 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSelectScene_002, TestSize.Level1)
872 {
873 int32_t ret = -1;
874 struct AudioSceneDescriptor scenes = {};
875 struct AudioAdapter *adapter = nullptr;
876 struct AudioCapture *capture = nullptr;
877 ASSERT_NE(nullptr, manager);
878 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
879 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
880
881 ret = AudioCaptureStartAndOneFrame(capture);
882 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
883
884 scenes.scene.id = 0;
885 scenes.desc.pins = PIN_IN_MIC;
886 ret = capture->scene.SelectScene(capture, &scenes);
887 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
888
889 capture->control.Stop((AudioHandle)capture);
890 adapter->DestroyCapture(adapter, capture);
891 manager->UnloadAdapter(manager, adapter);
892 }
893 /**
894 * @tc.name AudioCaptureSelectScene_005
895 * @tc.desc Test AudioCaptureSelectScene, return -1 if the scene is not configured in the json.
896 * @tc.type: FUNC
897 */
898 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSelectScene_005, TestSize.Level1)
899 {
900 int32_t ret = -1;
901 struct AudioSceneDescriptor scenes = {};
902 struct AudioAdapter *adapter = nullptr;
903 struct AudioCapture *capture = nullptr;
904 ASSERT_NE(nullptr, manager);
905 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
906 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
907
908 scenes.scene.id = 5;
909 scenes.desc.pins = PIN_OUT_HDMI;
910 ret = capture->scene.SelectScene(capture, &scenes);
911 EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
912
913 adapter->DestroyCapture(adapter, capture);
914 manager->UnloadAdapter(manager, adapter);
915 }
916 /**
917 * @tc.name AudioCaptureFrame_001
918 * @tc.desc test AudioCaptureCaptureFrame interface,Returns 0 if the input data is read successfully
919 * @tc.type: FUNC
920 */
921 HWTEST_F(AudioUsbCaputerTest, AudioCaptureFrame_001, TestSize.Level1)
922 {
923 int32_t ret = -1;
924 uint64_t replyBytes = 0;
925 uint64_t requestBytes = BUFFER_SIZE;
926 struct AudioAdapter *adapter = nullptr;
927 struct AudioCapture *capture = nullptr;
928
929 ASSERT_NE(nullptr, manager);
930 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
931 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
932 ret = capture->control.Start((AudioHandle)capture);
933 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
934 char *frame = static_cast<char *>(calloc(1, BUFFER_SIZE));
935 EXPECT_NE(nullptr, frame);
936 ret = capture->CaptureFrame(capture, frame, requestBytes, &replyBytes);
937 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
938
939 capture->control.Stop((AudioHandle)capture);
940 adapter->DestroyCapture(adapter, capture);
941 manager->UnloadAdapter(manager, adapter);
942 if (frame != nullptr) {
943 free(frame);
944 frame = nullptr;
945 }
946 }
947 /**
948 * @tc.name AudioCaptureFrame_005
949 * @tc.desc Test AudioCaptureFrame interface,Returns -1 if without calling interface capturestart
950 * @tc.type: FUNC
951 */
952 HWTEST_F(AudioUsbCaputerTest, AudioCaptureFrame_005, TestSize.Level1)
953 {
954 int32_t ret = -1;
955 uint64_t requestBytes = BUFFER_SIZE;
956 struct AudioAdapter *adapter = nullptr;
957 struct AudioCapture *capture = nullptr;
958 uint64_t replyBytes = 0;
959
960 ASSERT_NE(nullptr, manager);
961 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
962 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
963 char *frame = static_cast<char *>(calloc(1, BUFFER_SIZE));
964 EXPECT_NE(nullptr, frame);
965 ret = capture->CaptureFrame(capture, frame, requestBytes, &replyBytes);
966 EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
967
968 adapter->DestroyCapture(adapter, capture);
969 manager->UnloadAdapter(manager, adapter);
970 if (frame != nullptr) {
971 free(frame);
972 frame = nullptr;
973 }
974 }
975 /**
976 * @tc.name AudioCaptureGetCapturePosition_001
977 * @tc.desc Test AudioCaptureGetCapturePosition interface,Returns 0 if get CapturePosition during playing.
978 * @tc.type: FUNC
979 */
980 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetCapturePosition_001, TestSize.Level1)
981 {
982 int32_t ret = -1;
983 uint64_t frames = 0;
984 int64_t timeExp = 0;
985 struct AudioTimeStamp time = {.tvSec = 0, .tvNSec = 0};
986 struct PrepareAudioPara audiopara = {
987 .portType = PORT_IN, .adapterName = ADAPTER_NAME_USB.c_str(), .pins = PIN_IN_MIC,
988 .path = AUDIO_CAPTURE_FILE.c_str(), .fileSize = FILESIZE
989 };
990 audiopara.manager = manager;
991 ASSERT_NE(nullptr, audiopara.manager);
992
993 ret = pthread_create(&audiopara.tids, NULL, (THREAD_FUNC)RecordAudio, &audiopara);
994 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
995 sleep(1);
996 if (audiopara.capture != nullptr) {
997 ret = audiopara.capture->GetCapturePosition(audiopara.capture, &frames, &time);
998 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
999 EXPECT_GT((time.tvSec) * SECTONSEC + (time.tvNSec), timeExp);
1000 EXPECT_GT(frames, INITIAL_VALUE);
1001 }
1002
1003 ret = ThreadRelease(audiopara);
1004 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1005 }
1006 /**
1007 * @tc.name AudioCaptureReqMmapBuffer_001
1008 * @tc.desc Test ReqMmapBuffer interface,return 0 if call ReqMmapBuffer interface successfully
1009 * @tc.type: FUNC
1010 */
1011 HWTEST_F(AudioUsbCaputerTest, AudioCaptureReqMmapBuffer_001, TestSize.Level1)
1012 {
1013 int32_t ret = -1;
1014 bool isRender = false;
1015 int32_t reqSize = 0;
1016 struct AudioMmapBufferDescripter desc = {};
1017 struct AudioCapture *capture = nullptr;
1018 struct AudioAdapter *adapter = nullptr;
1019 ASSERT_NE(nullptr, manager);
1020 FILE *fp = fopen(AUDIO_LOW_LATENCY_CAPTURE_FILE.c_str(), "wb+");
1021 ASSERT_NE(nullptr, fp);
1022 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1023 if (ret < 0 || capture == nullptr) {
1024 fclose(fp);
1025 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1026 ASSERT_EQ(nullptr, capture);
1027 }
1028 ret = InitMmapDesc(fp, desc, reqSize, isRender);
1029 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1030 ret = capture->control.Start((AudioHandle)capture);
1031 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1032 ret = capture->attr.ReqMmapBuffer((AudioHandle)capture, reqSize, &desc);
1033 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1034 fclose(fp);
1035 if (ret == 0) {
1036 munmap(desc.memoryAddress, reqSize);
1037 }
1038 capture->control.Stop((AudioHandle)capture);
1039 adapter->DestroyCapture(adapter, capture);
1040 manager->UnloadAdapter(manager, adapter);
1041 }
1042
1043 /**
1044 * @tc.name AudioCaptureGetMmapPosition_001
1045 * @tc.desc Test GetMmapPosition interface,return 0 if Getting position successfully.
1046 * @tc.type: FUNC
1047 */
1048 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetMmapPosition_001, TestSize.Level1)
1049 {
1050 int32_t ret = -1;
1051 uint64_t frames = 0;
1052 uint64_t framesCapturing = 0;
1053 uint64_t framesExpCapture = 0;
1054 int64_t timeExp = 0;
1055 int64_t timeExpCaptureing = 0;
1056 struct PrepareAudioPara audiopara = {
1057 .portType = PORT_IN, .adapterName = ADAPTER_NAME_USB.c_str(), .pins = PIN_IN_MIC,
1058 .path = AUDIO_LOW_LATENCY_CAPTURE_FILE.c_str()
1059 };
1060 audiopara.manager = manager;
1061 ASSERT_NE(nullptr, audiopara.manager);
1062 ret = AudioCreateCapture(audiopara.manager, audiopara.pins, audiopara.adapterName, &audiopara.adapter,
1063 &audiopara.capture);
1064 if (ret < 0 || audiopara.capture == nullptr) {
1065 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1066 ASSERT_EQ(nullptr, audiopara.capture);
1067 }
1068 ret = audiopara.capture->attr.GetMmapPosition(audiopara.capture, &frames, &(audiopara.time));
1069 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1070 EXPECT_EQ((audiopara.time.tvSec) * SECTONSEC + (audiopara.time.tvNSec), timeExp);
1071 EXPECT_EQ(frames, INITIAL_VALUE);
1072 ret = pthread_create(&audiopara.tids, NULL, (THREAD_FUNC)RecordMapAudio, &audiopara);
1073 if (ret != 0) {
1074 audiopara.adapter->DestroyCapture(audiopara.adapter, audiopara.capture);
1075 audiopara.manager->UnloadAdapter(audiopara.manager, audiopara.adapter);
1076 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1077 }
1078 sleep(1);
1079 ret = audiopara.capture->attr.GetMmapPosition(audiopara.capture, &framesCapturing, &(audiopara.time));
1080 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1081 EXPECT_GT((audiopara.time.tvSec) * SECTONSEC + (audiopara.time.tvNSec), timeExp);
1082 EXPECT_GT(framesCapturing, INITIAL_VALUE);
1083 timeExpCaptureing = (audiopara.time.tvSec) * SECTONSEC + (audiopara.time.tvNSec);
1084 void *result = nullptr;
1085 pthread_join(audiopara.tids, &result);
1086 EXPECT_EQ(AUDIO_HAL_SUCCESS, (intptr_t)result);
1087 ret = audiopara.capture->attr.GetMmapPosition(audiopara.capture, &framesExpCapture, &(audiopara.time));
1088 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1089 EXPECT_GT((audiopara.time.tvSec) * SECTONSEC + (audiopara.time.tvNSec), timeExpCaptureing);
1090 EXPECT_GT(framesExpCapture, framesCapturing);
1091
1092 audiopara.capture->control.Stop((AudioHandle)audiopara.capture);
1093 audiopara.adapter->DestroyCapture(audiopara.adapter, audiopara.capture);
1094 audiopara.manager->UnloadAdapter(audiopara.manager, audiopara.adapter);
1095 }
1096 /**
1097 * @tc.name AudioCaptureGetMmapPosition_002
1098 * @tc.desc Test GetMmapPosition interface,return 0 if Getting position successfully.
1099 * @tc.type: FUNC
1100 */
1101 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetMmapPosition_002, TestSize.Level1)
1102 {
1103 int32_t ret = -1;
1104 uint64_t frames = 0;
1105 int64_t timeExp = 0;
1106 struct PrepareAudioPara audiopara = {
1107 .portType = PORT_IN, .adapterName = ADAPTER_NAME_USB.c_str(), .pins = PIN_IN_MIC,
1108 .path = AUDIO_LOW_LATENCY_CAPTURE_FILE.c_str()
1109 };
1110 audiopara.manager = manager;
1111 ASSERT_NE(nullptr, audiopara.manager);
1112 ret = AudioCreateCapture(audiopara.manager, audiopara.pins, audiopara.adapterName, &audiopara.adapter,
1113 &audiopara.capture);
1114 if (ret < 0 || audiopara.capture == nullptr) {
1115 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1116 ASSERT_EQ(nullptr, audiopara.capture);
1117 }
1118 InitAttrs(audiopara.attrs);
1119 audiopara.attrs.format = AUDIO_FORMAT_PCM_24_BIT;
1120 audiopara.attrs.channelCount = 1;
1121 ret = audiopara.capture->attr.SetSampleAttributes(audiopara.capture, &(audiopara.attrs));
1122 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1123
1124 ret = pthread_create(&audiopara.tids, NULL, (THREAD_FUNC)RecordMapAudio, &audiopara);
1125 if (ret != 0) {
1126 audiopara.adapter->DestroyCapture(audiopara.adapter, audiopara.capture);
1127 audiopara.manager->UnloadAdapter(audiopara.manager, audiopara.adapter);
1128 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1129 }
1130
1131 void *result = nullptr;
1132 pthread_join(audiopara.tids, &result);
1133 EXPECT_EQ(AUDIO_HAL_SUCCESS, (intptr_t)result);
1134
1135 ret = audiopara.capture->attr.GetMmapPosition(audiopara.capture, &frames, &(audiopara.time));
1136 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1137 EXPECT_GT((audiopara.time.tvSec) * SECTONSEC + (audiopara.time.tvNSec), timeExp);
1138 EXPECT_GT(frames, INITIAL_VALUE);
1139
1140 audiopara.capture->control.Stop((AudioHandle)audiopara.capture);
1141 audiopara.adapter->DestroyCapture(audiopara.adapter, audiopara.capture);
1142 audiopara.manager->UnloadAdapter(audiopara.manager, audiopara.adapter);
1143 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1144 }
1145 /**
1146 * @tc.name AudioCaptureGetMute_001
1147 * @tc.desc Test AudioCaptureGetMute interface , return 0 if the audiocapture gets mute successfully.
1148 * @tc.type: FUNC
1149 */
1150 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetMute_001, TestSize.Level1)
1151 {
1152 int32_t ret = -1;
1153 bool muteTrue = true;
1154 bool muteFalse = false;
1155 bool defaultmute = false;
1156 struct AudioAdapter *adapter = nullptr;
1157 struct AudioCapture *capture = nullptr;
1158 ASSERT_NE(nullptr, manager);
1159 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1160 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1161
1162 ret = capture->volume.GetMute(capture, &muteFalse);
1163 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1164 EXPECT_EQ(muteFalse, defaultmute);
1165
1166 ret = capture->volume.SetMute(capture, muteTrue);
1167 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1168
1169 ret = capture->volume.GetMute(capture, &muteTrue);
1170 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1171 EXPECT_TRUE(muteTrue);
1172
1173 adapter->DestroyCapture(adapter, capture);
1174 manager->UnloadAdapter(manager, adapter);
1175 }
1176
1177 /**
1178 * @tc.name AudioCaptureSetMute_001
1179 * @tc.desc Test AudioCaptureSetMute interface , return 0 if the audiocapture object sets mute successfully.
1180 * @tc.type: FUNC
1181 */
1182 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetMute_001, TestSize.Level1)
1183 {
1184 int32_t ret = -1;
1185 bool muteTrue = true;
1186 bool muteFalse = false;
1187 struct AudioAdapter *adapter = nullptr;
1188 struct AudioCapture *capture = nullptr;
1189 ASSERT_NE(nullptr, manager);
1190 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1191 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1192
1193 ret = capture->volume.SetMute(capture, muteTrue);
1194 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1195
1196 ret = capture->volume.GetMute(capture, &muteTrue);
1197 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1198 EXPECT_TRUE(muteTrue);
1199
1200 ret = capture->volume.SetMute(capture, muteFalse);
1201 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1202
1203 ret = capture->volume.GetMute(capture, &muteFalse);
1204 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1205 EXPECT_FALSE(muteFalse);
1206
1207 adapter->DestroyCapture(adapter, capture);
1208 manager->UnloadAdapter(manager, adapter);
1209 }
1210 /**
1211 * @tc.name AudioCaptureSetVolume_001
1212 * @tc.desc Test AudioCaptureSetVolume interface , return 0 if the audiocapture sets volume successfully.
1213 * @tc.type: FUNC
1214 */
1215 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetVolume_001, TestSize.Level1)
1216 {
1217 int32_t ret = -1;
1218 float volumeInit = 0.30;
1219 float volumeInitExpc = 0.30;
1220 float volumeLow = 0.10;
1221 float volumeLowExpc = 0.10;
1222 float volumeMid = 0.40;
1223 float volumeMidExpc = 0.40;
1224 float volumeHigh = 0.70;
1225 float volumeHighExpc = 0.70;
1226 struct AudioAdapter *adapter = nullptr;
1227 struct AudioCapture *capture = nullptr;
1228 ASSERT_NE(nullptr, manager);
1229 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1230 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1231 ret = capture->volume.SetVolume(capture, volumeInit);
1232 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1233 ret = capture->volume.GetVolume(capture, &volumeInit);
1234 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1235 EXPECT_EQ(volumeInitExpc, volumeInit);
1236 ret = capture->volume.SetVolume(capture, volumeLow);
1237 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1238 ret = capture->volume.GetVolume(capture, &volumeLow);
1239 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1240 EXPECT_EQ(volumeLowExpc, volumeLow);
1241 ret = capture->volume.SetVolume(capture, volumeMid);
1242 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1243 ret = capture->volume.GetVolume(capture, &volumeMid);
1244 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1245 EXPECT_EQ(volumeMidExpc, volumeMid);
1246 ret = capture->volume.SetVolume(capture, volumeHigh);
1247 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1248 ret = capture->volume.GetVolume(capture, &volumeHigh);
1249 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1250 EXPECT_EQ(volumeHighExpc, volumeHigh);
1251
1252 adapter->DestroyCapture(adapter, capture);
1253 manager->UnloadAdapter(manager, adapter);
1254 }
1255 /**
1256 * @tc.name AudioCaptureGetVolume_001
1257 * @tc.desc Test AudioCaptureGetVolume interface , return 0 if the audiocapture is get successful.
1258 * @tc.type: FUNC
1259 */
1260 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetVolume_001, TestSize.Level1)
1261 {
1262 int32_t ret = -1;
1263 float volume = 0.60;
1264 float defaultVolume = 0.60;
1265 struct AudioAdapter *adapter = nullptr;
1266 struct AudioCapture *capture = nullptr;
1267 ASSERT_NE(nullptr, manager);
1268 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1269 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1270
1271 ret = capture->volume.SetVolume(capture, volume);
1272 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1273 ret = capture->volume.GetVolume(capture, &volume);
1274 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1275 EXPECT_EQ(defaultVolume, volume);
1276
1277 adapter->DestroyCapture(adapter, capture);
1278 manager->UnloadAdapter(manager, adapter);
1279 }
1280 /**
1281 * @tc.name AudioCaptureGetGainThreshold_001
1282 * @tc.desc test AudioCaptureGetGainThreshold interface, return 0 is call successfully.
1283 * @tc.type: FUNC
1284 */
1285 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetGainThreshold_001, TestSize.Level1)
1286 {
1287 int32_t ret = -1;
1288 float min = 0;
1289 float max = 0;
1290 struct AudioAdapter *adapter = nullptr;
1291 struct AudioCapture *capture = nullptr;
1292 ASSERT_NE(nullptr, manager);
1293 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1294 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1295
1296 ret = capture->volume.GetGainThreshold((AudioHandle)capture, &min, &max);
1297 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1298 EXPECT_EQ(min, GAIN_MIN);
1299 EXPECT_EQ(max, GAIN_MAX);
1300
1301 adapter->DestroyCapture(adapter, capture);
1302 manager->UnloadAdapter(manager, adapter);
1303 }
1304 /**
1305 * @tc.name AudioCaptureSetGain_001
1306 * @tc.desc test AudioCaptureSetGain interface, return 0 is call successfully.
1307 * @tc.type: FUNC
1308 */
1309 HWTEST_F(AudioUsbCaputerTest, AudioCaptureSetGain_001, TestSize.Level1)
1310 {
1311 int32_t ret = -1;
1312 float min = 0;
1313 float max = 0;
1314 struct AudioAdapter *adapter = nullptr;
1315 struct AudioCapture *capture = nullptr;
1316 ASSERT_NE(nullptr, manager);
1317 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1318 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1319
1320 ret = capture->volume.GetGainThreshold((AudioHandle)capture, &min, &max);
1321 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1322 float gain = max - 1;
1323 float gainMax = max;
1324 float gainMin = min;
1325 float gainExpc = max - 1;
1326 float gainMaxExpc = max;
1327 float gainMinExpc = min;
1328 ret = capture->volume.SetGain((AudioHandle)capture, gainMax);
1329 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1330 ret = capture->volume.GetGain((AudioHandle)capture, &gainMax);
1331 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1332 EXPECT_EQ(gainMaxExpc, gainMax);
1333
1334 ret = capture->volume.SetGain((AudioHandle)capture, gainMin);
1335 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1336 ret = capture->volume.GetGain((AudioHandle)capture, &gainMin);
1337 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1338 EXPECT_EQ(gainMinExpc, gainMin);
1339
1340 ret = capture->volume.SetGain((AudioHandle)capture, gain);
1341 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1342 ret = capture->volume.GetGain((AudioHandle)capture, &gain);
1343 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1344 EXPECT_EQ(gainExpc, gain);
1345
1346 adapter->DestroyCapture(adapter, capture);
1347 manager->UnloadAdapter(manager, adapter);
1348 }
1349 /**
1350 * @tc.name AudioCaptureGetGain_001
1351 * @tc.desc test AudioCaptureGetGain interface, return 0 if CaptureGetGain is call successfully.
1352 * @tc.type: FUNC
1353 */
1354 HWTEST_F(AudioUsbCaputerTest, AudioCaptureGetGain_001, TestSize.Level1)
1355 {
1356 int32_t ret = -1;
1357 float min = 0;
1358 float max = 0;
1359 struct AudioAdapter *adapter = nullptr;
1360 struct AudioCapture *capture = nullptr;
1361 ASSERT_NE(nullptr, manager);
1362 ret = AudioCreateCapture(manager, PIN_IN_MIC, ADAPTER_NAME_USB, &adapter, &capture);
1363 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1364 ret = capture->volume.GetGainThreshold((AudioHandle)capture, &min, &max);
1365 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1366
1367 float gain = min + 1;
1368 float gainValue = min + 1;
1369 ret = capture->volume.SetGain((AudioHandle)capture, gain);
1370 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1371 ret = capture->volume.GetGain((AudioHandle)capture, &gain);
1372 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1373 EXPECT_EQ(gainValue, gain);
1374
1375 capture->control.Stop((AudioHandle)capture);
1376 adapter->DestroyCapture(adapter, capture);
1377 manager->UnloadAdapter(manager, adapter);
1378 }
1379 /**
1380 * @tc.name AudioCaptureTurnStandbyMode_001
1381 * @tc.desc Test AudioCaptureTurnStandbyMode interface,return 0 if the interface use correctly.
1382 * @tc.type: FUNC
1383 */
1384 HWTEST_F(AudioUsbCaputerTest, AudioCaptureTurnStandbyMode_001, TestSize.Level1)
1385 {
1386 int32_t ret = -1;
1387 struct AudioAdapter *adapter = nullptr;
1388 struct AudioCapture *capture = nullptr;
1389 ASSERT_NE(nullptr, manager);
1390 ret = AudioCreateStartCapture(manager, &capture, &adapter, ADAPTER_NAME_USB);
1391 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1392
1393 ret = capture->control.TurnStandbyMode((AudioHandle)capture);
1394 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1395
1396 sleep(3);
1397
1398 ret = capture->control.Stop((AudioHandle)capture);
1399 adapter->DestroyCapture(adapter, capture);
1400 manager->UnloadAdapter(manager, adapter);
1401 }
1402
1403 /**
1404 * @tc.name AudioCaptureAudioDevDump_001
1405 * @tc.desc Test AudioCaptureAudioDevDump interface,return 0 if the interface use correctly.
1406 * @tc.type: FUNC
1407 */
1408 HWTEST_F(AudioUsbCaputerTest, AudioCaptureAudioDevDump_001, TestSize.Level1)
1409 {
1410 int32_t ret = -1;
1411 char pathBuf[] = "./DevDump.log";
1412 ASSERT_NE(nullptr, manager);
1413 FILE *fp = fopen(pathBuf, "wb+");
1414 ASSERT_NE(nullptr, fp);
1415 int fd = fileno(fp);
1416 if (fd == -1) {
1417 fclose(fp);
1418 ASSERT_NE(fd, -1);
1419 }
1420 struct PrepareAudioPara audiopara = {
1421 .manager = manager, .portType = PORT_IN, .adapterName = ADAPTER_NAME_USB.c_str(), .pins = PIN_IN_MIC,
1422 .path = AUDIO_CAPTURE_FILE.c_str(), .fileSize = FILESIZE
1423 };
1424
1425 ret = pthread_create(&audiopara.tids, NULL, (THREAD_FUNC)RecordAudio, &audiopara);
1426 if (ret < 0) {
1427 fclose(fp);
1428 ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
1429 }
1430 sleep(1);
1431 ret = audiopara.capture->control.Pause((AudioHandle)audiopara.capture);
1432 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1433 sleep(1);
1434 ret = audiopara.capture->control.Resume((AudioHandle)audiopara.capture);
1435 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1436 ret = audiopara.capture->control.AudioDevDump((AudioHandle)audiopara.capture, RANGE, fd);
1437 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1438 fclose(fp);
1439 ret = ThreadRelease(audiopara);
1440 EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
1441 }
1442 }
1443