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 #ifndef OHOS_DAUDIO_TEST_UTILS_H
17 #define OHOS_DAUDIO_TEST_UTILS_H
18 
19 #include <gtest/gtest.h>
20 #include <gmock/gmock.h>
21 
22 #include <v1_0/iaudio_callback.h>
23 #include <v1_0/iaudio_capture.h>
24 #include <v1_0/iaudio_render.h>
25 #include <v2_0/id_audio_callback.h>
26 
27 #include "daudio_errcode.h"
28 
29 namespace OHOS {
30 namespace HDI {
31 namespace DistributedAudio {
32 namespace Audio {
33 namespace V1_0 {
34 using OHOS::HDI::DistributedAudio::Audioext::V2_0::DAudioEvent;
35 using OHOS::HDI::DistributedAudio::Audioext::V2_0::AudioData;
36 using OHOS::HDI::DistributedAudio::Audioext::V2_0::AudioParameter;
37 using OHOS::HDI::DistributedAudio::Audioext::V2_0::CurrentTime;
38 using OHOS::HDI::DistributedAudio::Audioext::V2_0::IDAudioCallback;
39 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioCallback;
40 class MockIDAudioCallback : public IDAudioCallback {
41 public:
MockIDAudioCallback()42     MockIDAudioCallback() {}
~MockIDAudioCallback()43     ~MockIDAudioCallback() {}
44 
CreateStream(int32_t streamId)45     int32_t CreateStream(int32_t streamId) override
46     {
47         return DistributedHardware::DH_SUCCESS;
48     }
49 
DestroyStream(int32_t streamId)50     int32_t DestroyStream(int32_t streamId) override
51     {
52         return DistributedHardware::DH_SUCCESS;
53     }
54 
SetParameters(int32_t streamId,const AudioParameter & param)55     int32_t SetParameters(int32_t streamId, const AudioParameter &param) override
56     {
57         return DistributedHardware::DH_SUCCESS;
58     }
59 
NotifyEvent(int32_t streamId,const DAudioEvent & event)60     int32_t NotifyEvent(int32_t streamId, const DAudioEvent &event) override
61     {
62         return DistributedHardware::DH_SUCCESS;
63     }
64 
WriteStreamData(int32_t streamId,const AudioData & data)65     int32_t WriteStreamData(int32_t streamId, const AudioData &data) override
66     {
67         return DistributedHardware::DH_SUCCESS;
68     }
69 
ReadStreamData(int32_t streamId,AudioData & data)70     int32_t ReadStreamData(int32_t streamId, AudioData &data) override
71     {
72         return DistributedHardware::DH_SUCCESS;
73     }
74 
ReadMmapPosition(int32_t streamId,uint64_t & frames,CurrentTime & time)75     int32_t ReadMmapPosition(int32_t streamId, uint64_t &frames, CurrentTime &time) override
76     {
77         return DistributedHardware::DH_SUCCESS;
78     }
79 
RefreshAshmemInfo(int32_t streamId,int fd,int32_t ashmemLength,int32_t lengthPerTrans)80     int32_t RefreshAshmemInfo(int32_t streamId, int fd, int32_t ashmemLength, int32_t lengthPerTrans) override
81     {
82         return DistributedHardware::DH_SUCCESS;
83     }
84 };
85 
86 class MockIAudioRender : public IAudioRender {
87 public:
MockIAudioRender()88     MockIAudioRender() {}
~MockIAudioRender()89     ~MockIAudioRender() {}
90 
GetLatency(uint32_t & ms)91     int32_t GetLatency(uint32_t &ms) override
92     {
93         return DistributedHardware::DH_SUCCESS;
94     }
95 
RenderFrame(const std::vector<int8_t> & frame,uint64_t & replyBytes)96     int32_t RenderFrame(const std::vector<int8_t> &frame, uint64_t &replyBytes) override
97     {
98         return DistributedHardware::DH_SUCCESS;
99     }
100 
GetRenderPosition(uint64_t & frames,AudioTimeStamp & time)101     int32_t GetRenderPosition(uint64_t &frames, AudioTimeStamp &time) override
102     {
103         return DistributedHardware::DH_SUCCESS;
104     }
105 
SetRenderSpeed(float speed)106     int32_t SetRenderSpeed(float speed) override
107     {
108         return DistributedHardware::DH_SUCCESS;
109     }
110 
GetRenderSpeed(float & speed)111     int32_t GetRenderSpeed(float &speed) override
112     {
113         return DistributedHardware::DH_SUCCESS;
114     }
115 
SetChannelMode(AudioChannelMode mode)116     int32_t SetChannelMode(AudioChannelMode mode) override
117     {
118         return DistributedHardware::DH_SUCCESS;
119     }
120 
GetChannelMode(AudioChannelMode & mode)121     int32_t GetChannelMode(AudioChannelMode &mode) override
122     {
123         return DistributedHardware::DH_SUCCESS;
124     }
125 
RegCallback(const sptr<IAudioCallback> & audioCallback,int8_t cookie)126     int32_t RegCallback(const sptr<IAudioCallback> &audioCallback, int8_t cookie) override
127     {
128         return DistributedHardware::DH_SUCCESS;
129     }
130 
DrainBuffer(AudioDrainNotifyType & type)131     int32_t DrainBuffer(AudioDrainNotifyType &type) override
132     {
133         return DistributedHardware::DH_SUCCESS;
134     }
135 
IsSupportsDrain(bool & support)136     int32_t IsSupportsDrain(bool &support) override
137     {
138         return DistributedHardware::DH_SUCCESS;
139     }
140 
CheckSceneCapability(const AudioSceneDescriptor & scene,bool & supported)141     int32_t CheckSceneCapability(const AudioSceneDescriptor &scene, bool &supported) override
142     {
143         return DistributedHardware::DH_SUCCESS;
144     }
145 
SelectScene(const AudioSceneDescriptor & scene)146     int32_t SelectScene(const AudioSceneDescriptor &scene) override
147     {
148         return DistributedHardware::DH_SUCCESS;
149     }
150 
SetMute(bool mute)151     int32_t SetMute(bool mute) override
152     {
153         return DistributedHardware::DH_SUCCESS;
154     }
155 
GetMute(bool & mute)156     int32_t GetMute(bool &mute) override
157     {
158         return DistributedHardware::DH_SUCCESS;
159     }
160 
SetVolume(float volume)161     int32_t SetVolume(float volume) override
162     {
163         return DistributedHardware::DH_SUCCESS;
164     }
165 
GetVolume(float & volume)166     int32_t GetVolume(float &volume) override
167     {
168         return DistributedHardware::DH_SUCCESS;
169     }
170 
GetGainThreshold(float & min,float & max)171     int32_t GetGainThreshold(float &min, float &max) override
172     {
173         return DistributedHardware::DH_SUCCESS;
174     }
175 
SetGain(float gain)176     int32_t SetGain(float gain) override
177     {
178         return DistributedHardware::DH_SUCCESS;
179     }
180 
GetGain(float & gain)181     int32_t GetGain(float &gain) override
182     {
183         return DistributedHardware::DH_SUCCESS;
184     }
185 
GetFrameSize(uint64_t & size)186     int32_t GetFrameSize(uint64_t &size) override
187     {
188         return DistributedHardware::DH_SUCCESS;
189     }
190 
GetFrameCount(uint64_t & count)191     int32_t GetFrameCount(uint64_t &count) override
192     {
193         return DistributedHardware::DH_SUCCESS;
194     }
195 
SetSampleAttributes(const AudioSampleAttributes & attrs)196     int32_t SetSampleAttributes(const AudioSampleAttributes &attrs) override
197     {
198         return DistributedHardware::DH_SUCCESS;
199     }
200 
GetSampleAttributes(AudioSampleAttributes & attrs)201     int32_t GetSampleAttributes(AudioSampleAttributes &attrs) override
202     {
203         return DistributedHardware::DH_SUCCESS;
204     }
205 
GetCurrentChannelId(uint32_t & channelId)206     int32_t GetCurrentChannelId(uint32_t &channelId) override
207     {
208         return DistributedHardware::DH_SUCCESS;
209     }
210 
SetExtraParams(const std::string & keyValueList)211     int32_t SetExtraParams(const std::string &keyValueList) override
212     {
213         return DistributedHardware::DH_SUCCESS;
214     }
215 
GetExtraParams(std::string & keyValueList)216     int32_t GetExtraParams(std::string &keyValueList) override
217     {
218         return DistributedHardware::DH_SUCCESS;
219     }
220 
ReqMmapBuffer(int32_t reqSize,AudioMmapBufferDescriptor & desc)221     int32_t ReqMmapBuffer(int32_t reqSize, AudioMmapBufferDescriptor &desc) override
222     {
223         return DistributedHardware::DH_SUCCESS;
224     }
225 
GetMmapPosition(uint64_t & frames,AudioTimeStamp & time)226     int32_t GetMmapPosition(uint64_t &frames, AudioTimeStamp &time) override
227     {
228         return DistributedHardware::DH_SUCCESS;
229     }
230 
AddAudioEffect(uint64_t effectid)231     int32_t AddAudioEffect(uint64_t effectid) override
232     {
233         return DistributedHardware::DH_SUCCESS;
234     }
235 
RemoveAudioEffect(uint64_t effectid)236     int32_t RemoveAudioEffect(uint64_t effectid) override
237     {
238         return DistributedHardware::DH_SUCCESS;
239     }
240 
GetFrameBufferSize(uint64_t & bufferSize)241     int32_t GetFrameBufferSize(uint64_t &bufferSize) override
242     {
243         return DistributedHardware::DH_SUCCESS;
244     }
245 
Start()246     int32_t Start() override
247     {
248         return DistributedHardware::DH_SUCCESS;
249     }
250 
Stop()251     int32_t Stop() override
252     {
253         return DistributedHardware::DH_SUCCESS;
254     }
255 
Pause()256     int32_t Pause() override
257     {
258         return DistributedHardware::DH_SUCCESS;
259     }
260 
Resume()261     int32_t Resume() override
262     {
263         return DistributedHardware::DH_SUCCESS;
264     }
265 
Flush()266     int32_t Flush() override
267     {
268         return DistributedHardware::DH_SUCCESS;
269     }
270 
TurnStandbyMode()271     int32_t TurnStandbyMode() override
272     {
273         return DistributedHardware::DH_SUCCESS;
274     }
275 
AudioDevDump(int32_t range,int32_t fd)276     int32_t AudioDevDump(int32_t range, int32_t fd) override
277     {
278         return DistributedHardware::DH_SUCCESS;
279     }
280 
IsSupportsPauseAndResume(bool & supportPause,bool & supportResume)281     int32_t IsSupportsPauseAndResume(bool &supportPause, bool &supportResume) override
282     {
283         return DistributedHardware::DH_SUCCESS;
284     }
285 };
286 
287 class MockIAudioCapture : public IAudioCapture {
288 public:
MockIAudioCapture()289     MockIAudioCapture() {}
~MockIAudioCapture()290     ~MockIAudioCapture() {}
291 
CaptureFrame(std::vector<int8_t> & frame,uint64_t & replyBytes)292     int32_t CaptureFrame(std::vector<int8_t> &frame, uint64_t &replyBytes) override
293     {
294         return DistributedHardware::DH_SUCCESS;
295     }
296 
GetCapturePosition(uint64_t & frames,AudioTimeStamp & time)297     int32_t GetCapturePosition(uint64_t &frames, AudioTimeStamp &time) override
298     {
299         return DistributedHardware::DH_SUCCESS;
300     }
301 
CheckSceneCapability(const AudioSceneDescriptor & scene,bool & supported)302     int32_t CheckSceneCapability(const AudioSceneDescriptor &scene, bool &supported) override
303     {
304         return DistributedHardware::DH_SUCCESS;
305     }
306 
SelectScene(const AudioSceneDescriptor & scene)307     int32_t SelectScene(const AudioSceneDescriptor &scene) override
308     {
309         return DistributedHardware::DH_SUCCESS;
310     }
311 
SetMute(bool mute)312     int32_t SetMute(bool mute) override
313     {
314         return DistributedHardware::DH_SUCCESS;
315     }
316 
GetMute(bool & mute)317     int32_t GetMute(bool &mute) override
318     {
319         return DistributedHardware::DH_SUCCESS;
320     }
321 
SetVolume(float volume)322     int32_t SetVolume(float volume) override
323     {
324         return DistributedHardware::DH_SUCCESS;
325     }
326 
GetVolume(float & volume)327     int32_t GetVolume(float &volume) override
328     {
329         return DistributedHardware::DH_SUCCESS;
330     }
331 
GetGainThreshold(float & min,float & max)332     int32_t GetGainThreshold(float &min, float &max) override
333     {
334         return DistributedHardware::DH_SUCCESS;
335     }
336 
GetGain(float & gain)337     int32_t GetGain(float &gain) override
338     {
339         return DistributedHardware::DH_SUCCESS;
340     }
341 
SetGain(float gain)342     int32_t SetGain(float gain) override
343     {
344         return DistributedHardware::DH_SUCCESS;
345     }
346 
GetFrameSize(uint64_t & size)347     int32_t GetFrameSize(uint64_t &size) override
348     {
349         return DistributedHardware::DH_SUCCESS;
350     }
351 
GetFrameCount(uint64_t & count)352     int32_t GetFrameCount(uint64_t &count) override
353     {
354         return DistributedHardware::DH_SUCCESS;
355     }
356 
SetSampleAttributes(const AudioSampleAttributes & attrs)357     int32_t SetSampleAttributes(const AudioSampleAttributes &attrs) override
358     {
359         return DistributedHardware::DH_SUCCESS;
360     }
361 
GetSampleAttributes(AudioSampleAttributes & attrs)362     int32_t GetSampleAttributes(AudioSampleAttributes &attrs) override
363     {
364         return DistributedHardware::DH_SUCCESS;
365     }
366 
GetCurrentChannelId(uint32_t & channelId)367     int32_t GetCurrentChannelId(uint32_t &channelId) override
368     {
369         return DistributedHardware::DH_SUCCESS;
370     }
371 
SetExtraParams(const std::string & keyValueList)372     int32_t SetExtraParams(const std::string &keyValueList) override
373     {
374         return DistributedHardware::DH_SUCCESS;
375     }
376 
GetExtraParams(std::string & keyValueList)377     int32_t GetExtraParams(std::string &keyValueList) override
378     {
379         return DistributedHardware::DH_SUCCESS;
380     }
381 
ReqMmapBuffer(int32_t reqSize,AudioMmapBufferDescriptor & desc)382     int32_t ReqMmapBuffer(int32_t reqSize, AudioMmapBufferDescriptor &desc) override
383     {
384         return DistributedHardware::DH_SUCCESS;
385     }
386 
GetMmapPosition(uint64_t & frames,AudioTimeStamp & time)387     int32_t GetMmapPosition(uint64_t &frames, AudioTimeStamp &time) override
388     {
389         return DistributedHardware::DH_SUCCESS;
390     }
391 
AddAudioEffect(uint64_t effectid)392     int32_t AddAudioEffect(uint64_t effectid) override
393     {
394         return DistributedHardware::DH_SUCCESS;
395     }
396 
RemoveAudioEffect(uint64_t effectid)397     int32_t RemoveAudioEffect(uint64_t effectid) override
398     {
399         return DistributedHardware::DH_SUCCESS;
400     }
401 
GetFrameBufferSize(uint64_t & bufferSize)402     int32_t GetFrameBufferSize(uint64_t &bufferSize) override
403     {
404         return DistributedHardware::DH_SUCCESS;
405     }
406 
Start()407     int32_t Start() override
408     {
409         return DistributedHardware::DH_SUCCESS;
410     }
411 
Stop()412     int32_t Stop() override
413     {
414         return DistributedHardware::DH_SUCCESS;
415     }
416 
Pause()417     int32_t Pause() override
418     {
419         return DistributedHardware::DH_SUCCESS;
420     }
421 
Resume()422     int32_t Resume() override
423     {
424         return DistributedHardware::DH_SUCCESS;
425     }
426 
Flush()427     int32_t Flush() override
428     {
429         return DistributedHardware::DH_SUCCESS;
430     }
431 
TurnStandbyMode()432     int32_t TurnStandbyMode() override
433     {
434         return DistributedHardware::DH_SUCCESS;
435     }
436 
AudioDevDump(int32_t range,int32_t fd)437     int32_t AudioDevDump(int32_t range, int32_t fd) override
438     {
439         return DistributedHardware::DH_SUCCESS;
440     }
441 
IsSupportsPauseAndResume(bool & supportPause,bool & supportResume)442     int32_t IsSupportsPauseAndResume(bool &supportPause, bool &supportResume) override
443     {
444         return DistributedHardware::DH_SUCCESS;
445     }
446 };
447 
448 class MockIAudioParamCallback : public IAudioCallback {
449 public:
MockIAudioParamCallback()450     MockIAudioParamCallback() {}
~MockIAudioParamCallback()451     ~MockIAudioParamCallback() {}
452 
RenderCallback(AudioCallbackType type,int8_t & reserved,int8_t & cookie)453     int32_t RenderCallback(AudioCallbackType type, int8_t &reserved, int8_t &cookie) override
454     {
455         return DistributedHardware::DH_SUCCESS;
456     }
457 
ParamCallback(AudioExtParamKey key,const std::string & condition,const std::string & value,int8_t & reserved,int8_t cookie)458     int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value,
459         int8_t &reserved, int8_t cookie) override
460     {
461         return DistributedHardware::DH_SUCCESS;
462     }
463 };
464 
465 class MockRevertIAudioParamCallback : public IAudioCallback {
466 public:
MockRevertIAudioParamCallback()467     MockRevertIAudioParamCallback() {}
~MockRevertIAudioParamCallback()468     ~MockRevertIAudioParamCallback() {}
469 
RenderCallback(AudioCallbackType type,int8_t & reserved,int8_t & cookie)470     int32_t RenderCallback(AudioCallbackType type, int8_t &reserved, int8_t &cookie) override
471     {
472         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
473     }
474 
ParamCallback(AudioExtParamKey key,const std::string & condition,const std::string & value,int8_t & reserved,int8_t cookie)475     int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value,
476         int8_t &reserved, int8_t cookie) override
477     {
478         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
479     }
480 };
481 
482 class MockRevertIDAudioCallback : public IDAudioCallback {
483 public:
MockRevertIDAudioCallback()484     MockRevertIDAudioCallback() {}
~MockRevertIDAudioCallback()485     ~MockRevertIDAudioCallback() {}
486 
CreateStream(int32_t streamId)487     int32_t CreateStream(int32_t streamId) override
488     {
489         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
490     }
491 
DestroyStream(int32_t streamId)492     int32_t DestroyStream(int32_t streamId) override
493     {
494         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
495     }
496 
SetParameters(int32_t streamId,const AudioParameter & param)497     int32_t SetParameters(int32_t streamId, const AudioParameter &param) override
498     {
499         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
500     }
501 
NotifyEvent(int32_t streamId,const DAudioEvent & event)502     int32_t NotifyEvent(int32_t streamId, const DAudioEvent &event) override
503     {
504         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
505     }
506 
WriteStreamData(int32_t streamId,const AudioData & data)507     int32_t WriteStreamData(int32_t streamId, const AudioData &data) override
508     {
509         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
510     }
511 
ReadStreamData(int32_t streamId,AudioData & data)512     int32_t ReadStreamData(int32_t streamId, AudioData &data) override
513     {
514         return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL;
515     }
516 
ReadMmapPosition(int32_t streamId,uint64_t & frames,CurrentTime & time)517     int32_t ReadMmapPosition(int32_t streamId, uint64_t &frames, CurrentTime &time) override
518     {
519         return DistributedHardware::DH_SUCCESS;
520     }
521 
RefreshAshmemInfo(int32_t streamId,int fd,int32_t ashmemLength,int32_t lengthPerTrans)522     int32_t RefreshAshmemInfo(int32_t streamId, int fd, int32_t ashmemLength, int32_t lengthPerTrans) override
523     {
524         return DistributedHardware::DH_SUCCESS;
525     }
526 };
527 } // V1_0
528 } // AudioExt
529 } // Distributedaudio
530 } // HDI
531 } // OHOS
532 #endif // OHOS_DAUDIO_TEST_UTILS_H