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 "osal_mem.h"
18
19 #include "v1_0/audio_types.h"
20 #include "v1_0/iaudio_manager.h"
21 #include "v1_0/iaudio_render.h"
22
23 using namespace std;
24 using namespace testing::ext;
25
26 namespace {
27 const float MAX_GAINTHRESHOLD = 15.0;
28 const float MIN_GAINTHRESHOLD = 0.0;
29 const int BUFFER_LENTH = 1024 * 16;
30 const int DEEP_BUFFER_RENDER_PERIOD_SIZE = 4 * 1024;
31 const int MOVE_LEFT_NUM = 8;
32 const int32_t AUDIO_RENDER_BUF_TEST = 1024;
33 const int32_t AUDIO_RENDER_CHANNELCOUNT = 2;
34 const int32_t AUDIO_SAMPLE_RATE_48K = 48000;
35 const int32_t MAX_AUDIO_ADAPTER_DESC = 5;
36 const uint32_t INVALID_SCENE_ID = -1;
37 const uint64_t DEFAULT_BUFFER_SIZE = 16384;
38
39 class AudioUtRenderTest : public testing::Test {
40 public:
41 struct IAudioManager *manager_ = nullptr;
42 struct AudioAdapterDescriptor descs_[MAX_AUDIO_ADAPTER_DESC];
43 struct AudioAdapterDescriptor *desc_;
44 struct IAudioAdapter *adapter_ = nullptr;
45 struct IAudioRender *render_ = nullptr;
46 struct AudioDeviceDescriptor devDescRender_ = {};
47 struct AudioSampleAttributes attrsRender_ = {};
48 uint32_t renderId_ = 0;
49 char *devDescriptorName_ = nullptr;
50 uint32_t size_ = MAX_AUDIO_ADAPTER_DESC;
51 virtual void SetUp();
52 virtual void TearDown();
53 uint64_t GetRenderBufferSize();
54 void InitRenderAttrs(struct AudioSampleAttributes &attrs);
55 void InitRenderDevDesc(struct AudioDeviceDescriptor &devDesc);
56 void FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf);
57 void ReleaseAllAdapterDescs(struct AudioAdapterDescriptor *descs, uint32_t descsLen);
58 };
59
GetRenderBufferSize()60 uint64_t AudioUtRenderTest::GetRenderBufferSize()
61 {
62 int32_t ret = HDF_SUCCESS;
63 uint64_t frameSize = 0;
64 uint64_t frameCount = 0;
65 uint64_t bufferSize = 0;
66
67 if (render_ == nullptr) {
68 return DEFAULT_BUFFER_SIZE;
69 }
70
71 ret = render_->GetFrameSize(render_, &frameSize);
72 if (ret != HDF_SUCCESS) {
73 return DEFAULT_BUFFER_SIZE;
74 }
75
76 ret = render_->GetFrameCount(render_, &frameCount);
77 if (ret != HDF_SUCCESS) {
78 return DEFAULT_BUFFER_SIZE;
79 }
80
81 bufferSize = frameCount * frameSize;
82 if (bufferSize == 0) {
83 bufferSize = DEFAULT_BUFFER_SIZE;
84 }
85
86 return bufferSize;
87 }
88
InitRenderAttrs(struct AudioSampleAttributes & attrs)89 void AudioUtRenderTest::InitRenderAttrs(struct AudioSampleAttributes &attrs)
90 {
91 attrs.channelCount = AUDIO_RENDER_CHANNELCOUNT;
92 attrs.sampleRate = AUDIO_SAMPLE_RATE_48K;
93 attrs.interleaved = 0;
94 attrs.type = AUDIO_IN_MEDIA;
95 attrs.period = DEEP_BUFFER_RENDER_PERIOD_SIZE;
96 attrs.frameSize = AUDIO_FORMAT_TYPE_PCM_16_BIT * AUDIO_RENDER_CHANNELCOUNT / MOVE_LEFT_NUM;
97 attrs.isBigEndian = false;
98 attrs.isSignedData = true;
99 attrs.startThreshold = DEEP_BUFFER_RENDER_PERIOD_SIZE / (attrs.format * attrs.channelCount / MOVE_LEFT_NUM);
100 attrs.stopThreshold = INT_MAX;
101 attrs.silenceThreshold = BUFFER_LENTH;
102 }
103
InitRenderDevDesc(struct AudioDeviceDescriptor & devDesc)104 void AudioUtRenderTest::InitRenderDevDesc(struct AudioDeviceDescriptor &devDesc)
105 {
106 devDesc.pins = PIN_OUT_SPEAKER;
107 devDescriptorName_ = strdup("cardname");
108 devDesc.desc = devDescriptorName_;
109
110 ASSERT_NE(desc_, nullptr);
111 ASSERT_NE(desc_->ports, nullptr);
112 for (uint32_t index = 0; index < desc_->portsLen; index++) {
113 if (desc_->ports[index].dir == PORT_OUT) {
114 devDesc.portId = desc_->ports[index].portId;
115 return;
116 }
117 }
118 }
119
FreeAdapterElements(struct AudioAdapterDescriptor * dataBlock,bool freeSelf)120 void AudioUtRenderTest::FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf)
121 {
122 if (dataBlock == nullptr) {
123 return;
124 }
125
126 OsalMemFree(dataBlock->adapterName);
127
128 OsalMemFree(dataBlock->ports);
129
130 if (freeSelf) {
131 OsalMemFree(dataBlock);
132 }
133 }
134
ReleaseAllAdapterDescs(struct AudioAdapterDescriptor * descs,uint32_t descsLen)135 void AudioUtRenderTest::ReleaseAllAdapterDescs(struct AudioAdapterDescriptor *descs, uint32_t descsLen)
136 {
137 if (descs == nullptr || descsLen == 0) {
138 return;
139 }
140
141 for (uint32_t i = 0; i < descsLen; i++) {
142 FreeAdapterElements(&descs[i], false);
143 }
144 }
145
SetUp()146 void AudioUtRenderTest::SetUp()
147 {
148 manager_ = IAudioManagerGet(false);
149 ASSERT_NE(manager_, nullptr);
150
151 ASSERT_EQ(HDF_SUCCESS, manager_->GetAllAdapters(manager_, descs_, &size_));
152 ASSERT_NE(descs_, nullptr);
153 EXPECT_GE(MAX_AUDIO_ADAPTER_DESC, size_);
154 desc_ = &descs_[0];
155 ASSERT_EQ(HDF_SUCCESS, manager_->LoadAdapter(manager_, desc_, &adapter_));
156 ASSERT_NE(adapter_, nullptr);
157 InitRenderDevDesc(devDescRender_);
158 InitRenderAttrs(attrsRender_);
159
160 attrsRender_.format = AUDIO_FORMAT_TYPE_PCM_16_BIT;
161 int32_t ret = adapter_->CreateRender(adapter_, &devDescRender_, &attrsRender_, &render_, &renderId_);
162 if (ret != HDF_SUCCESS) {
163 attrsRender_.format = AUDIO_FORMAT_TYPE_PCM_32_BIT;
164 ASSERT_EQ(HDF_SUCCESS, adapter_->CreateRender(adapter_, &devDescRender_, &attrsRender_, &render_, &renderId_));
165 }
166 ASSERT_NE(render_, nullptr);
167 }
168
TearDown()169 void AudioUtRenderTest::TearDown()
170 {
171 ASSERT_NE(devDescriptorName_, nullptr);
172 free(devDescriptorName_);
173
174 if (adapter_ != nullptr) {
175 adapter_->DestroyRender(adapter_, renderId_);
176 render_ = nullptr;
177 }
178 if (manager_ != nullptr) {
179 manager_->UnloadAdapter(manager_, desc_->adapterName);
180 adapter_ = nullptr;
181 ReleaseAllAdapterDescs(descs_, size_);
182
183 IAudioManagerRelease(manager_, false);
184 }
185 }
186
187 HWTEST_F(AudioUtRenderTest, RenderStartNull001, TestSize.Level1)
188 {
189 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->Start(nullptr));
190 }
191
192 HWTEST_F(AudioUtRenderTest, RenderStartNull002, TestSize.Level1)
193 {
194 EXPECT_EQ(HDF_SUCCESS, render_->Start(render_));
195 EXPECT_NE(HDF_SUCCESS, render_->Start(render_));
196 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
197 }
198
199 HWTEST_F(AudioUtRenderTest, RenderStartStopIsValid001, TestSize.Level1)
200 {
201 EXPECT_EQ(HDF_SUCCESS, render_->Start(render_));
202 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
203 }
204
205 HWTEST_F(AudioUtRenderTest, RenderFlushNull001, TestSize.Level1)
206 {
207 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->Flush(nullptr));
208 }
209
210 HWTEST_F(AudioUtRenderTest, RenderFlushIsValid001, TestSize.Level1)
211 {
212 EXPECT_NE(HDF_SUCCESS, render_->Flush(render_));
213 }
214
215 HWTEST_F(AudioUtRenderTest, RenderStopNull001, TestSize.Level1)
216 {
217 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->Stop(nullptr));
218 }
219
220 HWTEST_F(AudioUtRenderTest, RenderStopInvalid001, TestSize.Level1)
221 {
222 int32_t ret = render_->Stop(render_);
223 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_FAILURE);
224 }
225
226 HWTEST_F(AudioUtRenderTest, RenderGetFrameSizeNull001, TestSize.Level1)
227 {
228 uint64_t frameSize = 0;
229 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetFrameSize(nullptr, &frameSize));
230 }
231
232 HWTEST_F(AudioUtRenderTest, RenderGetFrameSizeNull002, TestSize.Level1)
233 {
234 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetFrameSize(render_, nullptr));
235 }
236
237 HWTEST_F(AudioUtRenderTest, RenderGetFrameSizeIsValid001, TestSize.Level1)
238 {
239 uint64_t frameSize = 0;
240 EXPECT_EQ(HDF_SUCCESS, render_->GetFrameSize(render_, &frameSize));
241 }
242
243 HWTEST_F(AudioUtRenderTest, RenderGetFrameCountNull001, TestSize.Level1)
244 {
245 uint64_t frameCount = 0;
246 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetFrameCount(nullptr, &frameCount));
247 }
248
249 HWTEST_F(AudioUtRenderTest, RenderGetFrameCountNull002, TestSize.Level1)
250 {
251 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetFrameCount(render_, nullptr));
252 }
253
254 HWTEST_F(AudioUtRenderTest, RenderGetFrameCountIsValid001, TestSize.Level1)
255 {
256 uint64_t frameCount = 0;
257 EXPECT_EQ(HDF_SUCCESS, render_->GetFrameCount(render_, &frameCount));
258 }
259
260 HWTEST_F(AudioUtRenderTest, RenderSetSampleAttributesNull001, TestSize.Level1)
261 {
262 struct AudioSampleAttributes attrs;
263 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetSampleAttributes(nullptr, &attrs));
264 }
265
266 HWTEST_F(AudioUtRenderTest, RenderSetSampleAttributesNull002, TestSize.Level1)
267 {
268 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->SetSampleAttributes(render_, nullptr));
269 }
270
271 HWTEST_F(AudioUtRenderTest, RenderSetSampleAttributesIsValid001, TestSize.Level1)
272 {
273 struct AudioSampleAttributes attrs = attrsRender_;
274 EXPECT_EQ(HDF_SUCCESS, render_->SetSampleAttributes(render_, &attrs));
275 }
276
277 HWTEST_F(AudioUtRenderTest, RenderGetSampleAttributesNull001, TestSize.Level1)
278 {
279 struct AudioSampleAttributes attrs;
280 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetSampleAttributes(nullptr, &attrs));
281 }
282
283 HWTEST_F(AudioUtRenderTest, RenderGetSampleAttributesNull002, TestSize.Level1)
284 {
285 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetSampleAttributes(render_, nullptr));
286 }
287
288 HWTEST_F(AudioUtRenderTest, RenderGetSampleAttributesIsValid001, TestSize.Level1)
289 {
290 struct AudioSampleAttributes attrs;
291 EXPECT_EQ(HDF_SUCCESS, render_->GetSampleAttributes(render_, &attrs));
292 }
293
294 HWTEST_F(AudioUtRenderTest, RenderGetCurrentChannelIdNull001, TestSize.Level1)
295 {
296 uint32_t channelId;
297 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetCurrentChannelId(nullptr, &channelId));
298 }
299
300 HWTEST_F(AudioUtRenderTest, RenderGetCurrentChannelIdNull002, TestSize.Level1)
301 {
302 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetCurrentChannelId(render_, nullptr));
303 }
304
305 HWTEST_F(AudioUtRenderTest, RenderGetCurrentChannelIdIsValid001, TestSize.Level1)
306 {
307 uint32_t channelId;
308 EXPECT_EQ(HDF_SUCCESS, render_->GetCurrentChannelId(render_, &channelId));
309 }
310
311 HWTEST_F(AudioUtRenderTest, RenderCheckSceneCapabilityNull001, TestSize.Level1)
312 {
313 struct AudioSceneDescriptor scene;
314 bool supported = false;
315 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->CheckSceneCapability(nullptr, &scene, &supported));
316 }
317
318 HWTEST_F(AudioUtRenderTest, RenderCheckSceneCapabilityNull002, TestSize.Level1)
319 {
320 bool supported = false;
321 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->CheckSceneCapability(render_, nullptr, &supported));
322 }
323
324 HWTEST_F(AudioUtRenderTest, RenderCheckSceneCapabilityNull003, TestSize.Level1)
325 {
326 struct AudioSceneDescriptor scene;
327 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->CheckSceneCapability(render_, &scene, nullptr));
328 }
329
330 HWTEST_F(AudioUtRenderTest, RenderCheckSceneCapabilityInValid001, TestSize.Level1)
331 {
332 struct AudioSceneDescriptor scene;
333 bool supported = false;
334 scene.scene.id = INVALID_SCENE_ID;
335 scene.desc = devDescRender_;
336 int32_t ret = render_->CheckSceneCapability(render_, &scene, &supported);
337 ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT);
338 }
339
340 HWTEST_F(AudioUtRenderTest, RenderCheckSceneCapabilityIsValid001, TestSize.Level1)
341 {
342 struct AudioSceneDescriptor scene;
343 bool supported = false;
344 scene.scene.id = AUDIO_IN_MEDIA;
345 scene.desc = devDescRender_;
346 EXPECT_EQ(HDF_SUCCESS, render_->CheckSceneCapability(render_, &scene, &supported));
347 }
348
349 HWTEST_F(AudioUtRenderTest, RenderSelectSceneNull001, TestSize.Level1)
350 {
351 struct AudioSceneDescriptor scene;
352 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SelectScene(nullptr, &scene));
353 }
354
355 HWTEST_F(AudioUtRenderTest, RenderSelectSceneNull002, TestSize.Level1)
356 {
357 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->SelectScene(render_, nullptr));
358 }
359
360 HWTEST_F(AudioUtRenderTest, RenderSelectSceneInValid001, TestSize.Level1)
361 {
362 struct AudioSceneDescriptor scene;
363 scene.scene.id = INVALID_SCENE_ID;
364 scene.desc.pins = PIN_OUT_HEADSET;
365 scene.desc.desc = strdup("mic");
366 int32_t ret = render_->SelectScene(render_, &scene);
367 ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT);
368 free(scene.desc.desc);
369 }
370
371 HWTEST_F(AudioUtRenderTest, RenderSelectSceneIsValid001, TestSize.Level1)
372 {
373 struct AudioSceneDescriptor scene;
374 scene.scene.id = AUDIO_IN_MEDIA;
375 scene.desc.pins = PIN_OUT_HEADSET;
376 scene.desc.desc = strdup("mic");
377 EXPECT_EQ(HDF_SUCCESS, render_->SelectScene(render_, &scene));
378 scene.desc.pins = PIN_OUT_SPEAKER;
379 EXPECT_EQ(HDF_SUCCESS, render_->SelectScene(render_, &scene));
380 free(scene.desc.desc);
381 }
382
383 HWTEST_F(AudioUtRenderTest, RenderGetLatencyNull001, TestSize.Level1)
384 {
385 uint32_t ms = 0;
386 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetLatency(nullptr, &ms));
387 }
388
389 HWTEST_F(AudioUtRenderTest, RenderGetLatencyNull002, TestSize.Level1)
390 {
391 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetLatency(render_, nullptr));
392 }
393
394 HWTEST_F(AudioUtRenderTest, RenderGetLatencyIsValid001, TestSize.Level1)
395 {
396 uint32_t ms = 0;
397 EXPECT_EQ(HDF_SUCCESS, render_->GetLatency(render_, &ms));
398 }
399
400 HWTEST_F(AudioUtRenderTest, RenderGetRenderPositionNull001, TestSize.Level1)
401 {
402 uint64_t frames = 0;
403 struct AudioTimeStamp time;
404 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetRenderPosition(nullptr, &frames, &time));
405 }
406
407 HWTEST_F(AudioUtRenderTest, RenderGetRenderPositionNull002, TestSize.Level1)
408 {
409 struct AudioTimeStamp time;
410 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetRenderPosition(render_, nullptr, &time));
411 }
412
413 HWTEST_F(AudioUtRenderTest, RenderGetRenderPositionNull003, TestSize.Level1)
414 {
415 uint64_t frames = 0;
416 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetRenderPosition(render_, &frames, nullptr));
417 }
418
419 HWTEST_F(AudioUtRenderTest, RenderGetRenderPositionIsValid001, TestSize.Level1)
420 {
421 uint64_t frames = 0;
422 struct AudioTimeStamp time;
423 time.tvSec = 0;
424 time.tvNSec = 0;
425 int32_t ret = render_->GetRenderPosition(render_, &frames, &time);
426
427 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
428 }
429
430 HWTEST_F(AudioUtRenderTest, RenderGetRenderPositionIsValid002, TestSize.Level1)
431 {
432 uint64_t frames;
433 struct AudioTimeStamp time;
434 uint32_t frameLen = (uint64_t)GetRenderBufferSize();
435 uint64_t requestBytes = frameLen;
436
437 int32_t ret = render_->Start(render_);
438 EXPECT_EQ(ret, HDF_SUCCESS);
439
440 int8_t *frame = (int8_t *)calloc(1, frameLen);
441 EXPECT_NE(nullptr, frame);
442
443 ret = render_->RenderFrame(render_, frame, frameLen, &requestBytes);
444 EXPECT_EQ(ret, HDF_SUCCESS);
445
446 ret = render_->GetRenderPosition(render_, &frames, &time);
447 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
448
449 render_->Stop(render_);
450 if (frame != nullptr) {
451 free(frame);
452 frame = nullptr;
453 }
454 }
455
456 HWTEST_F(AudioUtRenderTest, RenderSetExtraParamsNull001, TestSize.Level1)
457 {
458 char keyValueList[AUDIO_RENDER_BUF_TEST];
459 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetExtraParams(nullptr, keyValueList));
460 }
461
462 HWTEST_F(AudioUtRenderTest, RenderSetExtraParamsNull002, TestSize.Level1)
463 {
464 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->SetExtraParams(render_, nullptr));
465 }
466
467 HWTEST_F(AudioUtRenderTest, RenderSetExtraParamsIsValid001, TestSize.Level1)
468 {
469 char keyValueList[AUDIO_RENDER_BUF_TEST] =
470 "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000";
471 EXPECT_EQ(HDF_SUCCESS, render_->SetExtraParams(render_, keyValueList));
472 }
473
474 HWTEST_F(AudioUtRenderTest, RenderGetExtraParamsNull001, TestSize.Level1)
475 {
476 char keyValueList[AUDIO_RENDER_BUF_TEST];
477 uint32_t keyValueListLen = 0;
478 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetExtraParams(nullptr, keyValueList, keyValueListLen));
479 }
480
481 HWTEST_F(AudioUtRenderTest, RenderGetExtraParamsNull002, TestSize.Level1)
482 {
483 uint32_t keyValueListLen = 0;
484 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->GetExtraParams(render_, nullptr, keyValueListLen));
485 }
486
487 HWTEST_F(AudioUtRenderTest, RenderGetExtraParamsIsValid001, TestSize.Level1)
488 {
489 char keyValueList[AUDIO_RENDER_BUF_TEST] = {};
490 uint32_t keyValueListLen = BUFFER_LENTH;
491 int32_t ret = render_->GetExtraParams(render_, keyValueList, keyValueListLen);
492 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
493 }
494
495 HWTEST_F(AudioUtRenderTest, RenderTurnStandbyModeNull001, TestSize.Level1)
496 {
497 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->TurnStandbyMode(nullptr));
498 }
499
500 HWTEST_F(AudioUtRenderTest, RenderTurnStandbyModeIsValid001, TestSize.Level1)
501 {
502 int32_t ret = render_->Start(render_);
503 ASSERT_EQ(HDF_SUCCESS, ret);
504
505 ret = render_->TurnStandbyMode(render_);
506 EXPECT_EQ(HDF_SUCCESS, ret);
507
508 ret = render_->Stop(render_);
509 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_SUCCESS);
510 }
511
512 HWTEST_F(AudioUtRenderTest, RenderAudioDevDumpNull001, TestSize.Level1)
513 {
514 int32_t range = 4;
515 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->AudioDevDump(nullptr, range, -1));
516 }
517
518 HWTEST_F(AudioUtRenderTest, RenderAudioDevDumpIsValid001, TestSize.Level1)
519 {
520 int32_t range = 4;
521 char pathBuf[] = "/data/RenderDump.log";
522
523 FILE *file = fopen(pathBuf, "wb+");
524 ASSERT_NE(nullptr, file);
525 int fd = fileno(file);
526 if (fd == -1) {
527 fclose(file);
528 ASSERT_NE(fd, -1);
529 }
530
531 int32_t ret = render_->AudioDevDump(render_, range, fd);
532
533 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
534 fclose(file);
535 }
536
537 HWTEST_F(AudioUtRenderTest, RenderGetGainNull001, TestSize.Level1)
538 {
539 float gain;
540 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetGain(nullptr, &gain));
541 }
542
543 HWTEST_F(AudioUtRenderTest, RenderGetGainIsValid001, TestSize.Level1)
544 {
545 float gain;
546 int32_t ret = render_->GetGain(render_, &gain);
547
548 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
549 }
550
551 HWTEST_F(AudioUtRenderTest, RenderGetGainThresholdNull001, TestSize.Level1)
552 {
553 float min = 0.0;
554 float max = 1.0;
555 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetGainThreshold(nullptr, &min, &max));
556 }
557
558 HWTEST_F(AudioUtRenderTest, RenderGetGainThresholdIsValid001, TestSize.Level1)
559 {
560 float min = 0.0;
561 float max = 1.0;
562 int32_t ret = render_->GetGainThreshold(render_, &min, &max);
563
564 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
565 EXPECT_GE(min, MIN_GAINTHRESHOLD);
566 EXPECT_LE(max, MAX_GAINTHRESHOLD);
567 }
568
569 HWTEST_F(AudioUtRenderTest, RenderGetMuteNull001, TestSize.Level1)
570 {
571 bool isMute = false;
572 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMute(nullptr, &isMute));
573 }
574
575 HWTEST_F(AudioUtRenderTest, RenderGetMuteIsValid001, TestSize.Level1)
576 {
577 bool isMute = false;
578 int32_t ret = render_->GetMute(render_, &isMute);
579
580 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
581 }
582
583 HWTEST_F(AudioUtRenderTest, RenderGetVersionNull001, TestSize.Level1)
584 {
585 uint32_t majorVer;
586 uint32_t minorVer;
587 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetVersion(nullptr, &majorVer, &minorVer));
588 }
589
590 HWTEST_F(AudioUtRenderTest, RenderGetVersionIsValid001, TestSize.Level1)
591 {
592 uint32_t majorVer;
593 uint32_t minorVer;
594 ASSERT_EQ(HDF_SUCCESS, render_->GetVersion(render_, &majorVer, &minorVer));
595 EXPECT_EQ(IAUDIO_MANAGER_MAJOR_VERSION, majorVer);
596 EXPECT_EQ(IAUDIO_MANAGER_MINOR_VERSION, minorVer);
597 }
598
599 HWTEST_F(AudioUtRenderTest, RenderGetVolumeNull001, TestSize.Level1)
600 {
601 float val = 0.0;
602 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetVolume(nullptr, &val));
603 }
604
605 HWTEST_F(AudioUtRenderTest, RenderGetVolumeIsValid001, TestSize.Level1)
606 {
607 float val = 0.0;
608 int32_t ret = render_->GetVolume(render_, &val);
609
610 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
611 }
612
613 HWTEST_F(AudioUtRenderTest, RenderPauseNull001, TestSize.Level1)
614 {
615 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->Pause(nullptr));
616 }
617
618 HWTEST_F(AudioUtRenderTest, RenderResumeNull001, TestSize.Level1)
619 {
620 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->Resume(nullptr));
621 }
622
623 HWTEST_F(AudioUtRenderTest, RenderResumeInvalid001, TestSize.Level1)
624 {
625 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, render_->Resume(render_));
626 }
627
628 HWTEST_F(AudioUtRenderTest, RenderPauseResumeIsValid001, TestSize.Level1)
629 {
630 EXPECT_EQ(HDF_SUCCESS, render_->Start(render_));
631 int32_t ret = render_->Pause(render_);
632
633 if (ret == HDF_SUCCESS) {
634 EXPECT_EQ(HDF_SUCCESS, render_->Resume(render_));
635 } else if (ret == HDF_ERR_NOT_SUPPORT) {
636 ASSERT_TRUE(true);
637 } else {
638 ASSERT_TRUE(false);
639 }
640
641 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
642 }
643
644 HWTEST_F(AudioUtRenderTest, RenderRenderFrameNull001, TestSize.Level1)
645 {
646 uint32_t frameLen = DEFAULT_BUFFER_SIZE;
647 uint64_t requestBytes = frameLen;
648 int8_t *frame = (int8_t *)calloc(1, frameLen);
649 ASSERT_NE(nullptr, frame);
650 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->RenderFrame(nullptr, frame, frameLen, &requestBytes));
651 if (frame != nullptr) {
652 free(frame);
653 frame = nullptr;
654 }
655 }
656
657 HWTEST_F(AudioUtRenderTest, RenderRenderFrameIsValid001, TestSize.Level1)
658 {
659 uint32_t frameLen = (uint64_t)GetRenderBufferSize();
660 uint64_t requestBytes = frameLen;
661 EXPECT_EQ(HDF_SUCCESS, render_->Start(render_));
662
663 int8_t *frame = (int8_t *)calloc(1, frameLen);
664 ASSERT_NE(nullptr, frame);
665 EXPECT_EQ(HDF_SUCCESS, render_->RenderFrame(render_, frame, frameLen, &requestBytes));
666
667 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
668
669 if (frame != nullptr) {
670 free(frame);
671 frame = nullptr;
672 }
673 }
674
675 HWTEST_F(AudioUtRenderTest, RenderSetChannelModeNull001, TestSize.Level1)
676 {
677 AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
678 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetChannelMode(nullptr, mode));
679 }
680
681 HWTEST_F(AudioUtRenderTest, RenderSetChannelModeIsValid001, TestSize.Level1)
682 {
683 AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
684 int32_t ret = render_->SetChannelMode(render_, mode);
685
686 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
687 }
688
689 HWTEST_F(AudioUtRenderTest, RenderSetGainNull001, TestSize.Level1)
690 {
691 float gain = 1.0;
692 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetGain(nullptr, gain));
693 }
694
695 HWTEST_F(AudioUtRenderTest, RenderSetGainIsValid001, TestSize.Level1)
696 {
697 float gain = 1.0;
698 int32_t ret = render_->SetGain(render_, gain);
699
700 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
701 }
702
703 HWTEST_F(AudioUtRenderTest, RenderSetMuteNull001, TestSize.Level1)
704 {
705 bool mute = false;
706 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetMute(nullptr, mute));
707 }
708
709 HWTEST_F(AudioUtRenderTest, RenderSetMuteIsValid001, TestSize.Level1)
710 {
711 bool mute = false;
712 int32_t ret = render_->SetMute(render_, mute);
713
714 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
715 }
716
717 HWTEST_F(AudioUtRenderTest, RenderSetRenderSpeedNull001, TestSize.Level1)
718 {
719 float speed = 2.0;
720 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetRenderSpeed(nullptr, speed));
721 }
722
723 HWTEST_F(AudioUtRenderTest, RenderSetRenderSpeedIsValid001, TestSize.Level1)
724 {
725 float speed = 2.0;
726 EXPECT_NE(HDF_SUCCESS, render_->SetRenderSpeed(render_, speed));
727 }
728
729 HWTEST_F(AudioUtRenderTest, RenderSetVolumeNull001, TestSize.Level1)
730 {
731 float volume = 0.2;
732 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->SetVolume(nullptr, volume));
733 }
734
735 HWTEST_F(AudioUtRenderTest, RenderSetVolumeIsInValid001, TestSize.Level1)
736 {
737 float volume = -1.0;
738 EXPECT_NE(HDF_SUCCESS, render_->SetVolume(render_, volume));
739 }
740
741 HWTEST_F(AudioUtRenderTest, RenderSetVolumeIsInValid002, TestSize.Level1)
742 {
743 float volume = 2.0;
744 EXPECT_NE(HDF_SUCCESS, render_->SetVolume(render_, volume));
745 }
746
747 HWTEST_F(AudioUtRenderTest, RenderSetVolumeIsValid001, TestSize.Level1)
748 {
749 float volume = 0.2;
750 int32_t ret = render_->SetVolume(render_, volume);
751
752 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
753 }
754
755 HWTEST_F(AudioUtRenderTest, RenderGetRenderSpeedIsInValid001, TestSize.Level1)
756 {
757 float speed = 0.0;
758 ASSERT_EQ(HDF_SUCCESS, render_->Start(render_));
759 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetRenderSpeed(nullptr, &speed));
760 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, render_->GetRenderSpeed(render_, nullptr));
761 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
762 }
763
764 HWTEST_F(AudioUtRenderTest, RenderGetRenderSpeedIsValid001, TestSize.Level1)
765 {
766 float speed = 0.0;
767 ASSERT_EQ(HDF_SUCCESS, render_->Start(render_));
768 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, render_->GetRenderSpeed(render_, &speed));
769 EXPECT_EQ(HDF_SUCCESS, render_->Stop(render_));
770 }
771
772 HWTEST_F(AudioUtRenderTest, RenderGetChannelModeIsInValid001, TestSize.Level1)
773 {
774 enum AudioChannelMode channelMode = AUDIO_CHANNEL_NORMAL;
775 int32_t ret = render_->GetChannelMode(nullptr, &channelMode);
776 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, ret);
777
778 ret = render_->GetChannelMode(render_, nullptr);
779 ASSERT_TRUE(ret == HDF_ERR_INVALID_PARAM || ret == HDF_ERR_NOT_SUPPORT);
780 }
781
782 HWTEST_F(AudioUtRenderTest, RenderGetChannelModeIsValid001, TestSize.Level1)
783 {
784 enum AudioChannelMode channelMode = AUDIO_CHANNEL_NORMAL;
785 int32_t ret = render_->GetChannelMode(render_, &channelMode);
786 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT);
787 }
788
789 HWTEST_F(AudioUtRenderTest, RenderRegCallbackIsInValid001, TestSize.Level1)
790 {
791 int8_t cookie = 0;
792 struct IAudioCallback *audioCallback = nullptr;
793 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->RegCallback(nullptr, audioCallback, cookie));
794 EXPECT_EQ(HDF_ERR_INVALID_PARAM, render_->RegCallback(render_, nullptr, cookie));
795 }
796
797 HWTEST_F(AudioUtRenderTest, RenderRegCallbackIsValid001, TestSize.Level1)
798 {
799 int8_t cookie = 0;
800 struct IAudioCallback *audioCallback = nullptr;
801 int32_t ret = render_->RegCallback(render_, audioCallback, cookie);
802 ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM);
803 }
804
805 HWTEST_F(AudioUtRenderTest, RenderDrainBufferIsInValid001, TestSize.Level1)
806 {
807 enum AudioDrainNotifyType type = AUDIO_DRAIN_NORMAL_MODE;
808 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->DrainBuffer(nullptr, &type));
809 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, render_->DrainBuffer(render_, nullptr));
810 }
811
812 HWTEST_F(AudioUtRenderTest, RenderDrainBufferIsValid001, TestSize.Level1)
813 {
814 enum AudioDrainNotifyType type = AUDIO_DRAIN_NORMAL_MODE;
815 EXPECT_EQ(HDF_ERR_NOT_SUPPORT, render_->DrainBuffer(render_, &type));
816 }
817
818 HWTEST_F(AudioUtRenderTest, RenderIsSupportsDrainIsInValid001, TestSize.Level1)
819 {
820 bool support = false;
821 int32_t ret = render_->IsSupportsDrain(nullptr, &support);
822 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, ret);
823 ret = render_->IsSupportsDrain(render_, nullptr);
824 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
825 }
826
827 HWTEST_F(AudioUtRenderTest, RenderIsSupportsDrainIsValid001, TestSize.Level1)
828 {
829 bool support = false;
830 int32_t ret = render_->IsSupportsDrain(render_, &support);
831 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_SUCCESS);
832 }
833
834 HWTEST_F(AudioUtRenderTest, RenderAddAudioEffectIsInValid001, TestSize.Level1)
835 {
836 uint64_t effectId = 0;
837 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->AddAudioEffect(nullptr, effectId));
838 }
839
840 HWTEST_F(AudioUtRenderTest, RenderRemoveAudioEffectIsInValid001, TestSize.Level1)
841 {
842 uint64_t effectId = 0;
843 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->RemoveAudioEffect(nullptr, effectId));
844 }
845
846 HWTEST_F(AudioUtRenderTest, RenderGetFrameBufferSizeIsInValid001, TestSize.Level1)
847 {
848 uint64_t bufferSize = BUFFER_LENTH;
849 int32_t ret = render_->GetFrameBufferSize(nullptr, &bufferSize);
850 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, ret);
851
852 ret = render_->GetFrameBufferSize(render_, nullptr);
853 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
854 }
855
856 HWTEST_F(AudioUtRenderTest, RenderGetFrameBufferSizeIsValid001, TestSize.Level1)
857 {
858 uint64_t bufferSize = BUFFER_LENTH;
859 int32_t ret = render_->GetFrameBufferSize(render_, &bufferSize);
860 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
861 }
862
863 HWTEST_F(AudioUtRenderTest, RenderIsSupportsPauseAndResumeIsInValid001, TestSize.Level1)
864 {
865 bool supportPause = false;
866 bool supportResume = false;
867 int32_t ret = render_->IsSupportsPauseAndResume(nullptr, &supportPause, &supportResume);
868 EXPECT_EQ(HDF_ERR_INVALID_OBJECT, ret);
869
870 ret = render_->IsSupportsPauseAndResume(render_, nullptr, &supportResume);
871 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
872
873 ret = render_->IsSupportsPauseAndResume(render_, &supportPause, nullptr);
874 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
875 }
876
877 HWTEST_F(AudioUtRenderTest, RenderIsSupportsPauseAndResumeIsValid001, TestSize.Level1)
878 {
879 bool supportPause = false;
880 bool supportResume = false;
881 int32_t ret = render_->IsSupportsPauseAndResume(render_, &supportPause, &supportResume);
882 ASSERT_TRUE(ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM);
883 }
884
885 } // end of namespace
886