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