• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 #include <gtest/gtest.h>
17 #include <climits>
18 #include "osal_mem.h"
19 #include "v1_0/iaudio_capture.h"
20 #include "v1_0/iaudio_manager.h"
21 
22 using namespace std;
23 using namespace testing::ext;
24 namespace {
25 static const uint32_t MAX_AUDIO_ADAPTER_NUM = 5;
26 const int BUFFER_LENTH = 1024 * 16;
27 const int DEEP_BUFFER_CAPTURE_PERIOD_SIZE = 4 * 1024;
28 const int DEFAULT_BUFFER_SIZE = 16384;
29 const float HALF_OF_MAX_VOLUME = 0.5;
30 const int MOVE_LEFT_NUM = 8;
31 const int TEST_SAMPLE_RATE_MASK_48000 = 48000;
32 const int TEST_CHANNEL_COUNT = 2;
33 
34 class AudioUtCaptureTest : public testing::Test {
35 public:
36     struct IAudioManager *manager_ = nullptr;;
37     struct IAudioAdapter *adapter_ = nullptr;
38     struct IAudioCapture *capture_ = nullptr;
39     uint32_t captureId_ = 0;
40     char *devDescriptorName_ = nullptr;
41     struct AudioAdapterDescriptor *adapterDescs_ = nullptr;
42     virtual void SetUp();
43     virtual void TearDown();
44     uint64_t GetCaptureBufferSize();
45     void InitCaptureDevDesc(struct AudioDeviceDescriptor &devDesc);
46     void InitCaptureAttrs(struct AudioSampleAttributes &attrs);
47     void FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf);
48     void ReleaseAllAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen);
49 };
50 
51 /* common method for capture ceate */
GetCaptureBufferSize()52 uint64_t AudioUtCaptureTest::GetCaptureBufferSize()
53 {
54     int32_t ret = HDF_SUCCESS;
55     uint64_t frameSize = 0;
56     uint64_t frameCount = 0;
57     uint64_t bufferSize = 0;
58 
59     if (capture_ == nullptr) {
60         return DEFAULT_BUFFER_SIZE;
61     }
62 
63     ret = capture_->GetFrameSize(capture_, &frameSize);
64     if (ret != HDF_SUCCESS) {
65         return DEFAULT_BUFFER_SIZE;
66     }
67 
68     ret = capture_->GetFrameCount(capture_, &frameCount);
69     if (ret != HDF_SUCCESS) {
70         return DEFAULT_BUFFER_SIZE;
71     }
72 
73     bufferSize = frameCount * frameSize;
74     if (bufferSize == 0) {
75         bufferSize = DEFAULT_BUFFER_SIZE;
76     }
77 
78     return bufferSize;
79 }
80 
InitCaptureDevDesc(struct AudioDeviceDescriptor & devDesc)81 void AudioUtCaptureTest::InitCaptureDevDesc(struct AudioDeviceDescriptor &devDesc)
82 {
83     devDesc.pins = (enum AudioPortPin)PIN_IN_MIC;
84     devDescriptorName_ = strdup("cardname");
85     devDesc.desc = devDescriptorName_;
86 
87     ASSERT_NE(adapterDescs_, nullptr);
88     ASSERT_NE(adapterDescs_->ports, nullptr);
89     for (uint32_t index = 0; index < adapterDescs_->portsLen; index++) {
90         if (adapterDescs_->ports[index].dir == PORT_IN) {
91             devDesc.portId = adapterDescs_->ports[index].portId;
92             return;
93         }
94     }
95 }
96 
InitCaptureAttrs(struct AudioSampleAttributes & attrs)97 void AudioUtCaptureTest::InitCaptureAttrs(struct AudioSampleAttributes &attrs)
98 {
99     attrs.format = AUDIO_FORMAT_TYPE_PCM_16_BIT;
100     attrs.channelCount = TEST_CHANNEL_COUNT;
101     attrs.sampleRate = TEST_SAMPLE_RATE_MASK_48000;
102     attrs.interleaved = 0;
103     attrs.type = AUDIO_IN_MEDIA;
104     attrs.period = DEEP_BUFFER_CAPTURE_PERIOD_SIZE;
105     attrs.frameSize = AUDIO_FORMAT_TYPE_PCM_16_BIT * TEST_CHANNEL_COUNT / MOVE_LEFT_NUM;
106     attrs.isBigEndian = false;
107     attrs.isSignedData = true;
108     attrs.startThreshold = DEEP_BUFFER_CAPTURE_PERIOD_SIZE / (attrs.format * attrs.channelCount / MOVE_LEFT_NUM);
109     attrs.stopThreshold = INT_MAX;
110     attrs.silenceThreshold = BUFFER_LENTH;
111 }
112 
FreeAdapterElements(struct AudioAdapterDescriptor * dataBlock,bool freeSelf)113 void AudioUtCaptureTest::FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf)
114 {
115     if (dataBlock == nullptr) {
116         return;
117     }
118 
119     if (dataBlock->adapterName != nullptr) {
120         OsalMemFree(dataBlock->adapterName);
121         dataBlock->adapterName = nullptr;
122     }
123 
124     if (dataBlock->ports != nullptr) {
125         OsalMemFree(dataBlock->ports);
126     }
127 
128     if (freeSelf) {
129         OsalMemFree(dataBlock);
130     }
131 }
132 
ReleaseAllAdapterDescs(struct AudioAdapterDescriptor ** descs,uint32_t descsLen)133 void AudioUtCaptureTest::ReleaseAllAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen)
134 {
135     if ((descsLen > 0) && (descs != nullptr) && ((*descs) != nullptr)) {
136         for (uint32_t i = 0; i < descsLen; i++) {
137             FreeAdapterElements(&(*descs)[i], false);
138         }
139         OsalMemFree(*descs);
140         *descs = nullptr;
141     }
142 }
143 
SetUp()144 void AudioUtCaptureTest::SetUp()
145 {
146     uint32_t size = MAX_AUDIO_ADAPTER_NUM;
147     struct AudioDeviceDescriptor devDesc = {};
148     struct AudioSampleAttributes attrs = {};
149 
150     manager_ = IAudioManagerGet(false);
151     ASSERT_NE(manager_, nullptr);
152 
153     adapterDescs_ = (struct AudioAdapterDescriptor *)OsalMemCalloc(
154         sizeof(struct AudioAdapterDescriptor) * (MAX_AUDIO_ADAPTER_NUM));
155     ASSERT_NE(adapterDescs_, nullptr);
156 
157     EXPECT_EQ(HDF_SUCCESS, manager_->GetAllAdapters(manager_, adapterDescs_, &size));
158     if (size > MAX_AUDIO_ADAPTER_NUM) {
159         ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM);
160         ASSERT_LT(size, MAX_AUDIO_ADAPTER_NUM);
161     }
162 
163     EXPECT_EQ(HDF_SUCCESS, manager_->LoadAdapter(manager_, &adapterDescs_[0], &adapter_));
164     if (adapter_ == nullptr) {
165         ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM);
166         EXPECT_NE(adapter_, nullptr);
167     }
168 
169     InitCaptureDevDesc(devDesc);
170     InitCaptureAttrs(attrs);
171     EXPECT_EQ(HDF_SUCCESS, adapter_->CreateCapture(adapter_, &devDesc, &attrs, &capture_, &captureId_));
172     if (capture_ == nullptr) {
173         (void)manager_->UnloadAdapter(manager_, adapterDescs_[0].adapterName);
174         ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM);
175     }
176     ASSERT_NE(capture_, nullptr);
177 }
178 
TearDown()179 void AudioUtCaptureTest::TearDown()
180 {
181     ASSERT_NE(devDescriptorName_, nullptr);
182     free(devDescriptorName_);
183 
184     ASSERT_NE(capture_, nullptr);
185     EXPECT_EQ(HDF_SUCCESS, adapter_->DestroyCapture(adapter_, captureId_));
186 
187     ASSERT_NE(manager_, nullptr);
188     EXPECT_EQ(HDF_SUCCESS, manager_->UnloadAdapter(manager_, adapterDescs_[0].adapterName));
189     ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM);
190 
191     IAudioManagerRelease(manager_, false);
192 }
193 
194 /* capture frame cases */
195 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFrame001, TestSize.Level1)
196 {
197     uint32_t frameLen = (uint64_t)GetCaptureBufferSize();
198     uint64_t requestBytes = frameLen;
199     ASSERT_NE(capture_->CaptureFrame, nullptr);
200 
201     int32_t ret = capture_->Start(capture_);
202     EXPECT_EQ(ret, HDF_SUCCESS);
203 
204     int8_t *frame = (int8_t *)calloc(1, frameLen);
205     EXPECT_NE(nullptr, frame);
206 
207     ret = capture_->CaptureFrame(capture_, frame, &frameLen, &requestBytes);
208     EXPECT_EQ(ret, HDF_SUCCESS);
209     capture_->Stop(capture_);
210 
211     if (frame != nullptr) {
212         free(frame);
213         frame = nullptr;
214     }
215 }
216 
217 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFrameExceptions001, TestSize.Level1)
218 {
219     uint32_t invalidLen = -1;
220     uint64_t requestBytes = invalidLen;
221     ASSERT_NE(capture_->CaptureFrame, nullptr);
222 
223     int32_t ret = capture_->Start(capture_);
224     EXPECT_EQ(ret, HDF_SUCCESS);
225 
226     int8_t *frame = (int8_t *)calloc(1, sizeof(int));
227     EXPECT_NE(nullptr, frame);
228 
229     EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(nullptr, nullptr, nullptr, nullptr));
230     EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, nullptr, nullptr));
231     EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, &invalidLen, nullptr));
232     EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(nullptr, frame, &invalidLen, &requestBytes));
233     EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, &invalidLen, &requestBytes));
234 
235     if (frame != nullptr) {
236         free(frame);
237         frame = nullptr;
238     }
239 }
240 
241 /* capture getposition cases */
242 HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePosition001, TestSize.Level1)
243 {
244     uint64_t frames;
245     struct AudioTimeStamp time;
246     uint32_t frameLen = (uint64_t)GetCaptureBufferSize();
247     uint64_t requestBytes = frameLen;
248     ASSERT_NE(capture_->CaptureFrame, nullptr);
249     ASSERT_NE(capture_->GetCapturePosition, nullptr);
250 
251     int32_t ret = capture_->Start(capture_);
252     EXPECT_EQ(ret, HDF_SUCCESS);
253 
254     int8_t *frame = (int8_t *)calloc(1, frameLen);
255     EXPECT_NE(nullptr, frame);
256 
257     ret = capture_->CaptureFrame(capture_, frame, &frameLen, &requestBytes);
258     EXPECT_EQ(ret, HDF_SUCCESS);
259 
260     ret = capture_->GetCapturePosition(capture_, &frames, &time);
261     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
262 
263     capture_->Stop(capture_);
264     if (frame != nullptr) {
265         free(frame);
266         frame = nullptr;
267     }
268 }
269 
270 HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePositionExceptions001, TestSize.Level1)
271 {
272     int32_t ret;
273     uint64_t frames;
274     struct AudioTimeStamp time;
275     ASSERT_NE(capture_->GetCapturePosition, nullptr);
276 
277     ret = capture_->GetCapturePosition(capture_, &frames, &time);
278     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
279 
280     ret = capture_->GetCapturePosition(capture_, nullptr, nullptr);
281     EXPECT_NE(ret, HDF_SUCCESS);
282 
283     ret = capture_->GetCapturePosition(capture_, &frames, nullptr);
284     EXPECT_NE(ret, HDF_SUCCESS);
285 }
286 
287 /**
288  * @brief from here starts the control tests
289  */
290 
291 /* capture start cases */
292 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStart001, TestSize.Level1)
293 {
294     ASSERT_NE(capture_->Start, nullptr);
295 
296     int32_t ret = capture_->Start(capture_);
297     EXPECT_EQ(ret, HDF_SUCCESS);
298 }
299 
300 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureException001, TestSize.Level1)
301 {
302     ASSERT_NE(capture_->Start, nullptr);
303 
304     int32_t ret = capture_->Start(nullptr);
305     EXPECT_NE(ret, HDF_SUCCESS);
306 }
307 
308 /* capture stop cases */
309 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStop001, TestSize.Level1)
310 {
311     ASSERT_NE(capture_->Start, nullptr);
312     ASSERT_NE(capture_->Stop, nullptr);
313 
314     int32_t ret = capture_->Start(capture_);
315     EXPECT_EQ(ret, HDF_SUCCESS);
316 
317     ret = capture_->Stop(capture_);
318     EXPECT_EQ(ret, HDF_SUCCESS);
319 }
320 
321 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStopException002, TestSize.Level1)
322 {
323     ASSERT_NE(capture_->Stop, nullptr);
324 
325     int32_t ret = capture_->Stop(nullptr);
326     EXPECT_NE(ret, HDF_SUCCESS);
327 }
328 
329 /* capture pause cases */
330 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePause001, TestSize.Level1)
331 {
332     ASSERT_NE(capture_->Pause, nullptr);
333     ASSERT_NE(capture_->Start, nullptr);
334 
335     int32_t ret = capture_->Start(capture_);
336     EXPECT_EQ(ret, HDF_SUCCESS);
337 
338     ret = capture_->Pause(capture_);
339     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
340 }
341 
342 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException001, TestSize.Level1)
343 {
344     ASSERT_NE(capture_->Pause, nullptr);
345 
346     int32_t ret = capture_->Pause(nullptr);
347     EXPECT_NE(ret, HDF_SUCCESS);
348 }
349 
350 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException002, TestSize.Level1)
351 {
352     ASSERT_NE(capture_->Pause, nullptr);
353     ASSERT_NE(capture_->Start, nullptr);
354 
355     int32_t ret = capture_->Start(capture_);
356     EXPECT_EQ(ret, HDF_SUCCESS);
357 
358     ret = capture_->Pause(capture_);
359     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
360 
361     ret = capture_->Pause(capture_);
362     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
363 }
364 
365 /* capture resume cases */
366 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResume001, TestSize.Level1)
367 {
368     ASSERT_NE(capture_->Pause, nullptr);
369     ASSERT_NE(capture_->Resume, nullptr);
370     ASSERT_NE(capture_->Start, nullptr);
371     ASSERT_NE(capture_->Stop, nullptr);
372 
373     int32_t ret = capture_->Start(capture_);
374     ASSERT_EQ(ret, HDF_SUCCESS);
375 
376     ret = capture_->Pause(capture_);
377     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
378 
379     ret = capture_->Resume(capture_);
380     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
381 
382     ret = capture_->Stop(capture_);
383     ASSERT_EQ(ret, HDF_SUCCESS);
384 }
385 
386 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException001, TestSize.Level1)
387 {
388     ASSERT_NE(capture_->Resume, nullptr);
389 
390     int32_t ret = capture_->Resume(capture_);
391     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
392 }
393 
394 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException002, TestSize.Level1)
395 {
396     ASSERT_NE(capture_->Resume, nullptr);
397 
398     int32_t ret = capture_->Resume(nullptr);
399     EXPECT_NE(ret, HDF_SUCCESS);
400 }
401 
402 /* capture flush cases */
403 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlush001, TestSize.Level1)
404 {
405     ASSERT_NE(capture_->Flush, nullptr);
406 
407     int32_t ret = capture_->Flush(capture_);
408     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret);
409 }
410 
411 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlushException001, TestSize.Level1)
412 {
413     ASSERT_NE(capture_->Flush, nullptr);
414 
415     int32_t ret = capture_->Flush(nullptr);
416     EXPECT_NE(ret, HDF_SUCCESS);
417 }
418 
419 /* capture TurnStandbyMode cases */
420 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyMode001, TestSize.Level1)
421 {
422     ASSERT_NE(capture_->TurnStandbyMode, nullptr);
423     ASSERT_NE(capture_->Start, nullptr);
424 
425     int32_t ret = capture_->Start(capture_);
426     EXPECT_EQ(ret, HDF_SUCCESS);
427 
428     ret = capture_->TurnStandbyMode(capture_);
429     EXPECT_EQ(ret, HDF_SUCCESS);
430 }
431 
432 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyModeException001, TestSize.Level1)
433 {
434     ASSERT_NE(capture_->TurnStandbyMode, nullptr);
435 
436     int32_t ret = capture_->TurnStandbyMode(nullptr);
437     EXPECT_NE(ret, HDF_SUCCESS);
438 }
439 
440 /* capture AudioDevDump cases */
441 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDump001, TestSize.Level1)
442 {
443     ASSERT_NE(capture_->AudioDevDump, nullptr);
444 
445     int32_t range = 4;
446     char pathBuf[] = "/data/CaptureDump.log";
447 
448     FILE *file = fopen(pathBuf, "wb+");
449     ASSERT_NE(nullptr, file);
450     int fd = fileno(file);
451     if (fd == -1) {
452         fclose(file);
453         ASSERT_NE(fd, -1);
454     }
455 
456     int32_t ret = capture_->AudioDevDump(capture_, range, fd);
457     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
458     fclose(file);
459 }
460 
461 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDumpExption001, TestSize.Level1)
462 {
463     ASSERT_NE(capture_->AudioDevDump, nullptr);
464     int32_t range = 4;
465 
466     int32_t ret = capture_->AudioDevDump(nullptr, range, -1);
467     EXPECT_NE(ret, HDF_SUCCESS);
468 }
469 
470 /**
471  * @brief here starts the volume test cases
472  */
473 /* capture SetMute cases */
474 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMute001, TestSize.Level1)
475 {
476     bool isSupport = false;
477     ASSERT_NE(capture_->SetMute, nullptr);
478     ASSERT_NE(capture_->GetMute, nullptr);
479 
480     int32_t ret = capture_->SetMute(capture_, isSupport);
481     if (ret == HDF_SUCCESS) {
482         ret = capture_->GetMute(capture_, &isSupport);
483         ASSERT_EQ(isSupport, false);
484     } else if (ret == HDF_ERR_NOT_SUPPORT) {
485         ASSERT_TRUE(true);
486     } else {
487         ASSERT_TRUE(false);
488     }
489 
490     isSupport = true;
491     ret = capture_->SetMute(capture_, isSupport);
492     if (ret == HDF_SUCCESS) {
493         ret = capture_->GetMute(capture_, &isSupport);
494         ASSERT_EQ(isSupport, true);
495     } else if (ret == HDF_ERR_NOT_SUPPORT) {
496         ASSERT_TRUE(true);
497     } else {
498         ASSERT_TRUE(false);
499     }
500 }
501 
502 // set twice
503 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException001, TestSize.Level1)
504 {
505     bool isSupport = true;
506     ASSERT_NE(capture_->SetMute, nullptr);
507     ASSERT_NE(capture_->GetMute, nullptr);
508 
509     int32_t ret = capture_->SetMute(capture_, isSupport);
510     if (ret == HDF_SUCCESS) {
511         ret = capture_->GetMute(capture_, &isSupport);
512         ASSERT_EQ(isSupport, true);
513     } else if (ret == HDF_ERR_NOT_SUPPORT) {
514         ASSERT_TRUE(true);
515     } else {
516         ASSERT_TRUE(false);
517     }
518 
519     ret = capture_->SetMute(capture_, isSupport);
520     if (ret == HDF_SUCCESS) {
521         ret = capture_->GetMute(capture_, &isSupport);
522         ASSERT_EQ(isSupport, true);
523     } else if (ret == HDF_ERR_NOT_SUPPORT) {
524         ASSERT_TRUE(true);
525     } else {
526         ASSERT_TRUE(false);
527     }
528 }
529 
530 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException002, TestSize.Level1)
531 {
532     EXPECT_NE(capture_->SetMute, nullptr);
533 
534     int32_t ret = capture_->SetMute(nullptr, true);
535     EXPECT_NE(ret, HDF_SUCCESS);
536 }
537 
538 /* capture GetMute cases */
539 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMute001, TestSize.Level1)
540 {
541     bool isSupport = true;
542     EXPECT_NE(capture_->GetMute, nullptr);
543 
544     int32_t ret = capture_->GetMute(capture_, &isSupport);
545     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
546 }
547 
548 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMuteException001, TestSize.Level1)
549 {
550     EXPECT_NE(capture_->GetMute, nullptr);
551 
552     int32_t ret = capture_->GetMute(nullptr, nullptr);
553     EXPECT_NE(ret, HDF_SUCCESS);
554 
555     ret = capture_->GetMute(capture_, nullptr);
556     EXPECT_NE(ret, HDF_SUCCESS);
557 }
558 
559 /* capture SetVolume cases */
560 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolume001, TestSize.Level1)
561 {
562     float volume = 0.0;
563     EXPECT_NE(capture_->SetVolume, nullptr);
564     EXPECT_NE(capture_->GetVolume, nullptr);
565 
566     int32_t ret = capture_->SetVolume(capture_, HALF_OF_MAX_VOLUME);
567     if (ret == HDF_SUCCESS) {
568         ret = capture_->GetVolume(capture_, &volume);
569         ASSERT_EQ(volume, HALF_OF_MAX_VOLUME);
570     } else if (ret == HDF_ERR_NOT_SUPPORT) {
571         ASSERT_TRUE(true);
572     } else {
573         ASSERT_TRUE(false);
574     }
575 }
576 
577 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException001, TestSize.Level1)
578 {
579     float exceptionVolume = 2.0;
580     EXPECT_NE(capture_->SetVolume, nullptr);
581 
582     int32_t ret = capture_->SetVolume(capture_, exceptionVolume);
583     EXPECT_NE(ret, HDF_SUCCESS);
584 
585     exceptionVolume = -3.0;
586     ret = capture_->SetVolume(capture_, exceptionVolume);
587     EXPECT_NE(ret, HDF_SUCCESS);
588 }
589 
590 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException002, TestSize.Level1)
591 {
592     EXPECT_NE(capture_->SetVolume, nullptr);
593 
594     int32_t ret = capture_->SetVolume(nullptr, HALF_OF_MAX_VOLUME);
595     EXPECT_NE(ret, HDF_SUCCESS);
596 }
597 
598 /* capture GetVolume cases */
599 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolume001, TestSize.Level1)
600 {
601     float volume = 0.0;
602     EXPECT_NE(capture_->GetVolume, nullptr);
603 
604     int32_t ret = capture_->GetVolume(capture_, &volume);
605     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
606 }
607 
608 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolumeException001, TestSize.Level1)
609 {
610     float volume = 0.0;
611     EXPECT_NE(capture_->GetVolume, nullptr);
612 
613     int32_t ret = capture_->GetVolume(nullptr, nullptr);
614     EXPECT_NE(ret, HDF_SUCCESS);
615 
616     ret = capture_->GetVolume(capture_, nullptr);
617     EXPECT_NE(ret, HDF_SUCCESS);
618 
619     ret = capture_->GetVolume(nullptr, &volume);
620     EXPECT_NE(ret, HDF_SUCCESS);
621 }
622 
623 /* capture GetGainThreshold cases */
624 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThreshold001, TestSize.Level1)
625 {
626     float bottom = 0;
627     float top = 0;
628     EXPECT_NE(capture_->GetGainThreshold, nullptr);
629 
630     int32_t ret = capture_->GetGainThreshold(capture_, &bottom, &top);
631     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
632 }
633 
634 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThresholdException002, TestSize.Level1)
635 {
636     float bottom = 0;
637     float top = 0;
638     EXPECT_NE(capture_->GetGainThreshold, nullptr);
639 
640     int32_t ret = capture_->GetGainThreshold(nullptr, &bottom, &top);
641     EXPECT_NE(ret, HDF_SUCCESS);
642 
643     ret = capture_->GetGainThreshold(nullptr, nullptr, nullptr);
644     EXPECT_NE(ret, HDF_SUCCESS);
645 
646     ret = capture_->GetGainThreshold(capture_, nullptr, nullptr);
647     EXPECT_NE(ret, HDF_SUCCESS);
648 }
649 
650 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGain001, TestSize.Level1)
651 {
652     EXPECT_NE(capture_->SetGain, nullptr);
653 
654     int32_t ret = capture_->SetGain(capture_, HALF_OF_MAX_VOLUME);
655     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
656 }
657 
658 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGainException001, TestSize.Level1)
659 {
660     EXPECT_NE(capture_->SetGain, nullptr);
661     float exceptionGain = -3.0;
662 
663     int32_t ret = capture_->SetGain(capture_, exceptionGain);
664     EXPECT_NE(ret, HDF_SUCCESS);
665 
666     ret = capture_->SetGain(nullptr, HALF_OF_MAX_VOLUME);
667     EXPECT_NE(ret, HDF_SUCCESS);
668 }
669 
670 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGain001, TestSize.Level1)
671 {
672     EXPECT_NE(capture_->GetGain, nullptr);
673     float getGain;
674 
675     int32_t ret = capture_->GetGain(capture_, &getGain);
676     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
677 }
678 
679 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainException001, TestSize.Level1)
680 {
681     EXPECT_NE(capture_->SetGain, nullptr);
682     float exceptionGain = 2.0;
683 
684     int32_t ret = capture_->GetGain(capture_, nullptr);
685     EXPECT_NE(ret, HDF_SUCCESS);
686 
687     ret = capture_->GetGain(nullptr, &exceptionGain);
688     EXPECT_NE(ret, HDF_SUCCESS);
689 }
690 
691 /**
692  * @brief here starts the attributes cases
693  */
694 /* capture GetSampleAttributes cases */
695 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributes001, TestSize.Level1)
696 {
697     struct AudioSampleAttributes attrs = {};
698     EXPECT_NE(capture_->GetSampleAttributes, nullptr);
699 
700     int32_t ret = capture_->GetSampleAttributes(capture_, &attrs);
701     EXPECT_EQ(ret, HDF_SUCCESS);
702 }
703 
704 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributesException001, TestSize.Level1)
705 {
706     struct AudioSampleAttributes attrs = {};
707     EXPECT_NE(capture_->GetSampleAttributes, nullptr);
708 
709     int32_t ret = capture_->GetSampleAttributes(nullptr, &attrs);
710     EXPECT_NE(ret, HDF_SUCCESS);
711 
712     ret = capture_->GetSampleAttributes(capture_, nullptr);
713     EXPECT_NE(ret, HDF_SUCCESS);
714 }
715 
716 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetSampleAttributes001, TestSize.Level1)
717 {
718     struct AudioSampleAttributes attrs = {
719         .format = AUDIO_FORMAT_TYPE_PCM_16_BIT,
720         .sampleRate = TEST_SAMPLE_RATE_MASK_48000,
721         .channelCount = TEST_CHANNEL_COUNT,
722     };
723     EXPECT_NE(capture_->SetSampleAttributes, nullptr);
724 
725     int32_t ret = capture_->SetSampleAttributes(capture_, &attrs);
726     EXPECT_NE(ret, HDF_SUCCESS);
727     ret = capture_->SetSampleAttributes(capture_, nullptr);
728     EXPECT_NE(ret, HDF_SUCCESS);
729 
730     ret = capture_->SetSampleAttributes(nullptr, &attrs);
731     EXPECT_NE(ret, HDF_SUCCESS);
732 }
733 
734 /* capture GetCurrentChannelId cases */
735 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelId001, TestSize.Level1)
736 {
737     int32_t ret = HDF_SUCCESS;
738     uint32_t channelId = 0;
739     EXPECT_NE(capture_->GetCurrentChannelId, nullptr);
740 
741     ret = capture_->GetCurrentChannelId(capture_, &channelId);
742     EXPECT_EQ(ret, HDF_SUCCESS);
743     EXPECT_EQ(TEST_CHANNEL_COUNT, channelId);
744 }
745 
746 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelIdException001, TestSize.Level1)
747 {
748     int32_t ret = HDF_SUCCESS;
749     uint32_t channelId = 0;
750     EXPECT_NE(capture_->GetCurrentChannelId, nullptr);
751 
752     ret = capture_->GetCurrentChannelId(capture_, nullptr);
753     EXPECT_NE(ret, HDF_SUCCESS);
754 
755     ret = capture_->GetCurrentChannelId(nullptr, &channelId);
756     EXPECT_NE(ret, HDF_SUCCESS);
757 }
758 
759 /* capture SetExtraParams cases */
760 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParams001, TestSize.Level1)
761 {
762     EXPECT_NE(capture_->SetExtraParams, nullptr);
763     EXPECT_NE(capture_->GetExtraParams, nullptr);
764 
765     char kvList[] = "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000";
766     char keyValueListReply[256] = {};
767     uint32_t listLenth = 256;
768     size_t index = 1;
769 
770     int32_t ret = capture_->SetExtraParams(capture_, kvList);
771     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
772 
773     ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth);
774     // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM
775     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
776 
777     std::string strGetValue = keyValueListReply;
778     size_t indexAttr = strGetValue.find("attr-frame-count");
779     size_t indexFlag = strGetValue.rfind(";");
780 
781     if (indexAttr != string::npos && indexFlag != string::npos) {
782         strGetValue.replace(indexAttr, indexFlag - indexAttr + index, "");
783     }
784 }
785 
786 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParamsException001, TestSize.Level1)
787 {
788     ASSERT_NE(capture_->SetExtraParams, nullptr);
789 
790     int32_t ret = capture_->SetExtraParams(nullptr, nullptr);
791     EXPECT_NE(ret, HDF_SUCCESS);
792 }
793 
794 /* capture GetExtraParams cases */
795 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParams001, TestSize.Level1)
796 {
797     ASSERT_NE(capture_->GetExtraParams, nullptr);
798     char keyValueListReply[256] = {};
799     uint32_t listLenth = 256;
800 
801     int32_t ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth);
802     // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM
803     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
804 }
805 
806 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParamsException001, TestSize.Level1)
807 {
808     ASSERT_NE(capture_->GetExtraParams, nullptr);
809     char keyValueListReply[256] = {};
810     uint32_t listLenth = 256;
811 
812     int32_t ret = capture_->GetExtraParams(nullptr, keyValueListReply, listLenth);
813     EXPECT_NE(ret, HDF_SUCCESS);
814 
815     ret = capture_->GetExtraParams(capture_, nullptr, listLenth);
816     EXPECT_NE(ret, HDF_SUCCESS);
817 }
818 
819 /* capture selectsene cases */
820 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectScene001, TestSize.Level1)
821 {
822     ASSERT_NE(capture_->SelectScene, nullptr);
823     struct AudioSceneDescriptor sceneDesc = {};
824     sceneDesc.desc.pins = PIN_IN_MIC;
825     sceneDesc.desc.desc = strdup("mic");
826     sceneDesc.scene.id = AUDIO_IN_CALL;
827 
828     int32_t ret = capture_->SelectScene(capture_, &sceneDesc);
829     EXPECT_EQ(ret, HDF_SUCCESS);
830     free(sceneDesc.desc.desc);
831 }
832 
833 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectSceneException001, TestSize.Level1)
834 {
835     ASSERT_NE(capture_->SelectScene, nullptr);
836     struct AudioSceneDescriptor sceneDesc = {};
837     sceneDesc.scene.id = AUDIO_IN_CALL;
838 
839     int32_t ret = capture_->SelectScene(capture_, nullptr);
840     ASSERT_NE(ret, HDF_SUCCESS);
841 
842     ret = capture_->SelectScene(nullptr, &sceneDesc);
843     ASSERT_NE(ret, HDF_SUCCESS);
844 }
845 
846 /* capture get version cases */
847 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersion001, TestSize.Level1)
848 {
849     ASSERT_NE(capture_->GetVersion, nullptr);
850     uint32_t majorVer;
851     uint32_t minorVer;
852     ASSERT_EQ(HDF_SUCCESS, capture_->GetVersion(capture_, &majorVer, &minorVer));
853     EXPECT_EQ(IAUDIO_MANAGER_MAJOR_VERSION, majorVer);
854     EXPECT_EQ(IAUDIO_MANAGER_MINOR_VERSION, minorVer);
855 }
856 
857 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersionException001, TestSize.Level1)
858 {
859     ASSERT_NE(capture_->GetVersion, nullptr);
860     uint32_t majorVer;
861     uint32_t minorVer;
862     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, capture_->GetVersion(nullptr, &majorVer, &minorVer));
863 }
864 
865 /* capture support pause and resume cases */
866 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResume001, TestSize.Level1)
867 {
868     ASSERT_NE(capture_->GetVersion, nullptr);
869     bool supportPause = false;
870     bool supportResume = false;
871 
872     int32_t ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, &supportResume);
873     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
874 }
875 
876 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResumeException001, TestSize.Level1)
877 {
878     ASSERT_NE(capture_->IsSupportsPauseAndResume, nullptr);
879     bool supportPause = false;
880     bool supportResume = false;
881 
882     int32_t ret = capture_->IsSupportsPauseAndResume(nullptr, &supportPause, &supportResume);
883     ASSERT_NE(ret, HDF_SUCCESS);
884 
885     ret = capture_->IsSupportsPauseAndResume(capture_, nullptr, &supportResume);
886     ASSERT_NE(ret, HDF_SUCCESS);
887 
888     ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, nullptr);
889     ASSERT_NE(ret, HDF_SUCCESS);
890 }
891 
892 /* capture GetFrameBufferSize cases */
893 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSize001, TestSize.Level1)
894 {
895     ASSERT_NE(capture_->GetFrameBufferSize, nullptr);
896     uint64_t bufferSize = 0;
897 
898     int32_t ret = capture_->GetFrameBufferSize(capture_, &bufferSize);
899     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
900 }
901 
902 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSizeException001, TestSize.Level1)
903 {
904     ASSERT_NE(capture_->GetFrameBufferSize, nullptr);
905     uint64_t bufferSize = 0;
906 
907     int32_t ret = capture_->GetFrameBufferSize(nullptr, &bufferSize);
908     ASSERT_NE(ret, HDF_SUCCESS);
909 
910     ret = capture_->GetFrameBufferSize(capture_, nullptr);
911     ASSERT_NE(ret, HDF_SUCCESS);
912 }
913 
914 /* capture AddAudioEffect cases */
915 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffect001, TestSize.Level1)
916 {
917     ASSERT_NE(capture_->AddAudioEffect, nullptr);
918     uint64_t effectId = 0;
919 
920     int32_t ret = capture_->AddAudioEffect(capture_, effectId);
921     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
922 }
923 
924 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffectException001, TestSize.Level1)
925 {
926     ASSERT_NE(capture_->AddAudioEffect, nullptr);
927     uint64_t effectId = -1;
928 
929     int32_t ret = capture_->AddAudioEffect(nullptr, effectId);
930     ASSERT_NE(ret, HDF_SUCCESS);
931 
932     ret = capture_->AddAudioEffect(capture_, effectId);
933     ASSERT_NE(ret, HDF_SUCCESS);
934 }
935 
936 /* capture RemoveAudioEffect cases */
937 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffect001, TestSize.Level1)
938 {
939     ASSERT_NE(capture_->RemoveAudioEffect, nullptr);
940     uint64_t effectId = 0;
941 
942     int32_t ret = capture_->RemoveAudioEffect(capture_, effectId);
943     ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
944 }
945 
946 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffectException001, TestSize.Level1)
947 {
948     ASSERT_NE(capture_->RemoveAudioEffect, nullptr);
949     uint64_t effectId = -1;
950 
951     int32_t ret = capture_->RemoveAudioEffect(nullptr, effectId);
952     ASSERT_NE(ret, HDF_SUCCESS);
953 
954     ret = capture_->RemoveAudioEffect(capture_, effectId);
955     ASSERT_NE(ret, HDF_SUCCESS);
956 }
957 
958 /* capture CheckSceneCapability cases */
959 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapabilityException001, TestSize.Level1)
960 {
961     ASSERT_NE(capture_->CheckSceneCapability, nullptr);
962     struct AudioSceneDescriptor sceneDesc = {};
963     sceneDesc.desc.pins = PIN_IN_MIC;
964     sceneDesc.desc.desc = strdup("mic");
965     sceneDesc.scene.id = AUDIO_IN_COMMUNICATION;
966     bool isSupport = false;
967 
968     int32_t ret = capture_->CheckSceneCapability(capture_, &sceneDesc, &isSupport);
969     EXPECT_EQ(ret, HDF_SUCCESS);
970     free(sceneDesc.desc.desc);
971 }
972 
973 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapability001, TestSize.Level1)
974 {
975     ASSERT_NE(capture_->CheckSceneCapability, nullptr);
976     struct AudioSceneDescriptor sceneDesc = {};
977     sceneDesc.scene.id = AUDIO_IN_COMMUNICATION;
978     bool isSupport = false;
979 
980     int32_t ret = capture_->CheckSceneCapability(nullptr, &sceneDesc, &isSupport);
981     ASSERT_NE(ret, HDF_SUCCESS);
982 
983     ret = capture_->CheckSceneCapability(capture_, nullptr, &isSupport);
984     ASSERT_NE(ret, HDF_SUCCESS);
985 
986     ret = capture_->CheckSceneCapability(capture_, &sceneDesc, nullptr);
987     ASSERT_NE(ret, HDF_SUCCESS);
988 }
989 } // end of name space
990