• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 #include "audio_common_test.h"
19 
20 using namespace std;
21 using namespace comfun;
22 using namespace testing::ext;
23 namespace {
24 class AudioRenderTest : public testing::Test {
25 public:
26     struct AudioManager *managerFuncs = nullptr;
27     struct AudioAdapterDescriptor *descs = nullptr;
28     struct AudioAdapterDescriptor *desc = nullptr;
29     struct AudioAdapter *adapter = nullptr;
30     struct AudioDeviceDescriptor devDesc = {};
31     struct AudioSampleAttributes attrs = {};
32     struct AudioRender *render = nullptr;
33 
34     virtual void SetUp();
35     virtual void TearDown();
36 };
37 
SetUp()38 void AudioRenderTest::SetUp()
39 {
40     managerFuncs = GetAudioManagerFuncs();
41     ASSERT_NE(managerFuncs, nullptr);
42     int32_t size = 0;
43     ASSERT_EQ(HDF_SUCCESS,  managerFuncs->GetAllAdapters(managerFuncs, &descs, &size));
44 
45     desc = &descs[0];
46     ASSERT_EQ(HDF_SUCCESS, managerFuncs->LoadAdapter(managerFuncs, desc, &adapter));
47     ASSERT_EQ(HDF_SUCCESS, InitDevDesc(devDesc));
48     ASSERT_EQ(HDF_SUCCESS, InitAttrs(attrs));
49     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioAdapterCreateRender(adapter, &devDesc, &attrs, &render));
50 }
51 
TearDown()52 void AudioRenderTest::TearDown()
53 {
54     ASSERT_EQ(HDF_SUCCESS, AudioAdapterDestroyRender(adapter, render));
55     managerFuncs->UnloadAdapter(managerFuncs, adapter);
56     adapter = nullptr;
57 }
58 
59 HWTEST_F(AudioRenderTest, PcmBytesToFramesWhenFrameRenderModeIsNull, TestSize.Level1)
60 {
61     const struct AudioFrameRenderMode *frameRenderMode = nullptr;
62     uint64_t bytes = FRAME_DATA;
63     uint32_t frameCount = 0;
64     EXPECT_EQ(HDF_FAILURE, PcmBytesToFrames(frameRenderMode, bytes, &frameCount));
65 }
66 
67 HWTEST_F(AudioRenderTest, PcmBytesToFramesWhenFrameCountIsNull, TestSize.Level1)
68 {
69     const struct AudioFrameRenderMode *frameRenderMode = new struct AudioFrameRenderMode;
70     uint64_t bytes = FRAME_DATA;
71     uint32_t *frameCount = nullptr;
72     EXPECT_EQ(HDF_FAILURE, PcmBytesToFrames(frameRenderMode, bytes, frameCount));
73     delete(frameRenderMode);
74     frameRenderMode = nullptr;
75 }
76 
77 HWTEST_F(AudioRenderTest, PcmBytesToFramesWhenParamIsNotSupport, TestSize.Level1)
78 {
79     struct AudioFrameRenderMode *frameRenderMode = new struct AudioFrameRenderMode;
80     frameRenderMode->attrs.format = AUDIO_FORMAT_AAC_MAIN;
81     uint64_t bytes = FRAME_DATA;
82     uint32_t frameCount = 0;
83     EXPECT_EQ(HDF_ERR_NOT_SUPPORT,
84         PcmBytesToFrames((const struct AudioFrameRenderMode *)frameRenderMode, bytes, &frameCount));
85     delete(frameRenderMode);
86     frameRenderMode = nullptr;
87 }
88 
89 HWTEST_F(AudioRenderTest, PcmBytesToFramesWhenChannelCountIsZero, TestSize.Level1)
90 {
91     struct AudioFrameRenderMode *frameRenderMode = new struct AudioFrameRenderMode;
92     frameRenderMode->attrs.format = AUDIO_FORMAT_PCM_8_BIT;
93     frameRenderMode->attrs.channelCount = 0;
94     uint64_t bytes = FRAME_DATA;
95     uint32_t frameCount = 0;
96     EXPECT_EQ(HDF_FAILURE, PcmBytesToFrames((const struct AudioFrameRenderMode *)frameRenderMode, bytes, &frameCount));
97     delete(frameRenderMode);
98     frameRenderMode = nullptr;
99 }
100 
101 HWTEST_F(AudioRenderTest, PcmBytesToFramesWhenParamIsValid, TestSize.Level1)
102 {
103     struct AudioFrameRenderMode *frameRenderMode = new struct AudioFrameRenderMode;
104     frameRenderMode->attrs.format = AUDIO_FORMAT_PCM_8_BIT;
105     frameRenderMode->attrs.channelCount = 1;
106     uint64_t bytes = FRAME_DATA;
107     uint32_t frameCount = 0;
108     EXPECT_EQ(HDF_SUCCESS, PcmBytesToFrames((const struct AudioFrameRenderMode *)frameRenderMode, bytes, &frameCount));
109     delete(frameRenderMode);
110     frameRenderMode = nullptr;
111 }
112 
113 HWTEST_F(AudioRenderTest, AudioRenderStartWhenHandleIsNull, TestSize.Level1)
114 {
115     AudioHwRender *hwRender = nullptr;
116     AudioHandle handle = (AudioHandle)hwRender;
117     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderStart(handle));
118 }
119 
120 HWTEST_F(AudioRenderTest, AudioRenderStartWhenBufferIsNotNull, TestSize.Level1)
121 {
122     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
123     AudioHandle handle = (AudioHandle)hwRender;
124     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
125     EXPECT_EQ(AUDIO_HAL_ERR_AO_BUSY, AudioRenderStart(handle));
126     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStop(handle));
127 }
128 
129 HWTEST_F(AudioRenderTest, AudioRenderStartWhenDevDataHandleIsNull, TestSize.Level1)
130 {
131     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
132     struct DevHandle *devDataHandle = hwRender->devDataHandle;
133     hwRender->devDataHandle = nullptr;
134     AudioHandle handle = (AudioHandle)hwRender;
135     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderStart(handle));
136     hwRender->devDataHandle = devDataHandle;
137 }
138 
139 HWTEST_F(AudioRenderTest, AudioRenderStartWhenDevDataHandleIsError, TestSize.Level1)
140 {
141     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
142     struct DevHandle *devDataHandle = hwRender->devDataHandle;
143     struct HdfIoService *service = new HdfIoService;
144     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
145     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
146     AudioHandle handle = (AudioHandle)hwRender;
147     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderStart(handle));
148     hwRender->devDataHandle = devDataHandle;
149     delete(service);
150     service = nullptr;
151 }
152 
153 HWTEST_F(AudioRenderTest, AudioRenderStartWhenParamIsValid, TestSize.Level1)
154 {
155     AudioHandle handle = (AudioHandle)render;
156     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
157     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStop(handle));
158 }
159 
160 HWTEST_F(AudioRenderTest, AudioRenderStopWhenHandleIsNull, TestSize.Level1)
161 {
162     AudioHwRender *hwRender = nullptr;
163     AudioHandle handle = (AudioHandle)hwRender;
164     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderStop(handle));
165 }
166 
167 HWTEST_F(AudioRenderTest, AudioRenderStopWhenBufferIsNull, TestSize.Level1)
168 {
169     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
170     hwRender->renderParam.frameRenderMode.buffer = nullptr;
171     AudioHandle handle = (AudioHandle)hwRender;
172     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, AudioRenderStop(handle));
173 }
174 
175 HWTEST_F(AudioRenderTest, AudioRenderStopWhenDevDataHandleIsNull, TestSize.Level1)
176 {
177     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
178     AudioHandle handle = (AudioHandle)hwRender;
179     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
180     struct DevHandle *devDataHandle = hwRender->devDataHandle;
181     hwRender->devDataHandle = nullptr;
182     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderStop(handle));
183     hwRender->devDataHandle = devDataHandle;
184 }
185 
186 HWTEST_F(AudioRenderTest, AudioRenderStopWhenDevDataHandleIsError, TestSize.Level1)
187 {
188     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
189     AudioHandle handle = (AudioHandle)hwRender;
190     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
191     struct DevHandle *devDataHandle = hwRender->devDataHandle;
192     struct HdfIoService *service = new HdfIoService;
193     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
194     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
195     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderStop(handle));
196     hwRender->devDataHandle = devDataHandle;
197     delete(service);
198     service = nullptr;
199 }
200 
201 HWTEST_F(AudioRenderTest, AudioRenderStopWhenParamIsValid, TestSize.Level1)
202 {
203     AudioHandle handle = (AudioHandle)render;
204     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
205     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStop(handle));
206 }
207 
208 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenHandleIsNull, TestSize.Level1)
209 {
210     AudioHwRender *hwRender = nullptr;
211     AudioHandle handle = (AudioHandle)hwRender;
212     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderPause(handle));
213 }
214 
215 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenBufferIsNull, TestSize.Level1)
216 {
217     AudioHwRender *hwRender = (AudioHwRender *)render;
218     hwRender->renderParam.frameRenderMode.buffer = nullptr;
219     AudioHandle handle = (AudioHandle)hwRender;
220     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderPause(handle));
221 }
222 
223 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenPauseIsTrue, TestSize.Level1)
224 {
225     AudioHwRender *hwRender = (AudioHwRender *)render;
226     hwRender->renderParam.renderMode.ctlParam.pause = true;
227     AudioHandle handle = (AudioHandle)hwRender;
228     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
229     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, AudioRenderPause(handle));
230 }
231 
232 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenDevDataHandleIsNull, TestSize.Level1)
233 {
234     AudioHwRender *hwRender = (AudioHwRender *)render;
235     AudioHandle handle = (AudioHandle)hwRender;
236     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
237     struct DevHandle *devDataHandle = hwRender->devDataHandle;
238     hwRender->devDataHandle = nullptr;
239     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderPause(handle));
240     hwRender->devDataHandle = devDataHandle;
241 }
242 
243 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenDevDataHandleIsError, TestSize.Level1)
244 {
245     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
246     AudioHandle handle = (AudioHandle)hwRender;
247     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
248     struct DevHandle *devDataHandle = hwRender->devDataHandle;
249     struct HdfIoService *service = new HdfIoService;
250     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
251     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
252     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderPause(handle));
253     hwRender->devDataHandle = devDataHandle;
254     delete(service);
255     service = nullptr;
256 }
257 
258 HWTEST_F(AudioRenderTest, AudioRenderPauseWhenParamValid, TestSize.Level1)
259 {
260     AudioHandle handle = (AudioHandle)render;
261     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
262     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderPause(handle));
263 }
264 
265 HWTEST_F(AudioRenderTest, AudioRenderResumeWhenHandleIsNull, TestSize.Level1)
266 {
267     AudioHwRender *hwRender = nullptr;
268     AudioHandle handle = (AudioHandle)hwRender;
269     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderResume(handle));
270 }
271 
272 HWTEST_F(AudioRenderTest, AudioRenderResumeWhenPauseIsFalse, TestSize.Level1)
273 {
274     AudioHandle handle = (AudioHandle)render;
275     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
276     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
277     hwRender->renderParam.renderMode.ctlParam.pause = false;
278     handle = (AudioHandle)hwRender;
279     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderResume(handle));
280 }
281 
282 HWTEST_F(AudioRenderTest, AudioRenderResumeWhenDevDataHandleIsNull, TestSize.Level1)
283 {
284     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
285     AudioHandle handle = (AudioHandle)hwRender;
286     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
287     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderPause(handle));
288     struct DevHandle *devDataHandle = hwRender->devDataHandle;
289     hwRender->devDataHandle = nullptr;
290     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderResume(handle));
291     hwRender->devDataHandle = devDataHandle;
292 }
293 
294 HWTEST_F(AudioRenderTest, AudioRenderResumeWhenDevDataHandleIsError, TestSize.Level1)
295 {
296     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
297     AudioHandle handle = (AudioHandle)hwRender;
298     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
299     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderPause(handle));
300     struct DevHandle *devDataHandle = hwRender->devDataHandle;
301     struct HdfIoService *service = new HdfIoService;
302     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
303     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
304     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderResume(handle));
305     hwRender->devDataHandle = devDataHandle;
306     delete(service);
307     service = nullptr;
308 }
309 
310 HWTEST_F(AudioRenderTest, AudioRenderResumeWhenParamValid, TestSize.Level1)
311 {
312     AudioHandle handle = (AudioHandle)render;
313     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
314     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderPause(handle));
315     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderResume(handle));
316 }
317 
318 HWTEST_F(AudioRenderTest, AudioRenderFlushWhenHandleIsNull, TestSize.Level1)
319 {
320     AudioHwRender *hwRender = nullptr;
321     AudioHandle handle = (AudioHandle)hwRender;
322     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderFlush(handle));
323 }
324 
325 HWTEST_F(AudioRenderTest, AudioRenderFlushWhenParamIsValid, TestSize.Level1)
326 {
327     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, AudioRenderFlush(render));
328 }
329 
330 HWTEST_F(AudioRenderTest, AudioRenderGetFrameSizeWhenHandleIsNull, TestSize.Level1)
331 {
332     AudioHwRender *hwRender = nullptr;
333     AudioHandle handle = (AudioHandle)hwRender;
334     uint64_t size = FRAME_DATA;
335     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetFrameSize(handle, &size));
336 }
337 
338 HWTEST_F(AudioRenderTest, AudioRenderGetFrameSizeWhenSizeIsNull, TestSize.Level1)
339 {
340     AudioHandle handle = (AudioHandle)render;
341     uint64_t *frameSize = nullptr;
342     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetFrameSize(handle, frameSize));
343 }
344 
345 HWTEST_F(AudioRenderTest, AudioRenderGetFrameSizeWhenParamIsNotSupport, TestSize.Level1)
346 {
347     AudioHwRender *hwRender = (AudioHwRender *)render;
348     hwRender->renderParam.frameRenderMode.attrs.format = AUDIO_FORMAT_AAC_MAIN;
349     AudioHandle handle = (AudioHandle)hwRender;
350     uint64_t frameSize = FRAME_DATA;
351     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderGetFrameSize(handle, &frameSize));
352 }
353 
354 HWTEST_F(AudioRenderTest, AudioRenderGetFrameSizeWhenParamValid, TestSize.Level1)
355 {
356     AudioHandle handle = (AudioHandle)render;
357     uint64_t frameSize = FRAME_DATA;
358     EXPECT_EQ(HDF_SUCCESS, AudioRenderGetFrameSize(handle, &frameSize));
359 }
360 
361 HWTEST_F(AudioRenderTest, AudioRenderGetFrameCountWhenHandleIsNull, TestSize.Level1)
362 {
363     AudioHwRender *hwRender = nullptr;
364     AudioHandle handle = (AudioHandle)hwRender;
365     uint64_t count = FRAME_DATA;
366     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetFrameCount(handle, &count));
367 }
368 
369 HWTEST_F(AudioRenderTest, AudioRenderGetFrameCountWhenCountIsNull, TestSize.Level1)
370 {
371     AudioHandle handle = (AudioHandle)render;
372     uint64_t *count = nullptr;
373     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetFrameCount(handle, count));
374 }
375 
376 HWTEST_F(AudioRenderTest, AudioRenderGetFrameCountWhenParamIsValid, TestSize.Level1)
377 {
378     AudioHandle handle = (AudioHandle)render;
379     uint64_t count = FRAME_DATA;
380     EXPECT_EQ(HDF_SUCCESS, AudioRenderGetFrameCount(handle, &count));
381 }
382 
383 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenHandleIsNull, TestSize.Level1)
384 {
385     AudioHwRender *hwRender = nullptr;
386     AudioHandle handle = (AudioHandle)hwRender;
387     AudioSampleAttributes *attrs = new AudioSampleAttributes;
388     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetSampleAttributes(handle, attrs));
389     delete(attrs);
390     attrs = nullptr;
391 }
392 
393 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenAttrsIsNull, TestSize.Level1)
394 {
395     AudioHandle handle = (AudioHandle)render;
396     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetSampleAttributes(handle, nullptr));
397 }
398 
399 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenDevDataHandleIsNull, TestSize.Level1)
400 {
401     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
402     struct DevHandle *devDataHandle = hwRender->devDataHandle;
403     hwRender->devDataHandle = nullptr;
404     AudioHandle handle = (AudioHandle)hwRender;
405     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetSampleAttributes(handle, &attrs));
406     hwRender->devDataHandle = devDataHandle;
407 }
408 
409 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenFormatIsError, TestSize.Level1)
410 {
411     AudioHandle handle = (AudioHandle)render;
412     attrs.format = AUDIO_FORMAT_G711A;
413     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderSetSampleAttributes(handle, &attrs));
414 }
415 
416 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenDevDataHandleIsError, TestSize.Level1)
417 {
418     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
419     struct DevHandle *devDataHandle = hwRender->devDataHandle;
420     struct HdfIoService *service = new HdfIoService;
421     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
422     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
423     AudioHandle handle = (AudioHandle)hwRender;
424     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetSampleAttributes(handle, &attrs));
425     hwRender->devDataHandle = devDataHandle;
426     delete(service);
427     service = nullptr;
428 }
429 
430 HWTEST_F(AudioRenderTest, AudioRenderSetSampleAttributesWhenParamIsValid, TestSize.Level1)
431 {
432     AudioHandle handle = (AudioHandle)render;
433     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetSampleAttributes(handle, &attrs));
434 }
435 
436 HWTEST_F(AudioRenderTest, AudioRenderGetSampleAttributesWhenHandleIsNull, TestSize.Level1)
437 {
438     AudioSampleAttributes *attrs = new AudioSampleAttributes;
439     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetSampleAttributes(nullptr, attrs));
440     delete(attrs);
441     attrs = nullptr;
442 }
443 
444 HWTEST_F(AudioRenderTest, AudioRenderGetSampleAttributesWhenAttrsIsNull, TestSize.Level1)
445 {
446     AudioHandle handle = (AudioHandle)render;
447     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetSampleAttributes(handle, nullptr));
448 }
449 
450 HWTEST_F(AudioRenderTest, AudioRenderGetSampleAttributesWhenParamIsValid, TestSize.Level1)
451 {
452     AudioHandle handle = (AudioHandle)render;
453     EXPECT_EQ(HDF_SUCCESS, AudioRenderGetSampleAttributes(handle, &attrs));
454 }
455 
456 HWTEST_F(AudioRenderTest, AudioRenderGetCurrentChannelIdWhenHandleIsNull, TestSize.Level1)
457 {
458     AudioHwRender *hwRender = nullptr;
459     AudioHandle handle = (AudioHandle)hwRender;
460     uint32_t channelIdOne = 1;
461     uint32_t *channelId = &channelIdOne;
462     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetCurrentChannelId(handle, channelId));
463 }
464 
465 HWTEST_F(AudioRenderTest, AudioRenderGetCurrentChannelIdWhenChannelIdIsNull, TestSize.Level1)
466 {
467     AudioHandle handle = (AudioHandle)render;
468     uint32_t *channelId = nullptr;
469     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetCurrentChannelId(handle, channelId));
470 }
471 
472 HWTEST_F(AudioRenderTest, AudioRenderGetCurrentChannelIdWhenParamIsValid, TestSize.Level1)
473 {
474     AudioHandle handle = (AudioHandle)render;
475     uint32_t channelId = 1;
476     EXPECT_EQ(HDF_SUCCESS, AudioRenderGetCurrentChannelId(handle, &channelId));
477 }
478 
479 HWTEST_F(AudioRenderTest, AudioRenderCheckSceneCapabilityWhenHandleIsNull, TestSize.Level1)
480 {
481     AudioHwRender *hwRender = nullptr;
482     AudioHandle handle = (AudioHandle)hwRender;
483     const struct AudioSceneDescriptor *scene = new struct AudioSceneDescriptor;
484     bool supported = false;
485     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderCheckSceneCapability(handle, scene, &supported));
486     delete(scene);
487     scene = nullptr;
488 }
489 
490 HWTEST_F(AudioRenderTest, AudioRenderCheckSceneCapabilityWhenSceneIsNull, TestSize.Level1)
491 {
492     AudioHandle handle = (AudioHandle)render;
493     const struct AudioSceneDescriptor *scene = nullptr;
494     bool supported = false;
495     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderCheckSceneCapability(handle, scene, &supported));
496 }
497 
498 HWTEST_F(AudioRenderTest, AudioRenderCheckSceneCapabilityWhenSupportedIsNull, TestSize.Level1)
499 {
500     AudioHandle handle = (AudioHandle)render;
501     const struct AudioSceneDescriptor *scene = new struct AudioSceneDescriptor;
502     bool *supported = nullptr;
503     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderCheckSceneCapability(handle, scene, supported));
504     delete(scene);
505     scene = nullptr;
506 }
507 
508 HWTEST_F(AudioRenderTest, AudioRenderCheckSceneCapabilityWhenPinsIsError, TestSize.Level1)
509 {
510     AudioHandle handle = (AudioHandle)render;
511     struct AudioSceneDescriptor scene;
512     scene.scene.id = AUDIO_IN_MEDIA;
513     scene.desc.pins = PIN_NONE;
514     bool supported = false;
515     /* to support different products */
516     int32_t ret = AudioRenderCheckSceneCapability(handle, &scene, &supported);
517     if ((ret == AUDIO_HAL_ERR_INTERNAL) || (ret == AUDIO_HAL_ERR_NOT_SUPPORT)) {
518         EXPECT_TRUE(true);
519     }
520 }
521 
522 HWTEST_F(AudioRenderTest, AudioRenderCheckSceneCapabilityWhenParamValid, TestSize.Level1)
523 {
524     AudioHandle handle = (AudioHandle)render;
525     struct AudioSceneDescriptor scene;
526     scene.scene.id = AUDIO_IN_MEDIA;
527     scene.desc.pins = PIN_OUT_SPEAKER;
528     bool supported = false;
529     /* to support different products */
530     int32_t ret = AudioRenderCheckSceneCapability(handle, &scene, &supported);
531     if ((ret == AUDIO_HAL_SUCCESS) || (ret == AUDIO_HAL_ERR_NOT_SUPPORT)) {
532         EXPECT_TRUE(true);
533     }
534 }
535 
536 HWTEST_F(AudioRenderTest, AudioRenderSelectSceneWhenHandleIsNull, TestSize.Level1)
537 {
538     AudioHwRender *hwRender = nullptr;
539     AudioHandle handle = (AudioHandle)hwRender;
540     const struct AudioSceneDescriptor *scene = new struct AudioSceneDescriptor;
541     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSelectScene(handle, scene));
542     delete(scene);
543     scene = nullptr;
544 }
545 
546 HWTEST_F(AudioRenderTest, AudioRenderSelectSceneWhenSceneIsNull, TestSize.Level1)
547 {
548     AudioHandle handle = (AudioHandle)render;
549     const struct AudioSceneDescriptor *scene = nullptr;
550     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSelectScene(handle, scene));
551 }
552 
553 HWTEST_F(AudioRenderTest, AudioRenderSelectSceneWhenDevCtlHandleIsNull, TestSize.Level1)
554 {
555     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
556     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
557     hwRender->devCtlHandle = nullptr;
558     AudioHandle handle = (AudioHandle)hwRender;
559     struct AudioSceneDescriptor *scene = new AudioSceneDescriptor;
560     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSelectScene(handle, scene));
561     hwRender->devCtlHandle = devCtlHandle;
562     delete(scene);
563     scene = nullptr;
564 }
565 
566 HWTEST_F(AudioRenderTest, AudioRenderSelectSceneWhenDevCtlHandleIsError, TestSize.Level1)
567 {
568     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
569     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
570     struct HdfIoService *service = new HdfIoService;
571     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
572     hwRender->devCtlHandle = reinterpret_cast<struct DevHandle *>(service);
573     AudioHandle handle = (AudioHandle)hwRender;
574     struct AudioSceneDescriptor scene;
575     scene.scene.id = AUDIO_IN_MEDIA;
576     scene.desc.pins = PIN_OUT_SPEAKER;
577     /* to support different products */
578     int32_t ret = AudioRenderSelectScene(handle, &scene);
579     if ((ret == AUDIO_HAL_ERR_INTERNAL) || (ret == AUDIO_HAL_ERR_NOT_SUPPORT)) {
580         EXPECT_TRUE(true);
581     }
582     hwRender->devCtlHandle = devCtlHandle;
583     delete(service);
584     service = nullptr;
585 }
586 
587 HWTEST_F(AudioRenderTest, AudioRenderSelectSceneWhenParamValid, TestSize.Level1)
588 {
589     AudioHandle handle = (AudioHandle)render;
590     struct AudioSceneDescriptor scene;
591     scene.scene.id = AUDIO_IN_MEDIA;
592     scene.desc.pins = PIN_OUT_SPEAKER;
593     /* to support different products */
594     int32_t ret = AudioRenderSelectScene(handle, &scene);
595     if ((ret == AUDIO_HAL_SUCCESS) || (ret == AUDIO_HAL_ERR_NOT_SUPPORT)) {
596         EXPECT_TRUE(true);
597     }
598 }
599 
600 HWTEST_F(AudioRenderTest, AudioRenderSetMuteWhenHandleIsNull, TestSize.Level1)
601 {
602     AudioHwRender *hwRender = nullptr;
603     AudioHandle handle = (AudioHandle)hwRender;
604     bool mute = true;
605     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetMute(handle, mute));
606 }
607 
608 HWTEST_F(AudioRenderTest, AudioRenderSetMuteWhenDevCtlHandleIsNull, TestSize.Level1)
609 {
610     AudioHwRender *hwRender = (AudioHwRender *)render;
611     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
612     hwRender->devCtlHandle = nullptr;
613     AudioHandle handle = (AudioHandle)hwRender;
614     bool mute = true;
615     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetMute(handle, mute));
616     hwRender->devCtlHandle = devCtlHandle;
617 }
618 
619 HWTEST_F(AudioRenderTest, AudioRenderSetMuteWhenDevCtlHandleIsError, TestSize.Level1)
620 {
621     AudioHwRender *hwRender = (AudioHwRender *)render;
622     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
623     struct HdfIoService *service = new HdfIoService;
624     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
625     hwRender->devCtlHandle = (struct DevHandle *)service;
626     AudioHandle handle = (AudioHandle)hwRender;
627     bool mute = true;
628 #ifdef ALSA_LIB_MODE
629     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetMute(handle, mute));
630 #else
631     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetMute(handle, mute));
632 #endif
633     hwRender->devCtlHandle = devCtlHandle;
634     delete(service);
635     service = nullptr;
636 }
637 
638 HWTEST_F(AudioRenderTest, AudioRenderSetMuteWhenParamValid, TestSize.Level1)
639 {
640     AudioHandle handle = (AudioHandle)render;
641     bool mute = true;
642     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetMute(handle, mute));
643     mute = false;
644     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetMute(handle, mute));
645 }
646 
647 HWTEST_F(AudioRenderTest, AudioRenderGetMuteWhenHandleIsNull, TestSize.Level1)
648 {
649     AudioHwRender *hwRender = nullptr;
650     AudioHandle handle = (AudioHandle)hwRender;
651     bool mute = false;
652     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetMute(handle, &mute));
653 }
654 
655 HWTEST_F(AudioRenderTest, AudioRenderGetMuteWhenMuteIsNull, TestSize.Level1)
656 {
657     AudioHandle handle = (AudioHandle)render;
658     bool *mute = nullptr;
659     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetMute(handle, mute));
660 }
661 
662 HWTEST_F(AudioRenderTest, AudioRenderGetMuteWhenDevCtlHandleIsNull, TestSize.Level1)
663 {
664     AudioHwRender *hwRender = (AudioHwRender *)render;
665     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
666     hwRender->devCtlHandle = nullptr;
667     AudioHandle handle = (AudioHandle)hwRender;
668     bool mute = false;
669     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetMute(handle, &mute));
670     hwRender->devCtlHandle = devCtlHandle;
671 }
672 
673 HWTEST_F(AudioRenderTest, AudioRenderGetMuteWhenDevCtlHandleIsError, TestSize.Level1)
674 {
675     AudioHwRender *hwRender = (AudioHwRender *)render;
676     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
677     struct HdfIoService *service = new HdfIoService;
678     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
679     hwRender->devCtlHandle = (struct DevHandle *)service;
680     AudioHandle handle = (AudioHandle)hwRender;
681     bool mute = true;
682 #ifdef ALSA_LIB_MODE
683     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetMute(handle, &mute));
684 #else
685     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetMute(handle, &mute));
686 #endif
687     hwRender->devCtlHandle = devCtlHandle;
688     delete(service);
689     service = nullptr;
690 }
691 
692 HWTEST_F(AudioRenderTest, AudioRenderGetMuteWhenParamValid, TestSize.Level1)
693 {
694     AudioHandle handle = (AudioHandle)render;
695     bool mute = false;
696     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetMute(handle, &mute));
697 }
698 
699 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenHandleIsNull, TestSize.Level1)
700 {
701     AudioHwRender *hwRender = nullptr;
702     AudioHandle handle = (AudioHandle)hwRender;
703     float volume = 0;
704     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetVolume(handle, volume));
705 }
706 
707 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenVolumeLessThanZero, TestSize.Level1)
708 {
709     AudioHandle handle = (AudioHandle)render;
710     float volume = -1;
711     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetVolume(handle, volume));
712 }
713 
714 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenDevCtlHandleIsNull, TestSize.Level1)
715 {
716     AudioHwRender *hwRender = (AudioHwRender *)render;
717     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
718     hwRender->devCtlHandle = nullptr;
719     AudioHandle handle = (AudioHandle)hwRender;
720     float volume = 0;
721     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetVolume(handle, volume));
722     hwRender->devCtlHandle = devCtlHandle;
723 }
724 
725 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenHandleIsError, TestSize.Level1)
726 {
727     AudioHwRender *hwRender = (AudioHwRender *)render;
728     hwRender->renderParam.renderMode.ctlParam.volThreshold.volMax = 0;
729     hwRender->renderParam.renderMode.ctlParam.volThreshold.volMin = 1;
730     AudioHandle handle = (AudioHandle)render;
731     float volume = 0;
732     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetVolume(handle, volume));
733 }
734 
735 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenDevCtlHandleIsError, TestSize.Level1)
736 {
737     AudioHwRender *hwRender = (AudioHwRender *)render;
738     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
739     struct HdfIoService *service = new HdfIoService;
740     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
741     hwRender->devCtlHandle = (struct DevHandle *)service;
742     AudioHandle handle = (AudioHandle)hwRender;
743     float volume = 1.0;
744 #ifdef ALSA_LIB_MODE
745     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetVolume(handle, volume));
746 #else
747     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetVolume(handle, volume));
748 #endif
749     hwRender->devCtlHandle = devCtlHandle;
750     delete(service);
751     service = nullptr;
752 }
753 
754 HWTEST_F(AudioRenderTest, AudioRenderSetVolumeWhenParamValid, TestSize.Level1)
755 {
756     AudioHandle handle = (AudioHandle)render;
757     float volume = 0.8;
758     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetVolume(handle, volume));
759 }
760 
761 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenHandleIsNull, TestSize.Level1)
762 {
763     AudioHwRender *hwRender = nullptr;
764     AudioHandle handle = (AudioHandle)hwRender;
765     float volume = 0;
766     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetVolume(handle, &volume));
767 }
768 
769 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenVolumeIsNull, TestSize.Level1)
770 {
771     AudioHandle handle = (AudioHandle)render;
772     float *volume = nullptr;
773     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetVolume(handle, volume));
774 }
775 
776 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenDevCtlHandleIsNull, TestSize.Level1)
777 {
778     AudioHwRender *hwRender = (AudioHwRender *)render;
779     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
780     hwRender->devCtlHandle = nullptr;
781     AudioHandle handle = (AudioHandle)hwRender;
782     float volume = 0;
783     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetVolume(handle, &volume));
784     hwRender->devCtlHandle = devCtlHandle;
785 }
786 
787 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenDevCtlHandleIsError, TestSize.Level1)
788 {
789     AudioHwRender *hwRender = (AudioHwRender *)render;
790     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
791     struct HdfIoService *service = new HdfIoService;
792     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
793     hwRender->devCtlHandle = (struct DevHandle *)service;
794     AudioHandle handle = (AudioHandle)hwRender;
795     float volume = 1.0;
796 #ifdef ALSA_LIB_MODE
797     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetVolume(handle, &volume));
798 #else
799     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetVolume(handle, &volume));
800 #endif
801     hwRender->devCtlHandle = devCtlHandle;
802     delete(service);
803     service = nullptr;
804 }
805 
806 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenVolumeIsError, TestSize.Level1)
807 {
808     AudioHwRender *hwRender = (AudioHwRender *)render;
809     hwRender->renderParam.renderMode.ctlParam.volThreshold.volMax = 1;
810     hwRender->renderParam.renderMode.ctlParam.volThreshold.volMin = 1;
811     AudioHandle handle = (AudioHandle)render;
812     float volume = 0;
813     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetVolume(handle, &volume));
814 }
815 
816 HWTEST_F(AudioRenderTest, AudioRenderGetVolumeWhenParamValid, TestSize.Level1)
817 {
818     AudioHandle handle = (AudioHandle)render;
819     float volume = 0;
820     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetVolume(handle, &volume));
821 }
822 
823 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenRenderIsNull, TestSize.Level1)
824 {
825     AudioHwRender *hwRender = nullptr;
826     AudioHandle handle = (AudioHandle)hwRender;
827     float min = GAIN_MIN;
828     float max = GAIN_MAX;
829     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetGainThreshold(handle, &min, &max));
830 }
831 
832 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenMinIsNull, TestSize.Level1)
833 {
834     AudioHandle handle = (AudioHandle)render;
835     float *min = nullptr;
836     float max = GAIN_MAX;
837     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetGainThreshold(handle, min, &max));
838 }
839 
840 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenMaxIsNull, TestSize.Level1)
841 {
842     AudioHandle handle = (AudioHandle)render;
843     float min = GAIN_MIN;
844     float *max = nullptr;
845     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetGainThreshold(handle, &min, max));
846 }
847 
848 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenDevCtlHandleIsNull, TestSize.Level1)
849 {
850     AudioHwRender *hwRender = (AudioHwRender *)render;
851     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
852     hwRender->devCtlHandle = nullptr;
853     AudioHandle handle = (AudioHandle)hwRender;
854     float min = GAIN_MIN;
855     float max = GAIN_MAX;
856     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetGainThreshold(handle, &min, &max));
857     hwRender->devCtlHandle = devCtlHandle;
858 }
859 
860 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenDevCtlHandleIsError, TestSize.Level1)
861 {
862     AudioHwRender *hwRender = (AudioHwRender *)render;
863     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
864     struct HdfIoService *service = new HdfIoService;
865     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
866     hwRender->devCtlHandle = (struct DevHandle *)service;
867     AudioHandle handle = (AudioHandle)hwRender;
868     float min = GAIN_MIN;
869     float max = GAIN_MAX;
870 #ifdef ALSA_LIB_MODE
871     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetGainThreshold(handle, &min, &max));
872 #else
873     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetGainThreshold(handle, &min, &max));
874 #endif
875     hwRender->devCtlHandle = devCtlHandle;
876     delete(service);
877     service = nullptr;
878 }
879 
880 HWTEST_F(AudioRenderTest, AudioRenderGetGainThresholdWhenParamValid, TestSize.Level1)
881 {
882     AudioHandle handle = (AudioHandle)render;
883     float min = GAIN_MIN;
884     float max = GAIN_MAX;
885     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetGainThreshold(handle, &min, &max));
886 }
887 
888 HWTEST_F(AudioRenderTest, AudioRenderGetGainWhenHandleIsNull, TestSize.Level1)
889 {
890     AudioHwRender *hwRender = nullptr;
891     AudioHandle handle = (AudioHandle)hwRender;
892     float gain = 0;
893     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetGain(handle, &gain));
894 }
895 
896 HWTEST_F(AudioRenderTest, AudioRenderGetGainWhenGainIsNull, TestSize.Level1)
897 {
898     AudioHandle handle = (AudioHandle)render;
899     float *gain = nullptr;
900     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetGain(handle, gain));
901 }
902 
903 HWTEST_F(AudioRenderTest, AudioRenderGetGainWhenDevCtlHandleIsNull, TestSize.Level1)
904 {
905     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
906     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
907     hwRender->devCtlHandle = nullptr;
908     AudioHandle handle = (AudioHandle)hwRender;
909     float gain = 0;
910     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetGain(handle, &gain));
911     hwRender->devCtlHandle = devCtlHandle;
912 }
913 
914 HWTEST_F(AudioRenderTest, AudioRenderGetGainWhenDevCtlHandleIsError, TestSize.Level1)
915 {
916     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
917     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
918     struct HdfIoService *service = new HdfIoService;
919     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
920     hwRender->devCtlHandle = reinterpret_cast<struct DevHandle *>(service);
921     AudioHandle handle = (AudioHandle)hwRender;
922     float gain = 0;
923 #ifdef ALSA_LIB_MODE
924     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetGain(handle, &gain));
925 #else
926     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetGain(handle, &gain));
927 #endif
928     hwRender->devCtlHandle = devCtlHandle;
929     delete(service);
930     service = nullptr;
931 }
932 
933 HWTEST_F(AudioRenderTest, AudioRenderGetGainWhenParamValid, TestSize.Level1)
934 {
935     AudioHandle handle = (AudioHandle)render;
936     float gain = 0;
937     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetGain(handle, &gain));
938 }
939 
940 HWTEST_F(AudioRenderTest, AudioRenderSetGainWhenHandleIsNull, TestSize.Level1)
941 {
942     AudioHwRender *hwRender = nullptr;
943     AudioHandle handle = (AudioHandle)hwRender;
944     float gain = 0;
945     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetGain(handle, gain));
946 }
947 
948 HWTEST_F(AudioRenderTest, AudioRenderSetGainWhenGainIsLessThanZero, TestSize.Level1)
949 {
950     AudioHandle handle = (AudioHandle)render;
951     float gain = -1;
952     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetGain(handle, gain));
953 }
954 
955 HWTEST_F(AudioRenderTest, AudioRenderSetGainWhenDevCtlHandleIsNull, TestSize.Level1)
956 {
957     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
958     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
959     hwRender->devCtlHandle = nullptr;
960     AudioHandle handle = (AudioHandle)hwRender;
961     float gain = 0;
962     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetGain(handle, gain));
963     hwRender->devCtlHandle = devCtlHandle;
964 }
965 
966 HWTEST_F(AudioRenderTest, AudioRenderSetGainWhenDevCtlHandleIsError, TestSize.Level1)
967 {
968     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
969     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
970     struct HdfIoService *service = new HdfIoService;
971     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
972     hwRender->devCtlHandle = reinterpret_cast<struct DevHandle *>(service);
973     AudioHandle handle = (AudioHandle)hwRender;
974     float gain = 0;
975 #ifdef ALSA_LIB_MODE
976     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetGain(handle, gain));
977 #else
978     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetGain(handle, gain));
979 #endif
980     hwRender->devCtlHandle = devCtlHandle;
981     delete(service);
982     service = nullptr;
983 }
984 
985 HWTEST_F(AudioRenderTest, AudioRenderSetGainWhenParamValid, TestSize.Level1)
986 {
987     AudioHandle handle = (AudioHandle)render;
988     float gain = 0;
989     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetGain(handle, gain));
990 }
991 
992 HWTEST_F(AudioRenderTest, AudioRenderGetLatencyWhenRenderIsNull, TestSize.Level1)
993 {
994     struct AudioRender *utRender = nullptr;
995     uint32_t ms = 96;
996     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetLatency(utRender, &ms));
997 }
998 
999 HWTEST_F(AudioRenderTest, AudioRenderGetLatencyWhenMsIsNull, TestSize.Level1)
1000 {
1001     uint32_t *ms = nullptr;
1002     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetLatency(render, ms));
1003 }
1004 
1005 HWTEST_F(AudioRenderTest, AudioRenderGetLatencyWhenByteRateIsZero, TestSize.Level1)
1006 {
1007     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1008     hwRender->renderParam.frameRenderMode.byteRate = 0;
1009     uint32_t ms = 96;
1010     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetLatency((struct AudioRender *)hwRender, &ms));
1011 }
1012 
1013 HWTEST_F(AudioRenderTest, AudioRenderGetLatencyWhenParamValid, TestSize.Level1)
1014 {
1015     uint32_t ms = 96;
1016     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetLatency(render, &ms));
1017 }
1018 
1019 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenRenderIsNull, TestSize.Level1)
1020 {
1021     struct AudioRender *utRender = nullptr;
1022     void *frame = (void *)calloc(1, FRAME_DATA);
1023     ASSERT_NE(nullptr, frame);
1024     uint64_t requestBytes = FRAME_DATA;
1025     uint64_t replyBytes;
1026     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM,
1027         AudioRenderRenderFrame(utRender, (const void*)frame, requestBytes, &replyBytes));
1028     free(frame);
1029     frame = nullptr;
1030 }
1031 
1032 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenFrameIsNull, TestSize.Level1)
1033 {
1034     void *frame = nullptr;
1035     uint64_t requestBytes = FRAME_DATA;
1036     uint64_t replyBytes;
1037     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM,
1038         AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1039 }
1040 
1041 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenReplyBytesIsNull, TestSize.Level1)
1042 {
1043     void *frame = (void *)calloc(1, FRAME_DATA);
1044     ASSERT_NE(nullptr, frame);
1045     uint64_t requestBytes = FRAME_DATA;
1046     uint64_t *replyBytes = nullptr;
1047     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM,
1048         AudioRenderRenderFrame(render, (const void*)frame, requestBytes, replyBytes));
1049     free(frame);
1050     frame = nullptr;
1051 }
1052 
1053 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenRequestBytesGreaterThan16K, TestSize.Level1)
1054 {
1055     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart((AudioHandle)render));
1056     void *frame = (void *)calloc(1, FRAME_DATA);
1057     ASSERT_NE(nullptr, frame);
1058     uint64_t requestBytes = FRAME_DATA + 1;
1059     uint64_t replyBytes;
1060     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL,
1061         AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1062     free(frame);
1063     frame = nullptr;
1064 }
1065 
1066 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenFormatIsNotSupport, TestSize.Level1)
1067 {
1068     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart((AudioHandle)render));
1069     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1070     hwRender->renderParam.frameRenderMode.attrs.format = AUDIO_FORMAT_AAC_MAIN;
1071     void *frame = (void *)calloc(1, FRAME_DATA);
1072     ASSERT_NE(nullptr, frame);
1073     uint64_t requestBytes = FRAME_DATA;
1074     uint64_t replyBytes;
1075     EXPECT_EQ(HDF_ERR_NOT_SUPPORT,
1076         AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1077     free(frame);
1078     frame = nullptr;
1079 }
1080 
1081 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenDevDataHandleIsNull, TestSize.Level1)
1082 {
1083     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart((AudioHandle)render));
1084     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1085     struct DevHandle *devDataHandle = hwRender->devDataHandle;
1086     hwRender->devDataHandle = nullptr;
1087     void *frame = (void *)calloc(1, FRAME_DATA);
1088     ASSERT_NE(nullptr, frame);
1089     uint64_t requestBytes = FRAME_DATA;
1090     uint64_t replyBytes;
1091     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL,
1092         AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1093     hwRender->devDataHandle = devDataHandle;
1094     free(frame);
1095     frame = nullptr;
1096 }
1097 
1098 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenSampleRateIsZero, TestSize.Level1)
1099 {
1100     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart((AudioHandle)render));
1101     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1102     hwRender->renderParam.frameRenderMode.attrs.sampleRate = 0;
1103     void *frame = (void *)calloc(1, FRAME_DATA);
1104     ASSERT_NE(nullptr, frame);
1105     uint64_t requestBytes = FRAME_DATA;
1106     uint64_t replyBytes;
1107     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1108     free(frame);
1109     frame = nullptr;
1110 }
1111 
1112 HWTEST_F(AudioRenderTest, AudioRenderRenderFrameWhenParamIsValid, TestSize.Level1)
1113 {
1114     ASSERT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart((AudioHandle)render));
1115     void *frame = (void *)calloc(1, FRAME_DATA);
1116     ASSERT_NE(nullptr, frame);
1117     uint64_t requestBytes = FRAME_DATA;
1118     uint64_t replyBytes;
1119     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderRenderFrame(render, (const void*)frame, requestBytes, &replyBytes));
1120     free(frame);
1121     frame = nullptr;
1122 }
1123 
1124 HWTEST_F(AudioRenderTest, AudioRenderGetRenderPositionWhenRenderIsNull, TestSize.Level1)
1125 {
1126     struct AudioRender *utRender = nullptr;
1127     uint64_t frames = 1024;
1128     struct AudioTimeStamp *time = new AudioTimeStamp;
1129     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetRenderPosition(utRender, &frames, time));
1130     delete(time);
1131     time = nullptr;
1132 }
1133 
1134 HWTEST_F(AudioRenderTest, AudioRenderGetRenderPositionWhenFramesIsNull, TestSize.Level1)
1135 {
1136     uint64_t *frames = nullptr;
1137     struct AudioTimeStamp *time = new AudioTimeStamp;
1138     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetRenderPosition(render, frames, time));
1139     delete(time);
1140     time = nullptr;
1141 }
1142 
1143 HWTEST_F(AudioRenderTest, AudioRenderGetRenderPositionWhenTimeIsNull, TestSize.Level1)
1144 {
1145     uint64_t frames = 1024;
1146     struct AudioTimeStamp *time = nullptr;
1147     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetRenderPosition(render, &frames, time));
1148 }
1149 
1150 HWTEST_F(AudioRenderTest, AudioRenderGetRenderPositionWhenParamIsValid, TestSize.Level1)
1151 {
1152     uint64_t frames = 1024;
1153     struct AudioTimeStamp *time = new AudioTimeStamp;
1154     EXPECT_EQ(HDF_SUCCESS, AudioRenderGetRenderPosition(render, &frames, time));
1155     delete(time);
1156     time = nullptr;
1157 }
1158 
1159 HWTEST_F(AudioRenderTest, AudioRenderSetRenderSpeedWhenRenderIsNull, TestSize.Level1)
1160 {
1161     struct AudioRender *utRender = nullptr;
1162     float speed = 1.0;
1163     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetRenderSpeed(utRender, speed));
1164 }
1165 
1166 HWTEST_F(AudioRenderTest, AudioRenderSetRenderSpeedWhenParamIsValid, TestSize.Level1)
1167 {
1168     float speed = 1.0;
1169     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderSetRenderSpeed(render, speed));
1170 }
1171 
1172 HWTEST_F(AudioRenderTest, AudioRenderGetRenderSpeedWhenRenderIsNull, TestSize.Level1)
1173 {
1174     struct AudioRender *utRender = nullptr;
1175     float speed = 1.0;
1176     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetRenderSpeed(utRender, &speed));
1177 }
1178 
1179 HWTEST_F(AudioRenderTest, AudioRenderGetRenderSpeedWhenSpeedIsNull, TestSize.Level1)
1180 {
1181     float *speed = nullptr;
1182     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetRenderSpeed(render, speed));
1183 }
1184 
1185 HWTEST_F(AudioRenderTest, AudioRenderGetRenderSpeedWhenParamIsValid, TestSize.Level1)
1186 {
1187     float speed = 1.0;
1188     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderGetRenderSpeed(render, &speed));
1189 }
1190 
1191 HWTEST_F(AudioRenderTest, AudioRenderSetChannelModeWhenRenderIsNull, TestSize.Level1)
1192 {
1193     struct AudioRender *utRender = nullptr;
1194     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1195     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetChannelMode(utRender, mode));
1196 }
1197 
1198 HWTEST_F(AudioRenderTest, AudioRenderSetChannelModeWhenDevCtlHandleIsNull, TestSize.Level1)
1199 {
1200     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1201     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
1202     hwRender->devCtlHandle = nullptr;
1203     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1204     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetChannelMode((struct AudioRender *)hwRender, mode));
1205     hwRender->devCtlHandle = devCtlHandle;
1206 }
1207 
1208 HWTEST_F(AudioRenderTest, AudioRenderSetChannelModeWhenDevCtlHandleIsError, TestSize.Level1)
1209 {
1210     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1211     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
1212     struct HdfIoService *service = new HdfIoService;
1213     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
1214     hwRender->devCtlHandle = reinterpret_cast<struct DevHandle *>(service);
1215     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1216 #ifdef ALSA_LIB_MODE
1217     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetChannelMode((struct AudioRender *)hwRender, mode));
1218 #else
1219     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetChannelMode((struct AudioRender *)hwRender, mode));
1220 #endif
1221     hwRender->devCtlHandle = devCtlHandle;
1222     delete(service);
1223     service = nullptr;
1224 }
1225 
1226 HWTEST_F(AudioRenderTest, AudioRenderSetChannelModeWhenParamIsValid, TestSize.Level1)
1227 {
1228     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1229     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetChannelMode(render, mode));
1230 }
1231 
1232 HWTEST_F(AudioRenderTest, AudioRenderGetChannelModeWhenRenderIsNull, TestSize.Level1)
1233 {
1234     struct AudioRender *utRender = nullptr;
1235     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1236     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetChannelMode(utRender, &mode));
1237 }
1238 
1239 HWTEST_F(AudioRenderTest, AudioRenderGetChannelModeWhenModeIsNull, TestSize.Level1)
1240 {
1241     AudioChannelMode *mode = nullptr;
1242     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetChannelMode(render, mode));
1243 }
1244 
1245 HWTEST_F(AudioRenderTest, AudioRenderGetChannelModeWhenDevCtlHandleIsNull, TestSize.Level1)
1246 {
1247     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1248     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
1249     hwRender->devCtlHandle = nullptr;
1250     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1251     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetChannelMode((struct AudioRender *)hwRender, &mode));
1252     hwRender->devCtlHandle = devCtlHandle;
1253 }
1254 
1255 HWTEST_F(AudioRenderTest, AudioRenderGetChannelModeWhenDevCtlHandleIsError, TestSize.Level1)
1256 {
1257     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1258     struct DevHandle *devCtlHandle = hwRender->devCtlHandle;
1259     struct HdfIoService *service = new HdfIoService;
1260     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
1261     hwRender->devCtlHandle = reinterpret_cast<struct DevHandle *>(service);
1262     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1263 #ifdef ALSA_LIB_MODE
1264     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetChannelMode((struct AudioRender *)hwRender, &mode));
1265 #else
1266     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetChannelMode((struct AudioRender *)hwRender, &mode));
1267 #endif
1268     hwRender->devCtlHandle = devCtlHandle;
1269     delete(service);
1270     service = nullptr;
1271 }
1272 
1273 HWTEST_F(AudioRenderTest, AudioRenderGetChannelModeWhenParamIsValid, TestSize.Level1)
1274 {
1275     AudioChannelMode mode = AUDIO_CHANNEL_NORMAL;
1276     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetChannelMode(render, &mode));
1277 }
1278 
1279 HWTEST_F(AudioRenderTest, AudioRenderDrainBufferWhenTypeIsNull, TestSize.Level1)
1280 {
1281     AudioDrainNotifyType *type = nullptr;
1282     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderDrainBuffer(render, type));
1283 }
1284 
1285 HWTEST_F(AudioRenderTest, AudioRenderDrainBufferWhenParamIsNotSupport, TestSize.Level1)
1286 {
1287     AudioDrainNotifyType *type = new AudioDrainNotifyType;
1288     EXPECT_EQ(AUDIO_HAL_ERR_NOT_SUPPORT, AudioRenderDrainBuffer(render, type));
1289     delete(type);
1290     type = nullptr;
1291 }
1292 
1293 HWTEST_F(AudioRenderTest, AudioRenderTurnStandbyModeWhenHandleIsNull, TestSize.Level1)
1294 {
1295     AudioHwRender *hwRender = nullptr;
1296     AudioHandle handle = (AudioHandle)hwRender;
1297     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderTurnStandbyMode(handle));
1298 }
1299 
1300 HWTEST_F(AudioRenderTest, AudioRenderTurnStandbyModeWhenStopIsError, TestSize.Level1)
1301 {
1302     AudioHandle handle = (AudioHandle)render;
1303     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderTurnStandbyMode(handle));
1304 }
1305 
1306 HWTEST_F(AudioRenderTest, AudioRenderTurnStandbyModeWhenParamIsValid, TestSize.Level1)
1307 {
1308     AudioHandle handle = (AudioHandle)render;
1309     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderStart(handle));
1310     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderTurnStandbyMode(handle));
1311 }
1312 
1313 HWTEST_F(AudioRenderTest, AudioRenderRegCallbackWhenRenderIsNull, TestSize.Level1)
1314 {
1315     struct AudioRender *utRender = nullptr;
1316     RenderCallback callback = AudioRenderCallbackUtTest;
1317     void *cookie = nullptr;
1318     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderRegCallback(utRender, callback, cookie));
1319 }
1320 
1321 HWTEST_F(AudioRenderTest, AudioRenderRegCallbackWhenParamIsValid, TestSize.Level1)
1322 {
1323     RenderCallback callback = AudioRenderCallbackUtTest;
1324     void *cookie = nullptr;
1325     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderRegCallback(render, callback, cookie));
1326 }
1327 
1328 HWTEST_F(AudioRenderTest, CallbackProcessingWhenHandleIsNull, TestSize.Level1)
1329 {
1330     AudioHwRender *hwRender = nullptr;
1331     AudioHandle handle = (AudioHandle)hwRender;
1332     AudioCallbackType callBackType = AUDIO_ERROR_OCCUR;
1333     EXPECT_EQ(HDF_FAILURE, CallbackProcessing(handle, callBackType));
1334 }
1335 
1336 HWTEST_F(AudioRenderTest, CallbackProcessingWhenCallbackIsNull, TestSize.Level1)
1337 {
1338     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1339     hwRender->renderParam.frameRenderMode.callback = NULL;
1340     AudioHandle handle = (AudioHandle)hwRender;
1341     AudioCallbackType callBackType = AUDIO_ERROR_OCCUR;
1342     EXPECT_EQ(HDF_FAILURE, CallbackProcessing(handle, callBackType));
1343 }
1344 
1345 HWTEST_F(AudioRenderTest, CallbackProcessingWhenCallbackIsError, TestSize.Level1)
1346 {
1347     RenderCallback callback = AudioRenderCallbackUtTest;
1348     void *cookie = nullptr;
1349     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderRegCallback(render, callback, cookie));
1350     AudioHandle handle = (AudioHandle)render;
1351     int32_t callBackType = AUDIO_ERROR_OCCUR + 1;
1352     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, CallbackProcessing(handle, (enum AudioCallbackType)callBackType));
1353 }
1354 
1355 HWTEST_F(AudioRenderTest, CallbackProcessingWhenParamIsValid, TestSize.Level1)
1356 {
1357     RenderCallback callback = AudioRenderCallbackUtTest;
1358     void *cookie = nullptr;
1359     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderRegCallback(render, callback, cookie));
1360     AudioHandle handle = (AudioHandle)render;
1361     AudioCallbackType callBackType = AUDIO_ERROR_OCCUR;
1362     EXPECT_EQ(HDF_SUCCESS, CallbackProcessing(handle, callBackType));
1363 }
1364 
1365 HWTEST_F(AudioRenderTest, AudioRenderSetExtraParamsWhenRenderIsNull, TestSize.Level1)
1366 {
1367     AudioHwRender *hwRender = nullptr;
1368     AudioHandle handle = (AudioHandle)hwRender;
1369     char keyValueList[] = "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000";
1370     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetExtraParams(handle, keyValueList));
1371 }
1372 
1373 HWTEST_F(AudioRenderTest, AudioRenderSetExtraParamsWhenParamIsNull, TestSize.Level1)
1374 {
1375     char *keyValueList = nullptr;
1376     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderSetExtraParams(render, keyValueList));
1377 }
1378 
1379 HWTEST_F(AudioRenderTest, AudioRenderSetExtraParamsWhenParamIsError, TestSize.Level1)
1380 {
1381     char keyValueList[] = "attr-route=1;attr-format=32;attr-channels=2;\
1382 attr-frame-count=82;attr-sampling-rate=48000;attr-para=123";
1383     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderSetExtraParams(render, keyValueList));
1384 }
1385 
1386 HWTEST_F(AudioRenderTest, AudioRenderSetExtraParamsWhenParamIsValid, TestSize.Level1)
1387 {
1388     char keyValueListOne[] = "attr-frame-count=1024;";
1389     char keyValueListFour[] = "attr-format=32;attr-channels=2;attr-frame-count=4096;attr-sampling-rate=48000";
1390     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetExtraParams(render, keyValueListOne));
1391     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderSetExtraParams(render, keyValueListFour));
1392 }
1393 
1394 HWTEST_F(AudioRenderTest, AudioRenderGetExtraParamsWhenRenderIsNull, TestSize.Level1)
1395 {
1396     AudioHwRender *hwRender = nullptr;
1397     AudioHandle handle = (AudioHandle)hwRender;
1398     int32_t listLenth = PARAMS_LEN;
1399     char keyValueListValue[PARAMS_LEN] = {};
1400     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetExtraParams(handle, keyValueListValue, listLenth));
1401 }
1402 
1403 HWTEST_F(AudioRenderTest, AudioRenderGetExtraParamsWhenParamIsNull, TestSize.Level1)
1404 {
1405     int32_t listLenth = PARAMS_LEN;
1406     char* keyValueListValue = nullptr;
1407     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetExtraParams(render, keyValueListValue, listLenth));
1408 }
1409 
1410 HWTEST_F(AudioRenderTest, AudioRenderGetExtraParamsWhenParamIsError0, TestSize.Level1)
1411 {
1412     int32_t listLenth = 0;
1413     char keyValueListValue[PARAMS_LEN] = {};
1414     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetExtraParams(render, keyValueListValue, listLenth));
1415     listLenth = PARAMS_ERR;
1416     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, AudioRenderGetExtraParams(render, keyValueListValue, listLenth));
1417 }
1418 
1419 HWTEST_F(AudioRenderTest, AudioRenderGetExtraParamsWhenParamIsValid, TestSize.Level1)
1420 {
1421     int32_t listLenth = PARAMS_LEN;
1422     char keyValueListValue[PARAMS_LEN] = {};
1423     EXPECT_EQ(AUDIO_HAL_SUCCESS, AudioRenderGetExtraParams(render, keyValueListValue, listLenth));
1424 }
1425 
1426 HWTEST_F(AudioRenderTest, AudioRenderReqMmapBufferWhenRenderIsNull, TestSize.Level1)
1427 {
1428     AudioHwRender *hwRender = nullptr;
1429     AudioHandle handle = (AudioHandle)hwRender;
1430     int32_t reqSize = REQ_SIZE;
1431     struct AudioMmapBufferDescripter desc;
1432     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderReqMmapBuffer(handle, reqSize, &desc));
1433 }
1434 
1435 HWTEST_F(AudioRenderTest, AudioRenderReqMmapBufferWhenDevCtlHandleIsNull, TestSize.Level1)
1436 {
1437     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1438     struct DevHandle *devDataHandle = hwRender->devDataHandle;
1439     hwRender->devDataHandle = nullptr;
1440     struct AudioMmapBufferDescripter desc;
1441     int32_t reqSize = REQ_SIZE;
1442     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderReqMmapBuffer((struct AudioRender *)hwRender, reqSize, &desc));
1443     hwRender->devDataHandle = devDataHandle;
1444 }
1445 
1446 HWTEST_F(AudioRenderTest, AudioRenderReqMmapBufferWhenDevCtlHandleIsError, TestSize.Level1)
1447 {
1448     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1449     struct DevHandle *devDataHandle = hwRender->devDataHandle;
1450     struct HdfIoService *service = new HdfIoService;
1451     (void)memset_s(service, sizeof(struct HdfIoService), 0, sizeof(struct HdfIoService));
1452     hwRender->devDataHandle = reinterpret_cast<struct DevHandle *>(service);
1453     struct AudioMmapBufferDescripter desc;
1454     int32_t reqSize = REQ_SIZE;
1455     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderReqMmapBuffer((struct AudioRender *)hwRender, reqSize, &desc));
1456     hwRender->devDataHandle = devDataHandle;
1457     delete(service);
1458     service = nullptr;
1459 }
1460 
1461 HWTEST_F(AudioRenderTest, AudioRenderReqMmapBufferWhenDescIsNull, TestSize.Level1)
1462 {
1463     struct AudioMmapBufferDescripter *desc = nullptr;
1464     int32_t reqSize = REQ_SIZE;
1465     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderReqMmapBuffer(render, reqSize, desc));
1466 }
1467 
1468 HWTEST_F(AudioRenderTest, AudioRenderReqMmapBufferWhenFormatIsError, TestSize.Level1)
1469 {
1470     struct AudioMmapBufferDescripter desc;
1471     int32_t reqSize = REQ_SIZE;
1472     struct AudioHwRender *hwRender = (struct AudioHwRender *)render;
1473     AudioFormat tempFormat = hwRender->renderParam.frameRenderMode.attrs.format;
1474     hwRender->renderParam.frameRenderMode.attrs.format = AUDIO_FORMAT_G726;
1475     EXPECT_EQ(HDF_ERR_NOT_SUPPORT, AudioRenderReqMmapBuffer(render, reqSize, &desc));
1476     hwRender->renderParam.frameRenderMode.attrs.format = tempFormat;
1477 }
1478 
1479 HWTEST_F(AudioRenderTest, AudioRenderGetMmapPositionWhenRenderIsNull, TestSize.Level1)
1480 {
1481     AudioHwRender *hwRender = nullptr;
1482     AudioHandle handle = (AudioHandle)hwRender;
1483     uint64_t frames = REQ_SIZE;
1484     struct AudioTimeStamp time;
1485     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetMmapPosition(handle, &frames, &time));
1486 }
1487 
1488 HWTEST_F(AudioRenderTest, AudioRenderGetMmapPositionWhenFramesIsNull, TestSize.Level1)
1489 {
1490     uint64_t *frames = nullptr;
1491     struct AudioTimeStamp time;
1492     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetMmapPosition(render, frames, &time));
1493 }
1494 
1495 HWTEST_F(AudioRenderTest, AudioRenderGetMmapPositionWhenTimeIsNull, TestSize.Level1)
1496 {
1497     uint64_t frames = REQ_SIZE;
1498     struct AudioTimeStamp *time = nullptr;
1499     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderGetMmapPosition(render, &frames, time));
1500 }
1501 
1502 HWTEST_F(AudioRenderTest, AudioRenderAudioDevDumpWhenRenderIsNull, TestSize.Level1)
1503 {
1504     AudioHwRender *hwRender = nullptr;
1505     AudioHandle handle = (AudioHandle)hwRender;
1506     int32_t range = 0;
1507     int32_t fd = 0;
1508     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, AudioRenderAudioDevDump(handle, range, fd));
1509 }
1510 }
1511