1 /*
2  * Copyright (c) 2023-2024 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 "osal_mem.h"
17 #include <gtest/gtest.h>
18 
19 #include "v4_0/audio_types.h"
20 #include "v4_0/iaudio_manager.h"
21 #include "v4_0/iaudio_render.h"
22 
23 using namespace std;
24 using namespace testing::ext;
25 
26 namespace {
27 const int BUFFER_LENTH = 1024 * 16;
28 const int DEEP_BUFFER_RENDER_PERIOD_SIZE = 4 * 1024;
29 const int32_t AUDIO_RENDER_CHANNELCOUNT = 2;
30 const int32_t AUDIO_SAMPLE_RATE_48K = 48000;
31 const int32_t MAX_AUDIO_ADAPTER_DESC = 5;
32 
33 class AudioUtRenderMmapTestAdditional : public testing::Test {
34 public:
35     struct IAudioManager *manager_ = nullptr;
36     struct AudioAdapterDescriptor descs_[MAX_AUDIO_ADAPTER_DESC];
37     struct AudioAdapterDescriptor *desc_;
38     struct IAudioAdapter *adapter_ = nullptr;
39     struct IAudioRender *render_ = nullptr;
40     struct AudioDeviceDescriptor devDescRender_ = {};
41     struct AudioSampleAttributes attrsRender_ = {};
42     uint32_t renderId_ = 0;
43     uint32_t size_ = MAX_AUDIO_ADAPTER_DESC;
44     virtual void SetUp();
45     virtual void TearDown();
46     void InitRenderAttrs(struct AudioSampleAttributes &attrs);
47     void InitRenderDevDesc(struct AudioDeviceDescriptor &devDesc);
48     void FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf);
49     void ReleaseAllAdapterDescs(struct AudioAdapterDescriptor *descs, uint32_t descsLen);
50 };
51 
InitRenderAttrs(struct AudioSampleAttributes &attrs)52 void AudioUtRenderMmapTestAdditional::InitRenderAttrs(struct AudioSampleAttributes &attrs)
53 {
54     attrs.format = AUDIO_FORMAT_TYPE_PCM_16_BIT;
55     attrs.channelCount = AUDIO_RENDER_CHANNELCOUNT;
56     attrs.sampleRate = AUDIO_SAMPLE_RATE_48K;
57     attrs.interleaved = 0;
58     attrs.type = AUDIO_MMAP_NOIRQ;
59     attrs.period = DEEP_BUFFER_RENDER_PERIOD_SIZE;
60     attrs.frameSize = AUDIO_FORMAT_TYPE_PCM_16_BIT * AUDIO_RENDER_CHANNELCOUNT;
61     attrs.isBigEndian = false;
62     attrs.isSignedData = true;
63     attrs.startThreshold = DEEP_BUFFER_RENDER_PERIOD_SIZE / (attrs.format * attrs.channelCount);
64     attrs.stopThreshold = INT_MAX;
65     attrs.silenceThreshold = BUFFER_LENTH;
66 }
67 
InitRenderDevDesc(struct AudioDeviceDescriptor &devDesc)68 void AudioUtRenderMmapTestAdditional::InitRenderDevDesc(struct AudioDeviceDescriptor &devDesc)
69 {
70     devDesc.pins = PIN_OUT_SPEAKER;
71     devDesc.desc = strdup("cardname");
72 
73     ASSERT_NE(desc_, nullptr);
74     ASSERT_NE(desc_->ports, nullptr);
75     for (uint32_t index = 0; index < desc_->portsLen; index++) {
76         if (desc_->ports[index].dir == PORT_OUT) {
77             devDesc.portId = desc_->ports[index].portId;
78             return;
79         }
80     }
81     free(devDesc.desc);
82 }
83 
FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf)84 void AudioUtRenderMmapTestAdditional::FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf)
85 {
86     if (dataBlock == nullptr) {
87         return;
88     }
89 
90     OsalMemFree(dataBlock->adapterName);
91 
92     OsalMemFree(dataBlock->ports);
93 
94     if (freeSelf) {
95         OsalMemFree(dataBlock);
96     }
97 }
98 
ReleaseAllAdapterDescs(struct AudioAdapterDescriptor *descs, uint32_t descsLen)99 void AudioUtRenderMmapTestAdditional::ReleaseAllAdapterDescs(struct AudioAdapterDescriptor *descs, uint32_t descsLen)
100 {
101     if (descs == nullptr || descsLen == 0) {
102         return;
103     }
104 
105     for (uint32_t i = 0; i < descsLen; i++) {
106         FreeAdapterElements(&descs[i], false);
107     }
108 }
109 
SetUp()110 void AudioUtRenderMmapTestAdditional::SetUp()
111 {
112     manager_ = IAudioManagerGet(false);
113     ASSERT_NE(manager_, nullptr);
114 
115     ASSERT_EQ(HDF_SUCCESS, manager_->GetAllAdapters(manager_, descs_, &size_));
116     ASSERT_NE(descs_, nullptr);
117     EXPECT_GE(MAX_AUDIO_ADAPTER_DESC, size_);
118     desc_ = &descs_[0];
119     ASSERT_EQ(HDF_SUCCESS, manager_->LoadAdapter(manager_, desc_, &adapter_));
120     ASSERT_NE(adapter_, nullptr);
121     InitRenderDevDesc(devDescRender_);
122     InitRenderAttrs(attrsRender_);
123 
124     int32_t ret = adapter_->CreateRender(adapter_, &devDescRender_, &attrsRender_, &render_, &renderId_);
125     if (ret != HDF_SUCCESS) {
126         attrsRender_.format = AUDIO_FORMAT_TYPE_PCM_32_BIT;
127         ASSERT_EQ(HDF_SUCCESS, adapter_->CreateRender(adapter_, &devDescRender_, &attrsRender_, &render_, &renderId_));
128     }
129     ASSERT_NE(render_, nullptr);
130 }
131 
TearDown()132 void AudioUtRenderMmapTestAdditional::TearDown()
133 {
134     if (adapter_ != nullptr) {
135         adapter_->DestroyRender(adapter_, renderId_);
136         render_ = nullptr;
137     }
138     if (manager_ != nullptr) {
139         manager_->UnloadAdapter(manager_, desc_->adapterName);
140         adapter_ = nullptr;
141         ReleaseAllAdapterDescs(descs_, size_);
142 
143         IAudioManagerRelease(manager_, false);
144     }
145 }
146 
147 /**
148  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0100
149  * @tc.name  testCommonRenderGetMmapPosition001
150  * @tc.desc  Reliability of function(GetMmapPosition)
151  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition001, TestSize.Level2)152 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition001, TestSize.Level2)
153 {
154     uint64_t frames = 256;
155     struct AudioTimeStamp time;
156     time.tvNSec = 0;
157     time.tvSec = 0;
158     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
159 }
160 
161 /**
162  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0200
163  * @tc.name  testCommonRenderGetMmapPosition002
164  * @tc.desc  Reliability of function(GetMmapPosition)
165  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition002, TestSize.Level2)166 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition002, TestSize.Level2)
167 {
168     uint64_t frames = -256;
169     struct AudioTimeStamp time;
170     time.tvNSec = 0;
171     time.tvSec = 0;
172     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
173 }
174 
175 /**
176  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0300
177  * @tc.name  testCommonRenderGetMmapPosition003
178  * @tc.desc  Reliability of function(GetMmapPosition)
179  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition003, TestSize.Level2)180 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition003, TestSize.Level2)
181 {
182     uint64_t frames = 0;
183     struct AudioTimeStamp time;
184     time.tvNSec = -1;
185     time.tvSec = -1;
186     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
187 }
188 
189 /**
190  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0400
191  * @tc.name  testCommonRenderGetMmapPosition004
192  * @tc.desc  Reliability of function(GetMmapPosition)
193  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition004, TestSize.Level2)194 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition004, TestSize.Level2)
195 {
196     uint64_t frames = 0;
197     struct AudioTimeStamp time;
198     time.tvNSec = 21474836470;
199     time.tvSec = 21474836470;
200     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
201 }
202 
203 /**
204  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0500
205  * @tc.name  testCommonRenderGetMmapPosition005
206  * @tc.desc  Reliability of function(GetMmapPosition)
207  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition005, TestSize.Level2)208 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition005, TestSize.Level2)
209 {
210     uint64_t frames = 0;
211     struct AudioTimeStamp time;
212     time.tvNSec = -21474836480;
213     time.tvSec = -21474836480;
214     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
215 }
216 
217 /**
218  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0600
219  * @tc.name  testCommonRenderGetMmapPosition006
220  * @tc.desc  Reliability of function(GetMmapPosition)
221  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition006, TestSize.Level2)222 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition006, TestSize.Level2)
223 {
224     uint64_t frames = 2;
225     struct AudioTimeStamp time;
226     time.tvNSec = 0;
227     time.tvSec = 0;
228     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
229 }
230 
231 /**
232  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0700
233  * @tc.name  testCommonRenderGetMmapPosition007
234  * @tc.desc  Reliability of function(GetMmapPosition)
235  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition007, TestSize.Level2)236 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition007, TestSize.Level2)
237 {
238     struct AudioTimeStamp time;
239     time.tvNSec = 0;
240     time.tvSec = 0;
241     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, nullptr, &time));
242 }
243 
244 /**
245  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0800
246  * @tc.name  testCommonRenderGetMmapPosition008
247  * @tc.desc  Reliability of function(GetMmapPosition)
248  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition008, TestSize.Level2)249 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition008, TestSize.Level2)
250 {
251     uint64_t frames = 0;
252     struct AudioTimeStamp time;
253     time.tvNSec = 0;
254     time.tvSec = 0;
255     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, nullptr));
256 }
257 
258 /**
259  * @tc.number  SUB_Driver_Audio_GetMmapPosition_0900
260  * @tc.name  testCommonRenderGetMmapPosition009
261  * @tc.desc  Reliability of function(GetMmapPosition)
262  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition009, TestSize.Level2)263 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition009, TestSize.Level2)
264 {
265     struct AudioTimeStamp time;
266     time.tvNSec = 0;
267     time.tvSec = 0;
268     int32_t i;
269     for (i = 0; i < 10; i++) {
270         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, 0, nullptr));
271     }
272 }
273 
274 /**
275  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1100
276  * @tc.name  testCommonRenderGetMmapPosition011
277  * @tc.desc  Reliability of function(GetMmapPosition)
278  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition011, TestSize.Level2)279 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition011, TestSize.Level2)
280 {
281     uint64_t frames = 42949672950;
282     struct AudioTimeStamp time;
283     time.tvNSec = 0;
284     time.tvSec = 0;
285     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
286 }
287 
288 /**
289  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1200
290  * @tc.name  testCommonRenderGetMmapPosition012
291  * @tc.desc  Reliability of function(GetMmapPosition)
292  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition012, TestSize.Level2)293 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition012, TestSize.Level2)
294 {
295     uint64_t frames = 200;
296     struct AudioTimeStamp time;
297     time.tvNSec = 0;
298     time.tvSec = 0;
299     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
300 }
301 
302 /**
303  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1300
304  * @tc.name  testCommonRenderGetMmapPosition013
305  * @tc.desc  Reliability of function(GetMmapPosition)
306  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition013, TestSize.Level2)307 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition013, TestSize.Level2)
308 {
309     uint64_t frames = 0;
310     struct AudioTimeStamp time;
311     time.tvNSec = 3;
312     time.tvSec = 3;
313     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
314 }
315 
316 /**
317  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1400
318  * @tc.name  testCommonRenderGetMmapPosition014
319  * @tc.desc  Reliability of function(GetMmapPosition)
320  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition014, TestSize.Level2)321 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition014, TestSize.Level2)
322 {
323     uint64_t frames = 0;
324     struct AudioTimeStamp time;
325     time.tvNSec = -60;
326     time.tvSec = -60;
327     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
328 }
329 
330 /**
331  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1500
332  * @tc.name  testCommonRenderGetMmapPosition015
333  * @tc.desc  Reliability of function(GetMmapPosition)
334  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition015, TestSize.Level2)335 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition015, TestSize.Level2)
336 {
337     int32_t i;
338     for (i = 0; i < 50; i++) {
339         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, nullptr, nullptr));
340     }
341 }
342 
343 /**
344  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1600
345  * @tc.name  testCommonRenderGetMmapPosition016
346  * @tc.desc  Reliability of function(GetMmapPosition)
347  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition016, TestSize.Level2)348 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition016, TestSize.Level2)
349 {
350     uint64_t frames = 0;
351     struct AudioTimeStamp time;
352     time.tvNSec = 0;
353     time.tvSec = 0;
354     int32_t i;
355     for (i = 0; i < 60; i++) {
356         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, &time));
357     }
358 }
359 
360 /**
361  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1700
362  * @tc.name  testCommonRenderGetMmapPosition017
363  * @tc.desc  Reliability of function(GetMmapPosition)
364  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition017, TestSize.Level2)365 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition017, TestSize.Level2)
366 {
367     uint64_t frames = 0;
368     int32_t i;
369     for (i = 0; i < 70; i++) {
370         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, nullptr));
371     }
372 }
373 
374 /**
375  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1800
376  * @tc.name  testCommonRenderGetMmapPosition018
377  * @tc.desc  Reliability of function(GetMmapPosition)
378  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition018, TestSize.Level2)379 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition018, TestSize.Level2)
380 {
381     struct AudioTimeStamp time;
382     time.tvNSec = 0;
383     time.tvSec = 0;
384     int32_t i;
385     for (i = 0; i < 70; i++) {
386         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, nullptr, &time));
387     }
388 }
389 
390 /**
391  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1900
392  * @tc.name  testCommonRenderGetMmapPosition019
393  * @tc.desc  Reliability of function(GetMmapPosition)
394  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition019, TestSize.Level2)395 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition019, TestSize.Level2)
396 {
397     struct AudioTimeStamp time;
398     time.tvNSec = 256;
399     time.tvSec = 256;
400     int32_t i;
401     for (i = 0; i < 70; i++) {
402         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, nullptr, &time));
403     }
404 }
405 
406 /**
407  * @tc.number  SUB_Driver_Audio_GetMmapPosition_2000
408  * @tc.name  testCommonRenderGetMmapPosition020
409  * @tc.desc  Reliability of function(GetMmapPosition)
410  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition020, TestSize.Level2)411 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition020, TestSize.Level2)
412 {
413     uint64_t frames = 256;
414     struct AudioTimeStamp time;
415     time.tvNSec = 0;
416     time.tvSec = 0;
417     int32_t i;
418     for (i = 0; i < 70; i++) {
419         EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->GetMmapPosition(nullptr, &frames, nullptr));
420     }
421 }
422 
423 /**
424  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0300
425  * @tc.name  testCommonRenderReqMmapBuffer003
426  * @tc.desc  Test parameters with abnormal input
427  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer003, Function | MediumTest | Level2)428 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer003, Function | MediumTest | Level2)
429 {
430     int32_t reqSize = 256;
431     struct AudioMmapBufferDescriptor desc;
432     EXPECT_EQ(HDF_ERR_INVALID_OBJECT, render_->ReqMmapBuffer(nullptr, reqSize, &desc));
433 }
434 
435 /**
436  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0600
437  * @tc.name  testCommonRenderReqMmapBuffer006
438  * @tc.desc  Test parameters with abnormal input
439  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer006, Function | MediumTest | Level2)440 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer006, Function | MediumTest | Level2)
441 {
442     int32_t reqSize = 0;
443     struct AudioMmapBufferDescriptor desc;
444     desc.memoryAddress = nullptr;
445     EXPECT_NE(HDF_SUCCESS, render_->ReqMmapBuffer(render_, reqSize, &desc));
446 }
447 
448 /**
449  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_1200
450  * @tc.name  testCommonRenderReqMmapBuffer012
451  * @tc.desc  Test parameters with abnormal input
452  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer012, Function | MediumTest | Level2)453 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer012, Function | MediumTest | Level2)
454 {
455     int32_t reqSize = 0;
456     struct AudioMmapBufferDescriptor desc;
457     desc.filePath = nullptr;
458     EXPECT_NE(HDF_SUCCESS, render_->ReqMmapBuffer(render_, reqSize, &desc));
459 }
460 
461 /**
462  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_1300
463  * @tc.name  testCommonRenderReqMmapBuffer013
464  * @tc.desc  Test parameters with abnormal input
465  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer013, Function | MediumTest | Level2)466 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer013, Function | MediumTest | Level2)
467 {
468     int32_t reqSize = 0;
469     struct AudioMmapBufferDescriptor desc;
470     desc.filePath = nullptr;
471     for (int i = 0; i < 10; i++) {
472         EXPECT_NE(HDF_SUCCESS, render_->ReqMmapBuffer(render_, reqSize, &desc));
473     }
474 }
475 
476 /**
477  * @tc.number  SUB_Driver_Audio_GetMmapPosition_1000
478  * @tc.name  testCommonRenderGetMmapPosition010
479  * @tc.desc  Reliability of function(GetMmapPosition)
480  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition010, TestSize.Level1)481 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderGetMmapPosition010, TestSize.Level1)
482 {
483     uint64_t frames = 0;
484     struct AudioTimeStamp time;
485     time.tvNSec = 0;
486     time.tvSec = 0;
487 
488     int32_t ret = 0;
489     ASSERT_EQ(HDF_SUCCESS, render_->Start(render_));
490     int32_t i;
491     for (i = 0; i < 50; i++) {
492         ret = render_->GetMmapPosition(render_, &frames, &time);
493         ASSERT_EQ(ret, HDF_SUCCESS);
494     }
495     ret = render_->Stop(render_);
496 }
497 
498 /**
499  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0100
500  * @tc.name  testCommonRenderReqMmapBuffer001
501  * @tc.desc  Test input param
502  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer001, Function | MediumTest | Level1)503 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer001, Function | MediumTest | Level1)
504 {
505     int32_t reqSize = 256;
506     struct AudioMmapBufferDescriptor desc;
507     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
508 #if defined DISPLAY_COMMUNITY || defined ALSA_LIB_MODE
509     ASSERT_NE(ret, HDF_SUCCESS);
510 #else
511     ASSERT_EQ(ret, HDF_SUCCESS);
512 #endif
513 }
514 
515 /**
516  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0200
517  * @tc.name  testCommonRenderReqMmapBuffer002
518  * @tc.desc  Reliability of function(ReqMmapBuffer)
519  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer002, Function | MediumTest | Level1)520 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer002, Function | MediumTest | Level1)
521 {
522     int32_t reqSize = 1000;
523     struct AudioMmapBufferDescriptor desc;
524     int32_t i;
525     for (i = 0; i < 1000; i++) {
526         int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
527 #if defined DISPLAY_COMMUNITY || defined ALSA_LIB_MODE
528         ASSERT_NE(ret, HDF_SUCCESS);
529 #else
530         ASSERT_EQ(ret, HDF_SUCCESS);
531 #endif
532     }
533 }
534 
535 /**
536  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0400
537  * @tc.name  testCommonRenderReqMmapBuffer004
538  * @tc.desc  Test parameters with abnormal input
539  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer004, Function | MediumTest | Level2)540 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer004, Function | MediumTest | Level2)
541 {
542     int32_t reqSize = -1;
543     struct AudioMmapBufferDescriptor desc;
544     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
545     ASSERT_NE(ret, HDF_SUCCESS);
546 }
547 
548 /**
549  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0500
550  * @tc.name  testCommonRenderReqMmapBuffer005
551  * @tc.desc  Test parameters with abnormal input
552  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer005, Function | MediumTest | Level2)553 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer005, Function | MediumTest | Level2)
554 {
555     int32_t reqSize = 0;
556     struct AudioMmapBufferDescriptor desc;
557     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
558     ASSERT_NE(ret, HDF_SUCCESS);
559 }
560 
561 /**
562  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0700
563  * @tc.name  testCommonRenderReqMmapBuffer007
564  * @tc.desc  Test input param
565  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer007, Function | MediumTest | Level1)566 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer007, Function | MediumTest | Level1)
567 {
568     int32_t reqSize = 0;
569     struct AudioMmapBufferDescriptor desc;
570     desc.memoryFd = 0;
571     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
572     ASSERT_NE(ret, HDF_SUCCESS);
573 }
574 
575 /**
576  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0800
577  * @tc.name  testCommonRenderReqMmapBuffer008
578  * @tc.desc  Test input param
579  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer008, Function | MediumTest | Level1)580 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer008, Function | MediumTest | Level1)
581 {
582     int32_t reqSize = 0;
583     struct AudioMmapBufferDescriptor desc;
584     desc.totalBufferFrames = 0;
585     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
586     ASSERT_NE(ret, HDF_SUCCESS);
587 }
588 
589 /**
590  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_0900
591  * @tc.name  testCommonRenderReqMmapBuffer009
592  * @tc.desc  Test input param
593  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer009, Function | MediumTest | Level1)594 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer009, Function | MediumTest | Level1)
595 {
596     int32_t reqSize = 0;
597     struct AudioMmapBufferDescriptor desc;
598     desc.transferFrameSize = 0;
599     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
600     ASSERT_NE(ret, HDF_SUCCESS);
601 }
602 
603 /**
604  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_1000
605  * @tc.name  testCommonRenderReqMmapBuffer010
606  * @tc.desc  Test input param
607  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer010, Function | MediumTest | Level1)608 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer010, Function | MediumTest | Level1)
609 {
610     int32_t reqSize = 0;
611     struct AudioMmapBufferDescriptor desc;
612     desc.isShareable = 0;
613     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
614     ASSERT_NE(ret, HDF_SUCCESS);
615 }
616 
617 /**
618  * @tc.number  SUB_Driver_Audio_ReqMmapBuffer_1100
619  * @tc.name  testCommonRenderReqMmapBuffer011
620  * @tc.desc  Test input param
621  */
HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer011, Function | MediumTest | Level1)622 HWTEST_F(AudioUtRenderMmapTestAdditional, testCommonRenderReqMmapBuffer011, Function | MediumTest | Level1)
623 {
624     int32_t reqSize = 0;
625     struct AudioMmapBufferDescriptor desc;
626     desc.offset = 0;
627     int32_t ret = render_->ReqMmapBuffer(render_, reqSize, &desc);
628     ASSERT_NE(ret, HDF_SUCCESS);
629 }
630 } // end of namespace