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 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 if (frame != nullptr) {
237 free(frame);
238 frame = nullptr;
239 }
240 }
241
242 /* capture getposition cases */
243 HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePosition001, TestSize.Level1)
244 {
245 uint64_t frames;
246 struct AudioTimeStamp time;
247 uint32_t frameLen = (uint64_t)GetCaptureBufferSize();
248 uint64_t requestBytes = frameLen;
249 ASSERT_NE(capture_->CaptureFrame, nullptr);
250 ASSERT_NE(capture_->GetCapturePosition, nullptr);
251
252 int32_t ret = capture_->Start(capture_);
253 EXPECT_EQ(ret, HDF_SUCCESS);
254
255 int8_t *frame = (int8_t *)calloc(1, frameLen);
256 EXPECT_NE(nullptr, frame);
257
258 ret = capture_->CaptureFrame(capture_, frame, &frameLen, &requestBytes);
259 EXPECT_EQ(ret, HDF_SUCCESS);
260
261 ret = capture_->GetCapturePosition(capture_, &frames, &time);
262 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
263
264 capture_->Stop(capture_);
265 if (frame != nullptr) {
266 free(frame);
267 frame = nullptr;
268 }
269 }
270
271 HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePositionExceptions001, TestSize.Level1)
272 {
273 int32_t ret;
274 uint64_t frames;
275 struct AudioTimeStamp time;
276 ASSERT_NE(capture_->GetCapturePosition, nullptr);
277
278 ret = capture_->GetCapturePosition(capture_, &frames, &time);
279 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
280
281 ret = capture_->GetCapturePosition(capture_, nullptr, nullptr);
282 EXPECT_NE(ret, HDF_SUCCESS);
283
284 ret = capture_->GetCapturePosition(capture_, &frames, nullptr);
285 EXPECT_NE(ret, HDF_SUCCESS);
286 }
287
288 /**
289 * @brief from here starts the control tests
290 */
291
292 /* capture start cases */
293 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStart001, TestSize.Level1)
294 {
295 ASSERT_NE(capture_->Start, nullptr);
296
297 int32_t ret = capture_->Start(capture_);
298 EXPECT_EQ(ret, HDF_SUCCESS);
299 }
300
301 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureException001, TestSize.Level1)
302 {
303 ASSERT_NE(capture_->Start, nullptr);
304
305 int32_t ret = capture_->Start(nullptr);
306 EXPECT_NE(ret, HDF_SUCCESS);
307 }
308
309 /* capture stop cases */
310 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStop001, TestSize.Level1)
311 {
312 ASSERT_NE(capture_->Start, nullptr);
313 ASSERT_NE(capture_->Stop, nullptr);
314
315 int32_t ret = capture_->Start(capture_);
316 EXPECT_EQ(ret, HDF_SUCCESS);
317
318 ret = capture_->Stop(capture_);
319 EXPECT_EQ(ret, HDF_SUCCESS);
320 }
321
322 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStopException002, TestSize.Level1)
323 {
324 ASSERT_NE(capture_->Stop, nullptr);
325
326 int32_t ret = capture_->Stop(nullptr);
327 EXPECT_NE(ret, HDF_SUCCESS);
328 }
329
330 /* capture pause cases */
331 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePause001, TestSize.Level1)
332 {
333 ASSERT_NE(capture_->Pause, nullptr);
334 ASSERT_NE(capture_->Start, nullptr);
335
336 int32_t ret = capture_->Start(capture_);
337 EXPECT_EQ(ret, HDF_SUCCESS);
338
339 ret = capture_->Pause(capture_);
340 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
341 }
342
343 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException001, TestSize.Level1)
344 {
345 ASSERT_NE(capture_->Pause, nullptr);
346
347 int32_t ret = capture_->Pause(nullptr);
348 EXPECT_NE(ret, HDF_SUCCESS);
349 }
350
351 HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException002, TestSize.Level1)
352 {
353 ASSERT_NE(capture_->Pause, nullptr);
354 ASSERT_NE(capture_->Start, nullptr);
355
356 int32_t ret = capture_->Start(capture_);
357 EXPECT_EQ(ret, HDF_SUCCESS);
358
359 ret = capture_->Pause(capture_);
360 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
361
362 ret = capture_->Pause(capture_);
363 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
364 }
365
366 /* capture resume cases */
367 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResume001, TestSize.Level1)
368 {
369 ASSERT_NE(capture_->Pause, nullptr);
370 ASSERT_NE(capture_->Resume, nullptr);
371 ASSERT_NE(capture_->Start, nullptr);
372 ASSERT_NE(capture_->Stop, nullptr);
373
374 int32_t ret = capture_->Start(capture_);
375 ASSERT_EQ(ret, HDF_SUCCESS);
376
377 ret = capture_->Pause(capture_);
378 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
379
380 ret = capture_->Resume(capture_);
381 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
382
383 ret = capture_->Stop(capture_);
384 ASSERT_EQ(ret, HDF_SUCCESS);
385 }
386
387 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException001, TestSize.Level1)
388 {
389 ASSERT_NE(capture_->Resume, nullptr);
390
391 int32_t ret = capture_->Resume(capture_);
392 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
393 }
394
395 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException002, TestSize.Level1)
396 {
397 ASSERT_NE(capture_->Resume, nullptr);
398
399 int32_t ret = capture_->Resume(nullptr);
400 EXPECT_NE(ret, HDF_SUCCESS);
401 }
402
403 /* capture flush cases */
404 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlush001, TestSize.Level1)
405 {
406 ASSERT_NE(capture_->Flush, nullptr);
407
408 int32_t ret = capture_->Flush(capture_);
409 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret);
410 }
411
412 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlushException001, TestSize.Level1)
413 {
414 ASSERT_NE(capture_->Flush, nullptr);
415
416 int32_t ret = capture_->Flush(nullptr);
417 EXPECT_NE(ret, HDF_SUCCESS);
418 }
419
420 /* capture TurnStandbyMode cases */
421 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyMode001, TestSize.Level1)
422 {
423 ASSERT_NE(capture_->TurnStandbyMode, nullptr);
424 ASSERT_NE(capture_->Start, nullptr);
425
426 int32_t ret = capture_->Start(capture_);
427 EXPECT_EQ(ret, HDF_SUCCESS);
428
429 ret = capture_->TurnStandbyMode(capture_);
430 EXPECT_EQ(ret, HDF_SUCCESS);
431 }
432
433 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyModeException001, TestSize.Level1)
434 {
435 ASSERT_NE(capture_->TurnStandbyMode, nullptr);
436
437 int32_t ret = capture_->TurnStandbyMode(nullptr);
438 EXPECT_NE(ret, HDF_SUCCESS);
439 }
440
441 /* capture AudioDevDump cases */
442 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDump001, TestSize.Level1)
443 {
444 ASSERT_NE(capture_->AudioDevDump, nullptr);
445
446 int32_t range = 4;
447 char pathBuf[] = "/data/CaptureDump.log";
448
449 FILE *file = fopen(pathBuf, "wb+");
450 ASSERT_NE(nullptr, file);
451 int fd = fileno(file);
452 if (fd == -1) {
453 fclose(file);
454 ASSERT_NE(fd, -1);
455 }
456
457 int32_t ret = capture_->AudioDevDump(capture_, range, fd);
458 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
459 fclose(file);
460 }
461
462 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDumpExption001, TestSize.Level1)
463 {
464 ASSERT_NE(capture_->AudioDevDump, nullptr);
465 int32_t range = 4;
466
467 int32_t ret = capture_->AudioDevDump(nullptr, range, -1);
468 EXPECT_NE(ret, HDF_SUCCESS);
469 }
470
471 /**
472 * @brief here starts the volume test cases
473 */
474 /* capture SetMute cases */
475 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMute001, TestSize.Level1)
476 {
477 bool isSupport = false;
478 ASSERT_NE(capture_->SetMute, nullptr);
479 ASSERT_NE(capture_->GetMute, nullptr);
480
481 int32_t ret = capture_->SetMute(capture_, isSupport);
482 if (ret == HDF_SUCCESS) {
483 ret = capture_->GetMute(capture_, &isSupport);
484 ASSERT_EQ(isSupport, false);
485 } else if (ret == HDF_ERR_NOT_SUPPORT) {
486 ASSERT_TRUE(true);
487 } else {
488 ASSERT_TRUE(false);
489 }
490
491 isSupport = true;
492 ret = capture_->SetMute(capture_, isSupport);
493 if (ret == HDF_SUCCESS) {
494 ret = capture_->GetMute(capture_, &isSupport);
495 ASSERT_EQ(isSupport, true);
496 } else if (ret == HDF_ERR_NOT_SUPPORT) {
497 ASSERT_TRUE(true);
498 } else {
499 ASSERT_TRUE(false);
500 }
501 }
502
503 // set twice
504 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException001, TestSize.Level1)
505 {
506 bool isSupport = true;
507 ASSERT_NE(capture_->SetMute, nullptr);
508 ASSERT_NE(capture_->GetMute, nullptr);
509
510 int32_t ret = capture_->SetMute(capture_, isSupport);
511 if (ret == HDF_SUCCESS) {
512 ret = capture_->GetMute(capture_, &isSupport);
513 ASSERT_EQ(isSupport, true);
514 } else if (ret == HDF_ERR_NOT_SUPPORT) {
515 ASSERT_TRUE(true);
516 } else {
517 ASSERT_TRUE(false);
518 }
519
520 ret = capture_->SetMute(capture_, isSupport);
521 if (ret == HDF_SUCCESS) {
522 ret = capture_->GetMute(capture_, &isSupport);
523 ASSERT_EQ(isSupport, true);
524 } else if (ret == HDF_ERR_NOT_SUPPORT) {
525 ASSERT_TRUE(true);
526 } else {
527 ASSERT_TRUE(false);
528 }
529 }
530
531 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException002, TestSize.Level1)
532 {
533 EXPECT_NE(capture_->SetMute, nullptr);
534
535 int32_t ret = capture_->SetMute(nullptr, true);
536 EXPECT_NE(ret, HDF_SUCCESS);
537 }
538
539 /* capture GetMute cases */
540 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMute001, TestSize.Level1)
541 {
542 bool isSupport = true;
543 EXPECT_NE(capture_->GetMute, nullptr);
544
545 int32_t ret = capture_->GetMute(capture_, &isSupport);
546 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
547 }
548
549 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMuteException001, TestSize.Level1)
550 {
551 EXPECT_NE(capture_->GetMute, nullptr);
552
553 int32_t ret = capture_->GetMute(nullptr, nullptr);
554 EXPECT_NE(ret, HDF_SUCCESS);
555
556 ret = capture_->GetMute(capture_, nullptr);
557 EXPECT_NE(ret, HDF_SUCCESS);
558 }
559
560 /* capture SetVolume cases */
561 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolume001, TestSize.Level1)
562 {
563 float volume = 0.0;
564 EXPECT_NE(capture_->SetVolume, nullptr);
565 EXPECT_NE(capture_->GetVolume, nullptr);
566
567 int32_t ret = capture_->SetVolume(capture_, HALF_OF_MAX_VOLUME);
568 if (ret == HDF_SUCCESS) {
569 ret = capture_->GetVolume(capture_, &volume);
570 ASSERT_EQ(volume, HALF_OF_MAX_VOLUME);
571 } else if (ret == HDF_ERR_NOT_SUPPORT) {
572 ASSERT_TRUE(true);
573 } else {
574 ASSERT_TRUE(false);
575 }
576 }
577
578 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException001, TestSize.Level1)
579 {
580 float exceptionVolume = 2.0;
581 EXPECT_NE(capture_->SetVolume, nullptr);
582
583 int32_t ret = capture_->SetVolume(capture_, exceptionVolume);
584 EXPECT_NE(ret, HDF_SUCCESS);
585
586 exceptionVolume = -3.0;
587 ret = capture_->SetVolume(capture_, exceptionVolume);
588 EXPECT_NE(ret, HDF_SUCCESS);
589 }
590
591 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException002, TestSize.Level1)
592 {
593 EXPECT_NE(capture_->SetVolume, nullptr);
594
595 int32_t ret = capture_->SetVolume(nullptr, HALF_OF_MAX_VOLUME);
596 EXPECT_NE(ret, HDF_SUCCESS);
597 }
598
599 /* capture GetVolume cases */
600 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolume001, TestSize.Level1)
601 {
602 float volume = 0.0;
603 EXPECT_NE(capture_->GetVolume, nullptr);
604
605 int32_t ret = capture_->GetVolume(capture_, &volume);
606 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
607 }
608
609 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolumeException001, TestSize.Level1)
610 {
611 float volume = 0.0;
612 EXPECT_NE(capture_->GetVolume, nullptr);
613
614 int32_t ret = capture_->GetVolume(nullptr, nullptr);
615 EXPECT_NE(ret, HDF_SUCCESS);
616
617 ret = capture_->GetVolume(capture_, nullptr);
618 EXPECT_NE(ret, HDF_SUCCESS);
619
620 ret = capture_->GetVolume(nullptr, &volume);
621 EXPECT_NE(ret, HDF_SUCCESS);
622 }
623
624 /* capture GetGainThreshold cases */
625 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThreshold001, TestSize.Level1)
626 {
627 float bottom = 0;
628 float top = 0;
629 EXPECT_NE(capture_->GetGainThreshold, nullptr);
630
631 int32_t ret = capture_->GetGainThreshold(capture_, &bottom, &top);
632 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
633 }
634
635 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThresholdException002, TestSize.Level1)
636 {
637 float bottom = 0;
638 float top = 0;
639 EXPECT_NE(capture_->GetGainThreshold, nullptr);
640
641 int32_t ret = capture_->GetGainThreshold(nullptr, &bottom, &top);
642 EXPECT_NE(ret, HDF_SUCCESS);
643
644 ret = capture_->GetGainThreshold(nullptr, nullptr, nullptr);
645 EXPECT_NE(ret, HDF_SUCCESS);
646
647 ret = capture_->GetGainThreshold(capture_, nullptr, nullptr);
648 EXPECT_NE(ret, HDF_SUCCESS);
649 }
650
651 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGain001, TestSize.Level1)
652 {
653 EXPECT_NE(capture_->SetGain, nullptr);
654
655 int32_t ret = capture_->SetGain(capture_, HALF_OF_MAX_VOLUME);
656 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
657 }
658
659 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGainException001, TestSize.Level1)
660 {
661 EXPECT_NE(capture_->SetGain, nullptr);
662 float exceptionGain = -3.0;
663
664 int32_t ret = capture_->SetGain(capture_, exceptionGain);
665 EXPECT_NE(ret, HDF_SUCCESS);
666
667 ret = capture_->SetGain(nullptr, HALF_OF_MAX_VOLUME);
668 EXPECT_NE(ret, HDF_SUCCESS);
669 }
670
671 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGain001, TestSize.Level1)
672 {
673 EXPECT_NE(capture_->GetGain, nullptr);
674 float getGain;
675
676 int32_t ret = capture_->GetGain(capture_, &getGain);
677 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
678 }
679
680 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainException001, TestSize.Level1)
681 {
682 EXPECT_NE(capture_->SetGain, nullptr);
683 float exceptionGain = 2.0;
684
685 int32_t ret = capture_->GetGain(capture_, nullptr);
686 EXPECT_NE(ret, HDF_SUCCESS);
687
688 ret = capture_->GetGain(nullptr, &exceptionGain);
689 EXPECT_NE(ret, HDF_SUCCESS);
690 }
691
692 /**
693 * @brief here starts the attributes cases
694 */
695 /* capture GetSampleAttributes cases */
696 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributes001, TestSize.Level1)
697 {
698 struct AudioSampleAttributes attrs = {};
699 EXPECT_NE(capture_->GetSampleAttributes, nullptr);
700
701 int32_t ret = capture_->GetSampleAttributes(capture_, &attrs);
702 EXPECT_EQ(ret, HDF_SUCCESS);
703 }
704
705 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributesException001, TestSize.Level1)
706 {
707 struct AudioSampleAttributes attrs = {};
708 EXPECT_NE(capture_->GetSampleAttributes, nullptr);
709
710 int32_t ret = capture_->GetSampleAttributes(nullptr, &attrs);
711 EXPECT_NE(ret, HDF_SUCCESS);
712
713 ret = capture_->GetSampleAttributes(capture_, nullptr);
714 EXPECT_NE(ret, HDF_SUCCESS);
715 }
716
717 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetSampleAttributes001, TestSize.Level1)
718 {
719 struct AudioSampleAttributes attrs = {
720 .format = AUDIO_FORMAT_TYPE_PCM_16_BIT,
721 .sampleRate = TEST_SAMPLE_RATE_MASK_48000,
722 .channelCount = TEST_CHANNEL_COUNT,
723 };
724 EXPECT_NE(capture_->SetSampleAttributes, nullptr);
725
726 int32_t ret = capture_->SetSampleAttributes(capture_, &attrs);
727 EXPECT_NE(ret, HDF_SUCCESS);
728
729 ret = capture_->SetSampleAttributes(capture_, nullptr);
730 EXPECT_NE(ret, HDF_SUCCESS);
731
732 ret = capture_->SetSampleAttributes(nullptr, &attrs);
733 EXPECT_NE(ret, HDF_SUCCESS);
734 }
735
736 /* capture GetCurrentChannelId cases */
737 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelId001, TestSize.Level1)
738 {
739 int32_t ret = HDF_SUCCESS;
740 uint32_t channelId = 0;
741 EXPECT_NE(capture_->GetCurrentChannelId, nullptr);
742
743 ret = capture_->GetCurrentChannelId(capture_, &channelId);
744 EXPECT_EQ(ret, HDF_SUCCESS);
745 EXPECT_EQ(TEST_CHANNEL_COUNT, channelId);
746 }
747
748 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelIdException001, TestSize.Level1)
749 {
750 int32_t ret = HDF_SUCCESS;
751 uint32_t channelId = 0;
752 EXPECT_NE(capture_->GetCurrentChannelId, nullptr);
753
754 ret = capture_->GetCurrentChannelId(capture_, nullptr);
755 EXPECT_NE(ret, HDF_SUCCESS);
756
757 ret = capture_->GetCurrentChannelId(nullptr, &channelId);
758 EXPECT_NE(ret, HDF_SUCCESS);
759 }
760
761 /* capture SetExtraParams cases */
762 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParams001, TestSize.Level1)
763 {
764 EXPECT_NE(capture_->SetExtraParams, nullptr);
765 EXPECT_NE(capture_->GetExtraParams, nullptr);
766
767 char kvList[] = "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000";
768 char keyValueListReply[256] = {};
769 uint32_t listLenth = 256;
770 size_t index = 1;
771
772 int32_t ret = capture_->SetExtraParams(capture_, kvList);
773 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
774
775 ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth);
776 // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM
777 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
778
779 std::string strGetValue = keyValueListReply;
780 size_t indexAttr = strGetValue.find("attr-frame-count");
781 size_t indexFlag = strGetValue.rfind(";");
782
783 if (indexAttr != string::npos && indexFlag != string::npos) {
784 strGetValue.replace(indexAttr, indexFlag - indexAttr + index, "");
785 }
786 }
787
788 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParamsException001, TestSize.Level1)
789 {
790 ASSERT_NE(capture_->SetExtraParams, nullptr);
791
792 int32_t ret = capture_->SetExtraParams(nullptr, nullptr);
793 EXPECT_NE(ret, HDF_SUCCESS);
794 }
795
796 /* capture GetExtraParams cases */
797 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParams001, TestSize.Level1)
798 {
799 ASSERT_NE(capture_->GetExtraParams, nullptr);
800 char keyValueListReply[256] = {};
801 uint32_t listLenth = 256;
802
803 int32_t ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth);
804 // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM
805 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
806 }
807
808 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParamsException001, TestSize.Level1)
809 {
810 ASSERT_NE(capture_->GetExtraParams, nullptr);
811 char keyValueListReply[256] = {};
812 uint32_t listLenth = 256;
813
814 int32_t ret = capture_->GetExtraParams(nullptr, keyValueListReply, listLenth);
815 EXPECT_NE(ret, HDF_SUCCESS);
816
817 ret = capture_->GetExtraParams(capture_, nullptr, listLenth);
818 EXPECT_NE(ret, HDF_SUCCESS);
819 }
820
821 /* capture selectsene cases */
822 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectScene001, TestSize.Level1)
823 {
824 ASSERT_NE(capture_->SelectScene, nullptr);
825 struct AudioSceneDescriptor sceneDesc = {};
826 sceneDesc.desc.pins = PIN_IN_MIC;
827 sceneDesc.desc.desc = strdup("mic");
828 sceneDesc.scene.id = AUDIO_IN_CALL;
829
830 int32_t ret = capture_->SelectScene(capture_, &sceneDesc);
831 EXPECT_EQ(ret, HDF_SUCCESS);
832 free(sceneDesc.desc.desc);
833 }
834
835 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectSceneException001, TestSize.Level1)
836 {
837 ASSERT_NE(capture_->SelectScene, nullptr);
838 struct AudioSceneDescriptor sceneDesc = {};
839 sceneDesc.scene.id = AUDIO_IN_CALL;
840
841 int32_t ret = capture_->SelectScene(capture_, nullptr);
842 ASSERT_NE(ret, HDF_SUCCESS);
843
844 ret = capture_->SelectScene(nullptr, &sceneDesc);
845 ASSERT_NE(ret, HDF_SUCCESS);
846 }
847
848 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectSceneInValid001, TestSize.Level1)
849 {
850 ASSERT_NE(capture_->SelectScene, nullptr);
851 struct AudioSceneDescriptor sceneDesc = {};
852 sceneDesc.scene.id = INVALID_SCENE_ID;
853 sceneDesc.desc.pins = PIN_IN_MIC;
854 sceneDesc.desc.desc = strdup("mic");
855
856 int32_t ret = capture_->SelectScene(capture_, &sceneDesc);
857 ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT);
858 free(sceneDesc.desc.desc);
859 }
860
861 /* capture get version cases */
862 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersion001, TestSize.Level1)
863 {
864 ASSERT_NE(capture_->GetVersion, nullptr);
865 uint32_t majorVer;
866 uint32_t minorVer;
867 ASSERT_EQ(HDF_SUCCESS, capture_->GetVersion(capture_, &majorVer, &minorVer));
868 EXPECT_EQ(IAUDIO_MANAGER_MAJOR_VERSION, majorVer);
869 EXPECT_EQ(IAUDIO_MANAGER_MINOR_VERSION, minorVer);
870 }
871
872 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersionException001, TestSize.Level1)
873 {
874 ASSERT_NE(capture_->GetVersion, nullptr);
875 uint32_t majorVer;
876 uint32_t minorVer;
877 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, capture_->GetVersion(nullptr, &majorVer, &minorVer));
878 }
879
880 /* capture support pause and resume cases */
881 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResume001, TestSize.Level1)
882 {
883 ASSERT_NE(capture_->GetVersion, nullptr);
884 bool supportPause = false;
885 bool supportResume = false;
886
887 int32_t ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, &supportResume);
888 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
889 }
890
891 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResumeException001, TestSize.Level1)
892 {
893 ASSERT_NE(capture_->IsSupportsPauseAndResume, nullptr);
894 bool supportPause = false;
895 bool supportResume = false;
896
897 int32_t ret = capture_->IsSupportsPauseAndResume(nullptr, &supportPause, &supportResume);
898 ASSERT_NE(ret, HDF_SUCCESS);
899
900 ret = capture_->IsSupportsPauseAndResume(capture_, nullptr, &supportResume);
901 ASSERT_NE(ret, HDF_SUCCESS);
902
903 ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, nullptr);
904 ASSERT_NE(ret, HDF_SUCCESS);
905 }
906
907 /* capture GetFrameBufferSize cases */
908 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSize001, TestSize.Level1)
909 {
910 ASSERT_NE(capture_->GetFrameBufferSize, nullptr);
911 uint64_t bufferSize = 0;
912
913 int32_t ret = capture_->GetFrameBufferSize(capture_, &bufferSize);
914 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
915 }
916
917 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSizeException001, TestSize.Level1)
918 {
919 ASSERT_NE(capture_->GetFrameBufferSize, nullptr);
920 uint64_t bufferSize = 0;
921
922 int32_t ret = capture_->GetFrameBufferSize(nullptr, &bufferSize);
923 ASSERT_NE(ret, HDF_SUCCESS);
924
925 ret = capture_->GetFrameBufferSize(capture_, nullptr);
926 ASSERT_NE(ret, HDF_SUCCESS);
927 }
928
929 /* capture AddAudioEffect cases */
930 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffect001, TestSize.Level1)
931 {
932 ASSERT_NE(capture_->AddAudioEffect, nullptr);
933 uint64_t effectId = 0;
934
935 int32_t ret = capture_->AddAudioEffect(capture_, effectId);
936 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
937 }
938
939 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffectException001, TestSize.Level1)
940 {
941 ASSERT_NE(capture_->AddAudioEffect, nullptr);
942 uint64_t effectId = -1;
943
944 int32_t ret = capture_->AddAudioEffect(nullptr, effectId);
945 ASSERT_NE(ret, HDF_SUCCESS);
946
947 ret = capture_->AddAudioEffect(capture_, effectId);
948 ASSERT_NE(ret, HDF_SUCCESS);
949 }
950
951 /* capture RemoveAudioEffect cases */
952 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffect001, TestSize.Level1)
953 {
954 ASSERT_NE(capture_->RemoveAudioEffect, nullptr);
955 uint64_t effectId = 0;
956
957 int32_t ret = capture_->RemoveAudioEffect(capture_, effectId);
958 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
959 }
960
961 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffectException001, TestSize.Level1)
962 {
963 ASSERT_NE(capture_->RemoveAudioEffect, nullptr);
964 uint64_t effectId = -1;
965
966 int32_t ret = capture_->RemoveAudioEffect(nullptr, effectId);
967 ASSERT_NE(ret, HDF_SUCCESS);
968
969 ret = capture_->RemoveAudioEffect(capture_, effectId);
970 ASSERT_NE(ret, HDF_SUCCESS);
971 }
972
973 /* capture CheckSceneCapability cases */
974 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapabilityException001, TestSize.Level1)
975 {
976 ASSERT_NE(capture_->CheckSceneCapability, nullptr);
977 struct AudioSceneDescriptor sceneDesc = {};
978 sceneDesc.desc.pins = PIN_IN_MIC;
979 sceneDesc.desc.desc = strdup("mic");
980 sceneDesc.scene.id = AUDIO_IN_COMMUNICATION;
981 bool isSupport = false;
982
983 int32_t ret = capture_->CheckSceneCapability(capture_, &sceneDesc, &isSupport);
984 EXPECT_EQ(ret, HDF_SUCCESS);
985 free(sceneDesc.desc.desc);
986 }
987
988 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapabilityInValid001, TestSize.Level1)
989 {
990 ASSERT_NE(capture_->CheckSceneCapability, nullptr);
991 struct AudioSceneDescriptor sceneDesc = {};
992 sceneDesc.desc.pins = PIN_IN_MIC;
993 sceneDesc.desc.desc = strdup("mic");
994 sceneDesc.scene.id = INVALID_SCENE_ID;
995 bool isSupport = false;
996
997 int32_t ret = capture_->CheckSceneCapability(capture_, &sceneDesc, &isSupport);
998 ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT);
999 free(sceneDesc.desc.desc);
1000 }
1001
1002 HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapability001, TestSize.Level1)
1003 {
1004 ASSERT_NE(capture_->CheckSceneCapability, nullptr);
1005 struct AudioSceneDescriptor sceneDesc = {};
1006 sceneDesc.scene.id = AUDIO_IN_COMMUNICATION;
1007 bool isSupport = false;
1008
1009 int32_t ret = capture_->CheckSceneCapability(nullptr, &sceneDesc, &isSupport);
1010 ASSERT_NE(ret, HDF_SUCCESS);
1011
1012 ret = capture_->CheckSceneCapability(capture_, nullptr, &isSupport);
1013 ASSERT_NE(ret, HDF_SUCCESS);
1014
1015 ret = capture_->CheckSceneCapability(capture_, &sceneDesc, nullptr);
1016 ASSERT_NE(ret, HDF_SUCCESS);
1017 }
1018
1019 } // end of name space