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