• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "iservice_registry.h"
18 #include "system_ability_definition.h"
19 
20 #include "audio_service.h"
21 #include "audio_service_log.h"
22 #include "audio_errors.h"
23 #include "audio_system_manager.h"
24 
25 #include "audio_process_proxy.h"
26 #include "audio_process_in_client.h"
27 #include "fast_audio_stream.h"
28 #include "audio_endpoint_private.h"
29 #include "pro_renderer_stream_impl.h"
30 #include "core_service_handler.h"
31 #include "audio_workgroup.h"
32 #include "rtg_interface.h"
33 #include "concurrent_task_client.h"
34 #include "audio_resource_service.h"
35 #include "audio_endpoint.h"
36 
37 
38 using namespace testing::ext;
39 
40 namespace OHOS {
41 namespace AudioStandard {
42 std::shared_ptr<AudioProcessInClient> processClient_;
43 std::shared_ptr<FastAudioStream> fastAudioStream_;
44 const int32_t RENDERER_FLAGS = 0;
45 #ifdef HAS_FEATURE_INNERCAPTURER
46 const int32_t MEDIA_SERVICE_UID = 1013;
47 #endif
48 
49 static const uint32_t NORMAL_ENDPOINT_RELEASE_DELAY_TIME_MS = 3000; // 3s
50 static const uint32_t A2DP_ENDPOINT_RELEASE_DELAY_TIME = 3000; // 3s
51 static const uint32_t VOIP_ENDPOINT_RELEASE_DELAY_TIME = 200; // 200ms
52 static const uint32_t VOIP_REC_ENDPOINT_RELEASE_DELAY_TIME = 60; // 60ms
53 static const uint32_t A2DP_ENDPOINT_RE_CREATE_RELEASE_DELAY_TIME = 200; // 200ms
54 
55 class AudioServiceUnitTest : public testing::Test {
56 public:
57     static void SetUpTestCase(void);
58     static void TearDownTestCase(void);
59     void SetUp();
60     void TearDown();
61 };
62 
63 class AudioParameterCallbackTest : public AudioParameterCallback {
OnAudioParameterChange(const std::string networkId,const AudioParamKey key,const std::string & condition,const std::string & value)64     virtual void OnAudioParameterChange(const std::string networkId, const AudioParamKey key,
65         const std::string& condition, const std::string& value) {}
66 };
67 
SetUpTestCase(void)68 void AudioServiceUnitTest::SetUpTestCase(void)
69 {
70     // input testsuit setup step,setup invoked before all testcases
71 }
72 
TearDownTestCase(void)73 void AudioServiceUnitTest::TearDownTestCase(void)
74 {
75     // input testsuit teardown step,teardown invoked after all testcases
76 }
77 
SetUp(void)78 void AudioServiceUnitTest::SetUp(void)
79 {
80     // input testcase setup step,setup invoked before each testcases
81 }
82 
TearDown(void)83 void AudioServiceUnitTest::TearDown(void)
84 {
85     // input testcase teardown step,teardown invoked after each testcases
86 }
87 
88 /**
89  * @tc.name  : Test AudioProcessInClientInner API
90  * @tc.type  : FUNC
91  * @tc.number: AudioProcessInClientInner_001
92  * @tc.desc  : Test AudioProcessInClientInner interface using unsupported parameters.
93  */
94 HWTEST(AudioServiceUnitTest, AudioProcessInClientInner_001, TestSize.Level1)
95 {
96     AudioProcessConfig config;
97     config.appInfo.appPid = getpid();
98     config.appInfo.appUid = getuid();
99 
100     config.audioMode = AUDIO_MODE_PLAYBACK;
101 
102     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
103     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
104     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
105 
106     config.streamInfo.channels = STEREO;
107     config.streamInfo.encoding = ENCODING_PCM;
108     config.streamInfo.format = SAMPLE_S16LE;
109     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
110 
111     fastAudioStream_ = std::make_shared<FastAudioStream>(config.streamType,
112         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
113     processClient_ = AudioProcessInClient::Create(config, fastAudioStream_);
114     EXPECT_EQ(processClient_, nullptr);
115 }
116 /**
117  * @tc.name  : Test RegisterThreadPriorityOnStart API
118  * @tc.type  : FUNC
119  * @tc.number: RegisterThreadPriorityOnStart_001
120  * @tc.desc  : Test RegisterThreadPriorityOnStart interface using unsupported parameters.
121  */
122 HWTEST(AudioServiceUnitTest, RegisterThreadPriorityOnStart_001, TestSize.Level1)
123 {
124     AudioProcessConfig config;
125     config.appInfo.appPid = getpid();
126     config.appInfo.appUid = getuid();
127 
128     config.audioMode = AUDIO_MODE_PLAYBACK;
129 
130     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
131     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
132     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
133 
134     config.streamInfo.channels = STEREO;
135     config.streamInfo.encoding = ENCODING_PCM;
136     config.streamInfo.format = SAMPLE_S16LE;
137     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
138     StateChangeCmdType cmdType = CMD_FROM_CLIENT;
139     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
140         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
141     fastAudioStream->RegisterThreadPriorityOnStart(cmdType);
142     EXPECT_NE(fastAudioStream, nullptr);
143 
144     cmdType = CMD_FROM_SYSTEM;
145     fastAudioStream->RegisterThreadPriorityOnStart(cmdType);
146 
147     cmdType = static_cast<StateChangeCmdType>(2);
148     fastAudioStream->RegisterThreadPriorityOnStart(cmdType);
149 }
150 /**
151  * @tc.name  : Test RegisterThreadPriorityOnStart API
152  * @tc.type  : FUNC
153  * @tc.number: RegisterThreadPriorityOnStart_001
154  * @tc.desc  : Test RegisterThreadPriorityOnStart interface using unsupported parameters.
155  */
156 HWTEST(AudioServiceUnitTest, StartAudioStream_001, TestSize.Level1)
157 {
158     AudioProcessConfig config;
159     config.appInfo.appPid = getpid();
160     config.appInfo.appUid = getuid();
161 
162     config.audioMode = AUDIO_MODE_PLAYBACK;
163 
164     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
165     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
166     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
167 
168     config.streamInfo.channels = STEREO;
169     config.streamInfo.encoding = ENCODING_PCM;
170     config.streamInfo.format = SAMPLE_S16LE;
171     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
172     StateChangeCmdType cmdType = CMD_FROM_SYSTEM;
173     AudioStreamDeviceChangeReasonExt reason(AudioStreamDeviceChangeReasonExt::ExtEnum::NEW_DEVICE_AVAILABLE);
174     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
175         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
176     int ret = fastAudioStream->StartAudioStream(cmdType, reason);
177     EXPECT_EQ(ret, 0);
178 
179     cmdType = CMD_FROM_CLIENT;
180     ret = fastAudioStream->StartAudioStream(cmdType, reason);
181     EXPECT_EQ(ret, 0);
182 
183     cmdType = static_cast<StateChangeCmdType>(2);
184     fastAudioStream->StartAudioStream(cmdType, reason);
185     EXPECT_EQ(ret, 0);
186 }
187 /**
188  * @tc.name  : Test StopAudioStream API
189  * @tc.type  : FUNC
190  * @tc.number: StopAudioStream_001
191  * @tc.desc  : Test StopAudioStream interface using unsupported parameters.
192  */
193 HWTEST(AudioServiceUnitTest, StopAudioStream_001, TestSize.Level1)
194 {
195     AudioProcessConfig config;
196     config.appInfo.appPid = getpid();
197     config.appInfo.appUid = getuid();
198 
199     config.audioMode = AUDIO_MODE_PLAYBACK;
200 
201     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
202     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
203     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
204 
205     config.streamInfo.channels = STEREO;
206     config.streamInfo.encoding = ENCODING_PCM;
207     config.streamInfo.format = SAMPLE_S16LE;
208     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
209     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
210         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
211     int ret = fastAudioStream->StopAudioStream();
212     EXPECT_EQ(ret, 0);
213 }
214 /**
215  * @tc.name  : Test FetchDeviceForSplitStream API
216  * @tc.type  : FUNC
217  * @tc.number: FetchDeviceForSplitStream
218  * @tc.desc  : Test FetchDeviceForSplitStream interface using unsupported parameters.
219  */
220 HWTEST(AudioServiceUnitTest, FetchDeviceForSplitStream_001, TestSize.Level1)
221 {
222     AudioProcessConfig config;
223     config.appInfo.appPid = getpid();
224     config.appInfo.appUid = getuid();
225 
226     config.audioMode = AUDIO_MODE_PLAYBACK;
227 
228     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
229     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
230     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
231 
232     config.streamInfo.channels = STEREO;
233     config.streamInfo.encoding = ENCODING_PCM;
234     config.streamInfo.format = SAMPLE_S16LE;
235     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
236     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
237         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
238     fastAudioStream->FetchDeviceForSplitStream();
239     EXPECT_NE(fastAudioStream, nullptr);
240 }
241 /**
242  * @tc.name  : Test SetCallbacksWhenRestore API
243  * @tc.type  : FUNC
244  * @tc.number: SetCallbacksWhenRestore_001
245  * @tc.desc  : Test SetCallbacksWhenRestore interface using unsupported parameters.
246  */
247 HWTEST(AudioServiceUnitTest, SetCallbacksWhenRestore_001, TestSize.Level1)
248 {
249     AudioProcessConfig config;
250     config.appInfo.appPid = getpid();
251     config.appInfo.appUid = getuid();
252 
253     config.audioMode = AUDIO_MODE_PLAYBACK;
254 
255     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
256     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
257     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
258 
259     config.streamInfo.channels = STEREO;
260     config.streamInfo.encoding = ENCODING_PCM;
261     config.streamInfo.format = SAMPLE_S16LE;
262     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
263     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
264         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
265     int ret = fastAudioStream->SetCallbacksWhenRestore();
266     EXPECT_NE(ret, 0);
267 }
268 /**
269  * @tc.name  : Test RestoreAudioStream API
270  * @tc.type  : FUNC
271  * @tc.number: RestoreAudioStream_001
272  * @tc.desc  : Test RestoreAudioStream interface using unsupported parameters.
273  */
274 HWTEST(AudioServiceUnitTest, RestoreAudioStream_001, TestSize.Level1)
275 {
276     AudioProcessConfig config;
277     config.appInfo.appPid = getpid();
278     config.appInfo.appUid = getuid();
279 
280     config.audioMode = AUDIO_MODE_PLAYBACK;
281 
282     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
283     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
284     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
285 
286     config.streamInfo.channels = STEREO;
287     config.streamInfo.encoding = ENCODING_PCM;
288     config.streamInfo.format = SAMPLE_S16LE;
289     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
290     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
291         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
292     bool needStoreState = true;
293     int ret = fastAudioStream->RestoreAudioStream(needStoreState);
294     EXPECT_EQ(ret, 0);
295 
296     needStoreState = false;
297     ret = fastAudioStream->RestoreAudioStream(needStoreState);
298     EXPECT_EQ(ret, 0);
299 }
300 /**
301  * @tc.name  : Test JoincallbackLoop API
302  * @tc.type  : FUNC
303  * @tc.number: JoincallbackLoop_001
304  * @tc.desc  : Test JoincallbackLoop interface using unsupported parameters.
305  */
306 HWTEST(AudioServiceUnitTest, JoinCallbackLoop_001, TestSize.Level1)
307 {
308     AudioProcessConfig config;
309     config.appInfo.appPid = getpid();
310     config.appInfo.appUid = getuid();
311 
312     config.audioMode = AUDIO_MODE_PLAYBACK;
313 
314     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
315     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
316     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
317 
318     config.streamInfo.channels = STEREO;
319     config.streamInfo.encoding = ENCODING_PCM;
320     config.streamInfo.format = SAMPLE_S16LE;
321     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
322     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
323         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
324     fastAudioStream->JoinCallbackLoop();
325     EXPECT_NE(fastAudioStream, nullptr);
326 }
327 /**
328  * @tc.name  : Test SetDefaultoutputDevice API
329  * @tc.type  : FUNC
330  * @tc.number: SetDefaultoutputDevice_001
331  * @tc.desc  : Test SetDefaultoutputDevice interface using unsupported parameters.
332  */
333 HWTEST(AudioServiceUnitTest, SetDefaultOutputDevice_001, TestSize.Level1)
334 {
335     AudioProcessConfig config;
336     config.appInfo.appPid = getpid();
337     config.appInfo.appUid = getuid();
338 
339     config.audioMode = AUDIO_MODE_PLAYBACK;
340 
341     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
342     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
343     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
344 
345     config.streamInfo.channels = STEREO;
346     config.streamInfo.encoding = ENCODING_PCM;
347     config.streamInfo.format = SAMPLE_S16LE;
348     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
349     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
350         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
351     DeviceType expectedDevice = static_cast<DeviceType>(1);
352     int ret = fastAudioStream->SetDefaultOutputDevice(expectedDevice);
353     EXPECT_NE(ret, 0);
354 
355     expectedDevice = static_cast<DeviceType>(2);
356     ret = fastAudioStream->SetDefaultOutputDevice(expectedDevice);
357     EXPECT_NE(ret, 0);
358 }
359 /**
360  * @tc.name  : Test PauseAudiStream API
361  * @tc.type  : FUNC
362  * @tc.number: PauseAudiStream
363  * @tc.desc  : Test PauseAudiStream interface using unsupported parameters.
364  */
365 HWTEST(AudioServiceUnitTest, PauseAudioStream_001, TestSize.Level1)
366 {
367     AudioProcessConfig config;
368     config.appInfo.appPid = getpid();
369     config.appInfo.appUid = getuid();
370 
371     config.audioMode = AUDIO_MODE_PLAYBACK;
372 
373     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
374     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
375     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
376 
377     config.streamInfo.channels = STEREO;
378     config.streamInfo.encoding = ENCODING_PCM;
379     config.streamInfo.format = SAMPLE_S16LE;
380     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
381     StateChangeCmdType cmdType = static_cast<StateChangeCmdType>(2);
382     std::unique_ptr<FastAudioStream> fastAudioStream = std::make_unique<FastAudioStream>(config.streamType,
383         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
384     int ret = fastAudioStream->PauseAudioStream(cmdType);
385     EXPECT_EQ(ret, 0);
386 
387     cmdType = CMD_FROM_CLIENT;
388     ret = fastAudioStream->PauseAudioStream(cmdType);
389     EXPECT_EQ(ret, 0);
390 
391     cmdType = CMD_FROM_SYSTEM;
392     ret = fastAudioStream->PauseAudioStream(cmdType);
393     EXPECT_EQ(ret, 0);
394 }
395 /**
396  * @tc.name  : Test JoinCallbackLoop
397  * @tc.number: Audio_Renderer_JoinCallbackLoop_001
398  * @tc.desc  : Test JoinCallbackLoop interface
399  */
400 HWTEST(AudioRendererUnitTest, Audio_Renderer_JoinCallbackLoop_001, TestSize.Level1)
401 {
402     AudioProcessConfig config;
403     config.appInfo.appPid = getpid();
404     config.appInfo.appUid = getuid();
405 
406     config.audioMode = AUDIO_MODE_PLAYBACK;
407 
408     config.rendererInfo.contentType = CONTENT_TYPE_MUSIC;
409     config.rendererInfo.streamUsage = STREAM_USAGE_MEDIA;
410     config.rendererInfo.rendererFlags = RENDERER_FLAGS;
411 
412     config.streamInfo.channels = STEREO;
413     config.streamInfo.encoding = ENCODING_PCM;
414     config.streamInfo.format = SAMPLE_S16LE;
415     config.streamInfo.samplingRate = SAMPLE_RATE_64000;
416 
417     std::shared_ptr<FastAudioStream> fastAudioStream = std::make_shared<FastAudioStream>(config.streamType,
418         AUDIO_MODE_PLAYBACK, config.appInfo.appUid);
419     fastAudioStream->JoinCallbackLoop();
420     std::shared_ptr<AudioProcessInClient> processClient = AudioProcessInClient::Create(config, fastAudioStream_);
421     fastAudioStream->JoinCallbackLoop();
422     EXPECT_EQ(processClient_, nullptr);
423 }
424 
425 /**
426  * @tc.name  : Test AudioDeviceDescriptor API
427  * @tc.type  : FUNC
428  * @tc.number: AudioDeviceDescriptor_001
429  * @tc.desc  : Test AudioDeviceDescriptor interface.
430  */
431 HWTEST(AudioServiceUnitTest, AudioDeviceDescriptor_001, TestSize.Level1)
432 {
433     DeviceType type = DeviceType::DEVICE_TYPE_SPEAKER;
434     DeviceRole role = DeviceRole::OUTPUT_DEVICE;
435     int32_t interruptGroupId = 1;
436     int32_t volumeGroupId = 1;
437     std::string networkId = "LocalDevice";
438     std::shared_ptr<AudioDeviceDescriptor> audioDeviceDescriptor =
439         std::make_shared<AudioDeviceDescriptor>(type, role, interruptGroupId, volumeGroupId, networkId);
440     EXPECT_NE(audioDeviceDescriptor, nullptr);
441 
442     AudioDeviceDescriptor deviceDescriptor;
443     deviceDescriptor.deviceType_ = type;
444     deviceDescriptor.deviceRole_ = role;
445     audioDeviceDescriptor = std::make_shared<AudioDeviceDescriptor>(deviceDescriptor);
446     EXPECT_NE(audioDeviceDescriptor, nullptr);
447 
448     std::string deviceName = "";
449     std::string macAddress = "";
450     audioDeviceDescriptor->SetDeviceInfo(deviceName, macAddress);
451 
452     DeviceStreamInfo audioStreamInfo = {
453         SAMPLE_RATE_48000,
454         ENCODING_PCM,
455         SAMPLE_S16LE,
456         CH_LAYOUT_STEREO
457     };
458     int32_t channelMask = 1;
459     audioDeviceDescriptor->SetDeviceCapability({ audioStreamInfo }, channelMask);
460 
461     DeviceStreamInfo streamInfo = audioDeviceDescriptor->GetDeviceStreamInfo();
462     EXPECT_EQ(streamInfo.channelLayout, audioStreamInfo.channelLayout);
463     EXPECT_EQ(streamInfo.encoding, audioStreamInfo.encoding);
464     EXPECT_EQ(streamInfo.format, audioStreamInfo.format);
465     EXPECT_EQ(streamInfo.samplingRate, audioStreamInfo.samplingRate);
466 }
467 
468 /**
469  * @tc.name  : Test UpdateMuteControlSet API
470  * @tc.type  : FUNC
471  * @tc.number: AudioServiceUpdateMuteControlSet_001
472  * @tc.desc  : Test UpdateMuteControlSet interface.
473  */
474 HWTEST(AudioServiceUnitTest, AudioServiceUpdateMuteControlSet_001, TestSize.Level1)
475 {
476     AudioService::GetInstance()->UpdateMuteControlSet(1, true);
477     AudioService::GetInstance()->UpdateMuteControlSet(MAX_STREAMID + 1, true);
478     AudioService::GetInstance()->UpdateMuteControlSet(MAX_STREAMID - 1, false);
479     AudioService::GetInstance()->UpdateMuteControlSet(MAX_STREAMID - 1, true);
480     AudioService::GetInstance()->UpdateMuteControlSet(MAX_STREAMID - 1, false);
481     AudioService::GetInstance()->UpdateMuteControlSet(MAX_STREAMID - 1, true);
482     AudioService::GetInstance()->RemoveIdFromMuteControlSet(MAX_STREAMID - 1);
483 }
484 
485 #ifdef HAS_FEATURE_INNERCAPTURER
486 /**
487  * @tc.name  : Test ShouldBeInnerCap API
488  * @tc.type  : FUNC
489  * @tc.number: AudioServiceShouldBeInnerCap_001
490  * @tc.desc  : Test ShouldBeInnerCap interface.
491  */
492 HWTEST(AudioServiceUnitTest, AudioServiceShouldBeInnerCap_001, TestSize.Level1)
493 {
494     AudioProcessConfig config = {};
495     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
496     bool ret = AudioService::GetInstance()->ShouldBeInnerCap(config, 0);
497     EXPECT_FALSE(ret);
498     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PRIVATE;
499     ret = AudioService::GetInstance()->ShouldBeInnerCap(config, 0);
500     EXPECT_FALSE(ret);
501 }
502 
503 /**
504  * @tc.name  : Test ShouldBeDualTone API
505  * @tc.type  : FUNC
506  * @tc.number: AudioServiceShouldBeDualTone_001
507  * @tc.desc  : Test ShouldBeDualTone interface.
508  */
509 HWTEST(AudioServiceUnitTest, AudioServiceShouldBeDualTone_001, TestSize.Level1)
510 {
511     AudioProcessConfig config = {};
512     config.audioMode = AUDIO_MODE_RECORD;
513     config.rendererInfo.streamUsage = STREAM_USAGE_ALARM;
514     bool ret = AudioService::GetInstance()->ShouldBeDualTone(config);
515     EXPECT_FALSE(ret);
516     config.audioMode = AUDIO_MODE_PLAYBACK;
517     ret = AudioService::GetInstance()->ShouldBeDualTone(config);
518     EXPECT_FALSE(ret);
519 }
520 
521 /**
522  * @tc.name  : Test OnInitInnerCapList API
523  * @tc.type  : FUNC
524  * @tc.number: AudioServiceOnInitInnerCapList_001
525  * @tc.desc  : Test OnInitInnerCapList interface.
526  */
527 HWTEST(AudioServiceUnitTest, AudioServiceOnInitInnerCapList_001, TestSize.Level1)
528 {
529     int32_t floatRet = 0;
530 
531     AudioService::GetInstance()->OnInitInnerCapList(1);
532     AudioService::GetInstance()->InitAllDupBuffer(1);
533     AudioService::GetInstance()->ResetAudioEndpoint();
534     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
535     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
536     EXPECT_EQ(0, floatRet);
537 
538     AudioProcessConfig config = {};
539     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
540     AudioService::GetInstance()->GetAudioProcess(config);
541     AudioService::GetInstance()->OnInitInnerCapList(1);
542     AudioService::GetInstance()->InitAllDupBuffer(1);
543     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
544     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
545     AudioService::GetInstance()->OnInitInnerCapList(1);
546 
547     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
548     AudioService::GetInstance()->OnInitInnerCapList(1);
549     AudioService::GetInstance()->InitAllDupBuffer(1);
550     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
551     AudioService::GetInstance()->OnUpdateInnerCapList(1);
552     EXPECT_EQ(0, floatRet);
553     config = {};
554     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PRIVATE;
555     config.audioMode = AUDIO_MODE_RECORD;
556     config.streamType = STREAM_VOICE_CALL;
557     config.streamInfo.channels = AudioChannel::MONO;
558     config.streamInfo.samplingRate = SAMPLE_RATE_48000;
559     config.streamInfo.format = SAMPLE_S16LE;
560     config.streamInfo.encoding = ENCODING_PCM;
561     auto audioProcess = AudioService::GetInstance()->GetAudioProcess(config);
562     EXPECT_EQ(audioProcess, nullptr);
563 
564     AudioService::GetInstance()->OnInitInnerCapList(1);
565     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
566     EXPECT_EQ(0, floatRet);
567     floatRet = AudioService::GetInstance()->GetMaxAmplitude(false);
568     EXPECT_EQ(0, floatRet);
569     int32_t ret = AudioService::GetInstance()->EnableDualToneList(MAX_STREAMID - 1);
570     EXPECT_EQ(SUCCESS, ret);
571     ret = AudioService::GetInstance()->DisableDualToneList(MAX_STREAMID - 1);
572     EXPECT_EQ(SUCCESS, ret);
573     AudioService::GetInstance()->ResetAudioEndpoint();
574     ret = AudioService::GetInstance()->OnProcessRelease(audioProcess, false);
575     EXPECT_NE(SUCCESS, ret);
576 }
577 
578 /**
579  * @tc.name  : Test IsEndpointTypeVoip API
580  * @tc.type  : FUNC
581  * @tc.number: AudioServiceIsEndpointTypeVoip_001
582  * @tc.desc  : Test IsEndpointTypeVoip interface.
583  */
584 HWTEST(AudioServiceUnitTest, AudioServiceIsEndpointTypeVoip_001, TestSize.Level1)
585 {
586     AudioProcessConfig config = {};
587     AudioDeviceDescriptor info(AudioDeviceDescriptor::DEVICE_INFO);
588     config.rendererInfo.streamUsage = STREAM_USAGE_INVALID;
589     config.capturerInfo.sourceType = SOURCE_TYPE_VOICE_COMMUNICATION;
590     config.rendererInfo.originalFlag = AUDIO_FLAG_VOIP_FAST;
591     bool ret = AudioService::GetInstance()->IsEndpointTypeVoip(config, info);
592     EXPECT_EQ(true, ret);
593 
594     config.capturerInfo.sourceType = SOURCE_TYPE_INVALID;
595     ret = AudioService::GetInstance()->IsEndpointTypeVoip(config, info);
596     EXPECT_FALSE(ret);
597 
598     config.rendererInfo.streamUsage = STREAM_USAGE_VIDEO_COMMUNICATION;
599     ret = AudioService::GetInstance()->IsEndpointTypeVoip(config, info);
600     EXPECT_TRUE(ret);
601 
602     config.rendererInfo.streamUsage = STREAM_USAGE_VOICE_COMMUNICATION;
603     ret = AudioService::GetInstance()->IsEndpointTypeVoip(config, info);
604     EXPECT_TRUE(ret);
605 }
606 
607 /**
608  * @tc.name  : Test GetCapturerBySessionID API
609  * @tc.type  : FUNC
610  * @tc.number: AudioServiceGetCapturerBySessionID_001
611  * @tc.desc  : Test GetCapturerBySessionID interface.
612  */
613 HWTEST(AudioServiceUnitTest, AudioServiceGetCapturerBySessionID_001, TestSize.Level1)
614 {
615     AudioProcessConfig config = {};
616     config.audioMode = AUDIO_MODE_RECORD;
617     config.streamInfo.channels = STEREO;
618     config.streamInfo.channelLayout = CH_LAYOUT_STEREO;
619     config.streamType = STREAM_MUSIC;
620 
621     int32_t result;
622     AudioService::GetInstance()->RemoveCapturer(-1);
623     sptr<OHOS::AudioStandard::IpcStreamInServer> server = AudioService::GetInstance()->GetIpcStream(config, result);
624     EXPECT_EQ(server, nullptr);
625 
626     auto ret = AudioService::GetInstance()->GetCapturerBySessionID(0);
627     EXPECT_EQ(nullptr, ret);
628 }
629 
630 /**
631  * @tc.name  : Test ShouldBeDualTone API
632  * @tc.type  : FUNC
633  * @tc.number: AudioServiceShouldBeDualTone_002
634  * @tc.desc  : Test ShouldBeDualTone interface.
635  */
636 HWTEST(AudioServiceUnitTest, AudioServiceShouldBeDualTone_002, TestSize.Level1)
637 {
638     AudioProcessConfig config = {};
639     config.audioMode = AUDIO_MODE_RECORD;
640     bool ret;
641     ret = AudioService::GetInstance()->ShouldBeDualTone(config);
642     EXPECT_EQ(ret, false);
643     config.audioMode = AUDIO_MODE_PLAYBACK;
644     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
645     ret = AudioService::GetInstance()->ShouldBeDualTone(config);
646     EXPECT_FALSE(ret);
647 }
648 
649 /**
650  * @tc.name  : Test FilterAllFastProcess API
651  * @tc.type  : FUNC
652  * @tc.number: AudioServiceFilterAllFastProcess_001
653  * @tc.desc  : Test FilterAllFastProcess interface.
654  */
655 HWTEST(AudioServiceUnitTest, AudioServiceFilterAllFastProcess_001, TestSize.Level1)
656 {
657     int32_t floatRet = 0;
658     AudioService::GetInstance()->FilterAllFastProcess();
659     AudioService::GetInstance()->OnInitInnerCapList(1);
660     AudioService::GetInstance()->ResetAudioEndpoint();
661     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
662     EXPECT_EQ(0, floatRet);
663 
664     AudioProcessConfig config = {};
665     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
666     AudioService::GetInstance()->GetAudioProcess(config);
667     AudioService::GetInstance()->OnInitInnerCapList(1);
668     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
669     AudioService::GetInstance()->OnInitInnerCapList(1);
670 
671     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
672     AudioService::GetInstance()->OnInitInnerCapList(1);
673     AudioService::GetInstance()->OnUpdateInnerCapList(1);
674     EXPECT_EQ(0, floatRet);
675     AudioService::GetInstance()->FilterAllFastProcess();
676 }
677 
678 /**
679  * @tc.name  : Test GetDeviceInfoForProcess API
680  * @tc.type  : FUNC
681  * @tc.number: AudioServiceGetDeviceInfoForProcess_001
682  * @tc.desc  : Test GetDeviceInfoForProcess interface.
683  */
684 HWTEST(AudioServiceUnitTest, AudioServiceGetDeviceInfoForProcess_001, TestSize.Level1)
685 {
686     AudioProcessConfig config = {};
687     config.audioMode = AUDIO_MODE_PLAYBACK;
688     AudioDeviceDescriptor deviceinfo(AudioDeviceDescriptor::DEVICE_INFO);
689     AudioStreamInfo info;
690     deviceinfo = AudioService::GetInstance()->GetDeviceInfoForProcess(config, info);
691     EXPECT_NE(deviceinfo.deviceRole_, INPUT_DEVICE);
692     config.audioMode = AUDIO_MODE_RECORD;
693     deviceinfo = AudioService::GetInstance()->GetDeviceInfoForProcess(config, info);
694     EXPECT_NE(deviceinfo.deviceRole_, OUTPUT_DEVICE);
695 }
696 
697 /**
698  * @tc.name  : Test Dump API
699  * @tc.type  : FUNC
700  * @tc.number: AudioServiceDump_001
701  * @tc.desc  : Test Dump interface.
702  */
703 HWTEST(AudioServiceUnitTest, AudioServiceDump_001, TestSize.Level1)
704 {
705     int32_t floatRet = 0;
706     AudioService::GetInstance()->FilterAllFastProcess();
707     AudioService::GetInstance()->OnInitInnerCapList(1);
708     AudioService::GetInstance()->InitAllDupBuffer(1);
709     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
710     AudioService::GetInstance()->ResetAudioEndpoint();
711     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
712     EXPECT_EQ(0, floatRet);
713 
714     AudioProcessConfig config = {};
715     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
716     AudioService::GetInstance()->GetAudioProcess(config);
717     AudioService::GetInstance()->OnInitInnerCapList(1);
718     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
719     AudioService::GetInstance()->OnInitInnerCapList(1);
720 
721     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
722     AudioService::GetInstance()->OnInitInnerCapList(1);
723     AudioService::GetInstance()->InitAllDupBuffer(1);
724     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
725     AudioService::GetInstance()->OnUpdateInnerCapList(1);
726     EXPECT_EQ(0, floatRet);
727     std::string dumpString = "This is Dump string";
728     AudioService::GetInstance()->Dump(dumpString);
729 }
730 
731 /**
732  * @tc.name  : Test SetNonInterruptMute API
733  * @tc.type  : FUNC
734  * @tc.number: AudioServiceSetNonInterruptMute_001
735  * @tc.desc  : Test SetNonInterruptMute interface.
736  */
737 HWTEST(AudioServiceUnitTest, AudioServiceSetNonInterruptMute_001, TestSize.Level1)
738 {
739     int32_t floatRet = 0;
740     bool muteFlag = true;
741     uint32_t sessionId = 0;
742 
743     AudioService::GetInstance()->FilterAllFastProcess();
744     AudioService::GetInstance()->OnInitInnerCapList(1);
745     AudioService::GetInstance()->ResetAudioEndpoint();
746     AudioService::GetInstance()->SetNonInterruptMute(sessionId, muteFlag);
747     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
748     EXPECT_EQ(0, floatRet);
749 
750     AudioProcessConfig config = {};
751     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
752     AudioService::GetInstance()->GetAudioProcess(config);
753     AudioService::GetInstance()->OnInitInnerCapList(1);
754     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
755     AudioService::GetInstance()->OnInitInnerCapList(1);
756 
757     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
758     AudioService::GetInstance()->OnInitInnerCapList(1);
759     AudioService::GetInstance()->OnUpdateInnerCapList(1);
760     AudioService::GetInstance()->SetNonInterruptMute(MAX_STREAMID - 1, muteFlag);
761     EXPECT_EQ(0, floatRet);
762 }
763 
764 /**
765  * @tc.name  : Test OnProcessRelease API
766  * @tc.type  : FUNC
767  * @tc.number: AudioServiceOnProcessRelease_001
768  * @tc.desc  : Test OnProcessRelease interface.
769  */
770 HWTEST(AudioServiceUnitTest, AudioServiceOnProcessRelease_001, TestSize.Level1)
771 {
772     bool isSwitchStream = false;
773     int32_t floatRet = 0;
774     bool muteFlag = true;
775     uint32_t sessionId = 0;
776 
777     AudioService::GetInstance()->FilterAllFastProcess();
778     AudioService::GetInstance()->OnInitInnerCapList(1);
779     AudioService::GetInstance()->ResetAudioEndpoint();
780     AudioService::GetInstance()->SetNonInterruptMute(sessionId, muteFlag);
781     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
782     EXPECT_EQ(0, floatRet);
783 
784     AudioProcessConfig config = {};
785     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
786     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
787     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
788     EXPECT_NE(audioprocess, nullptr);
789     audioprocess->Start();
790     AudioService::GetInstance()->GetAudioProcess(config);
791     AudioService::GetInstance()->OnInitInnerCapList(1);
792     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
793     AudioService::GetInstance()->OnInitInnerCapList(1);
794 
795     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
796     AudioService::GetInstance()->OnInitInnerCapList(1);
797     AudioService::GetInstance()->OnUpdateInnerCapList(1);
798 
799     int32_t ret = 0;
800     ret = AudioService::GetInstance()->OnProcessRelease(audioprocess, isSwitchStream);
801     EXPECT_EQ(ret, 0);
802 }
803 
804 /**
805  * @tc.name  : Test OnProcessRelease API
806  * @tc.type  : FUNC
807  * @tc.number: AudioServiceOnProcessRelease_002
808  * @tc.desc  : Test OnProcessRelease interface.
809  */
810 HWTEST(AudioServiceUnitTest, AudioServiceOnProcessRelease_002, TestSize.Level1)
811 {
812     bool isSwitchStream = false;
813     int32_t floatRet = 0;
814     bool muteFlag = true;
815     uint32_t sessionId = 0;
816 
817     AudioService::GetInstance()->FilterAllFastProcess();
818     AudioService::GetInstance()->OnInitInnerCapList(1);
819     AudioService::GetInstance()->ResetAudioEndpoint();
820     AudioService::GetInstance()->SetNonInterruptMute(sessionId, muteFlag);
821     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
822     EXPECT_EQ(0, floatRet);
823 
824     AudioProcessConfig config = {};
825     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
826     config.rendererInfo.isLoopback = true;
827     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
828     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
829     EXPECT_NE(audioprocess, nullptr);
830     audioprocess->Start();
831     AudioService::GetInstance()->GetAudioProcess(config);
832     AudioService::GetInstance()->OnInitInnerCapList(1);
833     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
834     AudioService::GetInstance()->OnInitInnerCapList(1);
835 
836     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
837     AudioService::GetInstance()->OnInitInnerCapList(1);
838     AudioService::GetInstance()->OnUpdateInnerCapList(1);
839 
840     int32_t ret = 0;
841     ret = AudioService::GetInstance()->OnProcessRelease(audioprocess, isSwitchStream);
842     EXPECT_EQ(ret, 0);
843 }
844 
845 
846 /**
847  * @tc.name  : Test OnProcessRelease API
848  * @tc.type  : FUNC
849  * @tc.number: AudioServiceOnProcessRelease_003
850  * @tc.desc  : Test OnProcessRelease interface.
851  */
852 HWTEST(AudioServiceUnitTest, AudioServiceOnProcessRelease_003, TestSize.Level1)
853 {
854     bool isSwitchStream = false;
855     int32_t floatRet = 0;
856     bool muteFlag = true;
857     uint32_t sessionId = 0;
858 
859     AudioService::GetInstance()->FilterAllFastProcess();
860     AudioService::GetInstance()->OnInitInnerCapList(1);
861     AudioService::GetInstance()->ResetAudioEndpoint();
862     AudioService::GetInstance()->SetNonInterruptMute(sessionId, muteFlag);
863     floatRet = AudioService::GetInstance()->GetMaxAmplitude(true);
864     EXPECT_EQ(0, floatRet);
865 
866     AudioProcessConfig config = {};
867     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
868     config.audioMode = AUDIO_MODE_RECORD;
869     config.capturerInfo.isLoopback = true;
870     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
871     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
872     EXPECT_NE(audioprocess, nullptr);
873     audioprocess->Start();
874     AudioService::GetInstance()->GetAudioProcess(config);
875     AudioService::GetInstance()->OnInitInnerCapList(1);
876     AudioService::GetInstance()->workingConfig_.filterOptions.usages.emplace_back(STREAM_USAGE_MEDIA);
877     AudioService::GetInstance()->OnInitInnerCapList(1);
878 
879     AudioService::GetInstance()->workingConfig_.filterOptions.pids.emplace_back(1);
880     AudioService::GetInstance()->OnInitInnerCapList(1);
881     AudioService::GetInstance()->OnUpdateInnerCapList(1);
882 
883     int32_t ret = 0;
884     ret = AudioService::GetInstance()->OnProcessRelease(audioprocess, isSwitchStream);
885     EXPECT_EQ(ret, 0);
886 }
887 
888 /**
889  * @tc.name  : Test GetAudioEndpointForDevice API
890  * @tc.type  : FUNC
891  * @tc.number: GetAudioEndpointForDevice_001
892  * @tc.desc  : Test GetAudioEndpointForDevice interface.
893  */
894 HWTEST(AudioServiceUnitTest, GetAudioEndpointForDevice_001, TestSize.Level1)
895 {
896     AudioService *audioService = AudioService::GetInstance();
897     AudioProcessConfig clientConfig;
898     clientConfig.rendererInfo.streamUsage = STREAM_USAGE_VOICE_COMMUNICATION;
899     clientConfig.rendererInfo.originalFlag = AUDIO_FLAG_VOIP_FAST;
900     audioService->GetAudioProcess(clientConfig);
901 }
902 
903 /**
904  * @tc.name  : Test Dump API
905  * @tc.type  : FUNC
906  * @tc.number: Dump_001
907  * @tc.desc  : Test Dump interface.
908  */
909 HWTEST(AudioServiceUnitTest, Dump_001, TestSize.Level1)
910 {
911     std::string dumpString = "abcdefg";
912     AudioService *audioService = AudioService::GetInstance();
913     audioService->Dump(dumpString);
914 
915     AudioProcessConfig processConfig;
916 
917     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
918         std::make_shared<StreamListenerHolder>();
919 
920     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
921 
922     std::shared_ptr<RendererInServer> rendererInServer =
923         std::make_shared<RendererInServer>(processConfig, streamListener);
924 
925     std::shared_ptr<RendererInServer> renderer = rendererInServer;
926 
927     audioService->InsertRenderer(1, renderer);
928     audioService->workingConfigs_[1];
929     audioService->Dump(dumpString);
930     audioService->RemoveRenderer(1);
931 }
932 
933 /**
934  * @tc.name  : Test GetMaxAmplitude API
935  * @tc.type  : FUNC
936  * @tc.number: GetMaxAmplitude_001
937  * @tc.desc  : Test GetMaxAmplitude interface.
938  */
939 HWTEST(AudioServiceUnitTest, GetMaxAmplitude_001, TestSize.Level1)
940 {
941     AudioService *audioService = AudioService::GetInstance();
942     int ret = audioService->GetMaxAmplitude(true);
943     EXPECT_EQ(0, ret);
944 }
945 
946 /**
947  * @tc.name  : Test GetCapturerBySessionID API
948  * @tc.type  : FUNC
949  * @tc.number: GetCapturerBySessionID_001
950  * @tc.desc  : Test GetCapturerBySessionID interface.
951  */
952 HWTEST(AudioServiceUnitTest, GetCapturerBySessionID_001, TestSize.Level1)
953 {
954     uint32_t sessionID = 2;
955     AudioService *audioService = AudioService::GetInstance();
956     std::shared_ptr<CapturerInServer> renderer = nullptr;
957     audioService->InsertCapturer(1, renderer);
958     std::shared_ptr<CapturerInServer> ret = audioService->GetCapturerBySessionID(sessionID);
959     EXPECT_EQ(nullptr, ret);
960     audioService->RemoveCapturer(1);
961 }
962 
963 /**
964  * @tc.name  : Test GetCapturerBySessionID API
965  * @tc.type  : FUNC
966  * @tc.number: GetCapturerBySessionID_002
967  * @tc.desc  : Test GetCapturerBySessionID interface.
968  */
969 HWTEST(AudioServiceUnitTest, GetCapturerBySessionID_002, TestSize.Level1)
970 {
971     AudioProcessConfig processConfig;
972 
973     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
974         std::make_shared<StreamListenerHolder>();
975 
976     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
977 
978     std::shared_ptr<CapturerInServer> capturerInServer =
979         std::make_shared<CapturerInServer>(processConfig, streamListener);
980 
981     std::shared_ptr<CapturerInServer> capturer = capturerInServer;
982     uint32_t sessionID = 1;
983     AudioService *audioService = AudioService::GetInstance();
984     std::shared_ptr<CapturerInServer> renderer = nullptr;
985     audioService->InsertCapturer(1, renderer);
986     std::shared_ptr<CapturerInServer> ret = audioService->GetCapturerBySessionID(sessionID);
987     EXPECT_EQ(nullptr, ret);
988     audioService->RemoveCapturer(1);
989 }
990 
991 /**
992  * @tc.name  : Test SetNonInterruptMute API
993  * @tc.type  : FUNC
994  * @tc.number: SetNonInterruptMute_001
995  * @tc.desc  : Test SetNonInterruptMute interface.
996  */
997 HWTEST(AudioServiceUnitTest, SetNonInterruptMute_001, TestSize.Level1)
998 {
999     AudioService *audioService = AudioService::GetInstance();
1000     std::shared_ptr<RendererInServer> renderer = nullptr;
1001     audioService->InsertRenderer(1, renderer);
1002     audioService->SetNonInterruptMute(1, true);
1003     audioService->RemoveRenderer(1);
1004 }
1005 
1006 /**
1007  * @tc.name  : Test SetNonInterruptMute API
1008  * @tc.type  : FUNC
1009  * @tc.number: SetNonInterruptMute_002
1010  * @tc.desc  : Test SetNonInterruptMute interface.
1011  */
1012 HWTEST(AudioServiceUnitTest, SetNonInterruptMute_002, TestSize.Level1)
1013 {
1014     AudioProcessConfig processConfig;
1015 
1016     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1017         std::make_shared<StreamListenerHolder>();
1018 
1019     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1020 
1021     std::shared_ptr<RendererInServer> rendererInServer =
1022         std::make_shared<RendererInServer>(processConfig, streamListener);
1023 
1024     std::shared_ptr<RendererInServer> renderer = rendererInServer;
1025 
1026     AudioService *audioService = AudioService::GetInstance();
1027     audioService->InsertRenderer(1, renderer);
1028     audioService->SetNonInterruptMute(1, true);
1029     audioService->RemoveRenderer(1);
1030 }
1031 
1032 /**
1033  * @tc.name  : Test SetNonInterruptMute API
1034  * @tc.type  : FUNC
1035  * @tc.number: SetNonInterruptMute_003
1036  * @tc.desc  : Test SetNonInterruptMute interface.
1037  */
1038 HWTEST(AudioServiceUnitTest, SetNonInterruptMute_003, TestSize.Level1)
1039 {
1040     AudioService *audioService = AudioService::GetInstance();
1041     std::shared_ptr<CapturerInServer> capturer = nullptr;
1042     audioService->InsertCapturer(1, capturer);
1043     audioService->SetNonInterruptMute(1, true);
1044     audioService->RemoveCapturer(1);
1045 }
1046 
1047 /**
1048  * @tc.name  : Test SetNonInterruptMute API
1049  * @tc.type  : FUNC
1050  * @tc.number: SetNonInterruptMute_004
1051  * @tc.desc  : Test SetNonInterruptMute interface.
1052  */
1053 HWTEST(AudioServiceUnitTest, SetNonInterruptMute_004, TestSize.Level1)
1054 {
1055     AudioProcessConfig processConfig;
1056 
1057     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1058         std::make_shared<StreamListenerHolder>();
1059 
1060     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1061 
1062     std::shared_ptr<CapturerInServer> capturerInServer =
1063         std::make_shared<CapturerInServer>(processConfig, streamListener);
1064 
1065     std::shared_ptr<CapturerInServer> capturer = capturerInServer;
1066 
1067     AudioService *audioService = AudioService::GetInstance();
1068     audioService->InsertCapturer(1, capturer);
1069     audioService->SetNonInterruptMute(1, true);
1070     audioService->RemoveCapturer(1);
1071 }
1072 
1073 /**
1074  * @tc.name  : Test SetNonInterruptMute API
1075  * @tc.type  : FUNC
1076  * @tc.number: SetNonInterruptMute_005
1077  * @tc.desc  : Test SetNonInterruptMute interface.
1078  */
1079 HWTEST(AudioServiceUnitTest, SetNonInterruptMute_005, TestSize.Level1)
1080 {
1081     AudioService *audioService = AudioService::GetInstance();
1082     audioService->SetNonInterruptMute(1, true);
1083     EXPECT_EQ(1, audioService->muteSwitchStreams_.count(1));
1084     audioService->SetNonInterruptMute(1, false);
1085     EXPECT_EQ(0, audioService->muteSwitchStreams_.count(1));
1086     audioService->mutedSessions_.insert(1);
1087     audioService->SetNonInterruptMute(1, true);
1088     EXPECT_EQ(1, audioService->mutedSessions_.count(1));
1089     audioService->SetNonInterruptMute(1, false);
1090     EXPECT_EQ(0, audioService->mutedSessions_.count(1));
1091 }
1092 
1093 /**
1094  * @tc.name  : Test SetOffloadMode API
1095  * @tc.type  : FUNC
1096  * @tc.number: SetOffloadMode_001
1097  * @tc.desc  : Test SetOffloadMode interface.
1098  */
1099 HWTEST(AudioServiceUnitTest, SetOffloadMode_001, TestSize.Level1)
1100 {
1101     uint32_t sessionId = 2;
1102     int32_t state = 1;
1103     bool isAppBack = true;
1104     AudioService *audioService = AudioService::GetInstance();
1105     std::shared_ptr<CapturerInServer> capturer = nullptr;
1106     audioService->InsertCapturer(1, capturer);
1107     int32_t ret = audioService->SetOffloadMode(sessionId, state, isAppBack);
1108     EXPECT_EQ(ERR_INVALID_INDEX, ret);
1109     audioService->RemoveCapturer(1);
1110 }
1111 
1112 /**
1113  * @tc.name  : Test CheckRenderSessionMuteState API
1114  * @tc.type  : FUNC
1115  * @tc.number: CheckRenderSessionMuteState_001
1116  * @tc.desc  : Test CheckRenderSessionMuteState interface.
1117  */
1118 HWTEST(AudioServiceUnitTest, CheckRenderSessionMuteState_001, TestSize.Level1)
1119 {
1120     uint32_t sessionId = 2;
1121     AudioService *audioService = AudioService::GetInstance();
1122     audioService->UpdateMuteControlSet(sessionId, true);
1123 
1124     std::shared_ptr<RendererInServer> renderer = nullptr;
1125     audioService->CheckRenderSessionMuteState(sessionId, renderer);
1126 
1127     std::shared_ptr<CapturerInServer> capturer = nullptr;
1128     audioService->CheckCaptureSessionMuteState(sessionId, capturer);
1129 
1130     sptr<AudioProcessInServer> audioprocess = nullptr;
1131     audioService->CheckFastSessionMuteState(sessionId, audioprocess);
1132 
1133     audioService->RemoveIdFromMuteControlSet(sessionId);
1134     audioService->RemoveIdFromMuteControlSet(1);
1135 
1136     bool ret = audioService->IsExceedingMaxStreamCntPerUid(MEDIA_SERVICE_UID, 1, 0);
1137     EXPECT_EQ(ret, true);
1138     ret = audioService->IsExceedingMaxStreamCntPerUid(1, 1, 3);
1139     EXPECT_EQ(ret, false);
1140     int32_t mostAppUid = 1;
1141     int32_t mostAppNum = 1;
1142     audioService->GetCreatedAudioStreamMostUid(mostAppUid, mostAppNum);
1143 }
1144 
1145 /**
1146  * @tc.name  : Test CheckInnerCapForRenderer API
1147  * @tc.type  : FUNC
1148  * @tc.number: CheckInnerCapForRenderer_001
1149  * @tc.desc  : Test CheckInnerCapForRenderer interface.
1150  */
1151 HWTEST(AudioServiceUnitTest, CheckInnerCapForRenderer_001, TestSize.Level1)
1152 {
1153     AudioService *audioService = AudioService::GetInstance();
1154     AudioProcessConfig processConfig;
1155 
1156     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1157         std::make_shared<StreamListenerHolder>();
1158 
1159     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1160 
1161     std::shared_ptr<RendererInServer> rendererInServer =
1162         std::make_shared<RendererInServer>(processConfig, streamListener);
1163 
1164     std::shared_ptr<RendererInServer> renderer = rendererInServer;
1165     audioService->CheckInnerCapForRenderer(1, renderer);
1166     audioService->workingConfigs_[1];
1167     audioService->CheckInnerCapForRenderer(1, renderer);
1168     int32_t ret = audioService->OnCapturerFilterRemove(1, 1);
1169     EXPECT_EQ(SUCCESS, ret);
1170     audioService->workingConfigs_.clear();
1171     ret = audioService->OnCapturerFilterRemove(1, 1);
1172     EXPECT_EQ(SUCCESS, ret);
1173 }
1174 
1175 /**
1176  * @tc.name  : Test OnCapturerFilterChange API
1177  * @tc.type  : FUNC
1178  * @tc.number: OnCapturerFilterChange_001
1179  * @tc.desc  : Test OnCapturerFilterChange interface.
1180  */
1181 HWTEST(AudioServiceUnitTest, OnCapturerFilterChange_001, TestSize.Level1)
1182 {
1183     AudioService *audioService = AudioService::GetInstance();
1184     AudioPlaybackCaptureConfig newConfig;
1185     int32_t ret = audioService->OnCapturerFilterChange(1, newConfig, 1);
1186     EXPECT_EQ(ret, 0);
1187     audioService->workingConfigs_[1];
1188     ret = audioService->OnCapturerFilterChange(1, newConfig, 1);
1189     EXPECT_EQ(ret, 0);
1190     audioService->workingConfigs_.clear();
1191 }
1192 
1193 /**
1194  * @tc.name  : Test ShouldBeInnerCap API
1195  * @tc.type  : FUNC
1196  * @tc.number: ShouldBeInnerCap_001
1197  * @tc.desc  : Test ShouldBeInnerCap interface.
1198  */
1199 HWTEST(AudioServiceUnitTest, ShouldBeInnerCap_001, TestSize.Level1)
1200 {
1201     AudioProcessConfig config = {};
1202     config.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
1203     AudioService *audioService = AudioService::GetInstance();
1204     int32_t ret = audioService->ShouldBeInnerCap(config, 0);
1205     EXPECT_FALSE(ret);
1206     audioService->workingConfig_.filterOptions.usages.push_back(STREAM_USAGE_MUSIC);
1207     ret = audioService->ShouldBeInnerCap(config, 0);
1208     EXPECT_FALSE(ret);
1209     audioService->workingConfig_.filterOptions.pids.push_back(1);
1210     ret = audioService->ShouldBeInnerCap(config, 0);
1211     EXPECT_FALSE(ret);
1212 }
1213 #endif
1214 
1215 
1216 /**
1217  * @tc.name  : Test CheckRenderSessionMuteState API
1218  * @tc.type  : FUNC
1219  * @tc.number: CheckRenderSessionMuteState_002
1220  * @tc.desc  : Test CheckRenderSessionMuteState interface.
1221  */
1222 HWTEST(AudioServiceUnitTest, CheckRenderSessionMuteState_002, TestSize.Level1)
1223 {
1224     AudioProcessConfig processConfig;
1225     uint32_t sessionId = 100001;
1226     AudioService *audioService = AudioService::GetInstance();
1227     audioService->UpdateMuteControlSet(sessionId, true);
1228 
1229     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1230         std::make_shared<StreamListenerHolder>();
1231 
1232     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1233     std::shared_ptr<RendererInServer> rendererInServer =
1234         std::make_shared<RendererInServer>(processConfig, streamListener);
1235     std::shared_ptr<RendererInServer> renderer = rendererInServer;
1236     audioService->CheckRenderSessionMuteState(sessionId, renderer);
1237 
1238     audioService->RemoveIdFromMuteControlSet(sessionId);
1239 
1240     bool ret = audioService->IsExceedingMaxStreamCntPerUid(MEDIA_SERVICE_UID, 1, 0);
1241     EXPECT_EQ(ret, true);
1242     ret = audioService->IsExceedingMaxStreamCntPerUid(1, 1, 3);
1243     EXPECT_EQ(ret, false);
1244     int32_t mostAppUid = 1;
1245     int32_t mostAppNum = 1;
1246     audioService->GetCreatedAudioStreamMostUid(mostAppUid, mostAppNum);
1247 }
1248 /**
1249  * @tc.name  : Test CheckRenderSessionMuteState API
1250  * @tc.type  : FUNC
1251  * @tc.number: heckRenderSessionMuteState_003
1252  * @tc.desc  : Test CheckRenderSessionMuteState interface.
1253  */
1254 HWTEST(AudioServiceUnitTest, CheckRenderSessionMuteState_003, TestSize.Level1)
1255 {
1256     AudioProcessConfig processConfig;
1257     uint32_t sessionId = 100001;
1258     AudioService *audioService = AudioService::GetInstance();
1259     audioService->UpdateMuteControlSet(sessionId, true);
1260 
1261     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1262         std::make_shared<StreamListenerHolder>();
1263 
1264     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1265 
1266     std::shared_ptr<CapturerInServer> capturerInServer =
1267         std::make_shared<CapturerInServer>(processConfig, streamListener);
1268     std::shared_ptr<CapturerInServer> capturer = capturerInServer;
1269     audioService->CheckCaptureSessionMuteState(sessionId, capturer);
1270 
1271     audioService->RemoveIdFromMuteControlSet(sessionId);
1272 
1273     bool ret = audioService->IsExceedingMaxStreamCntPerUid(MEDIA_SERVICE_UID, 1, 0);
1274     EXPECT_EQ(ret, true);
1275     ret = audioService->IsExceedingMaxStreamCntPerUid(1, 1, 3);
1276     EXPECT_EQ(ret, false);
1277     int32_t mostAppUid = 1;
1278     int32_t mostAppNum = 1;
1279     audioService->GetCreatedAudioStreamMostUid(mostAppUid, mostAppNum);
1280 }
1281 /**
1282  * @tc.name  : Test CheckRenderSessionMuteState API
1283  * @tc.type  : FUNC
1284  * @tc.number: CheckRenderSessionMuteState_004
1285  * @tc.desc  : Test CheckRenderSessionMuteState interface.
1286  */
1287 HWTEST(AudioServiceUnitTest, CheckRenderSessionMuteState_004, TestSize.Level1)
1288 {
1289     AudioProcessConfig processConfig;
1290     uint32_t sessionId = 100001;
1291     AudioService *audioService = AudioService::GetInstance();
1292     audioService->UpdateMuteControlSet(sessionId, true);
1293 
1294     sptr<AudioProcessInServer> audioprocess = AudioProcessInServer::Create(processConfig, AudioService::GetInstance());;
1295     audioService->CheckFastSessionMuteState(sessionId, audioprocess);
1296 
1297     audioService->RemoveIdFromMuteControlSet(sessionId);
1298 
1299     bool ret = audioService->IsExceedingMaxStreamCntPerUid(MEDIA_SERVICE_UID, 1, 0);
1300     EXPECT_EQ(ret, true);
1301     ret = audioService->IsExceedingMaxStreamCntPerUid(1, 1, 3);
1302     EXPECT_EQ(ret, true);
1303     int32_t mostAppUid = 1;
1304     int32_t mostAppNum = 1;
1305     audioService->GetCreatedAudioStreamMostUid(mostAppUid, mostAppNum);
1306 }
1307 
1308 /**
1309  * @tc.name  : Test CheckRenderSessionMuteState API
1310  * @tc.type  : FUNC
1311  * @tc.number: CheckRenderSessionMuteState_005
1312  * @tc.desc  : Test CheckRenderSessionMuteState interface.
1313  */
1314 HWTEST(AudioServiceUnitTest, CheckRenderSessionMuteState_005, TestSize.Level1)
1315 {
1316     AudioProcessConfig processConfig;
1317     uint32_t sessionId = 100001;
1318     AudioService *audioService = AudioService::GetInstance();
1319 
1320     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1321         std::make_shared<StreamListenerHolder>();
1322 
1323     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1324     std::shared_ptr<RendererInServer> rendererInServer =
1325         std::make_shared<RendererInServer>(processConfig, streamListener);
1326     std::shared_ptr<RendererInServer> renderer = rendererInServer;
1327     audioService->muteSwitchStreams_.insert(sessionId);
1328     audioService->CheckRenderSessionMuteState(sessionId, renderer);
1329     EXPECT_EQ(audioService->mutedSessions_.count(sessionId), 0);
1330     audioService->RemoveIdFromMuteControlSet(sessionId);
1331 }
1332 
1333 /**
1334  * @tc.name  : Test CheckCapturerSessionMuteState API
1335  * @tc.type  : FUNC
1336  * @tc.number: CheckCapturerSessionMuteState_006
1337  * @tc.desc  : Test CheckCapturerSessionMuteState interface.
1338  */
1339 HWTEST(AudioServiceUnitTest, CheckCapturerSessionMuteState_001, TestSize.Level1)
1340 {
1341     AudioProcessConfig processConfig;
1342     uint32_t sessionId = 100001;
1343     AudioService *audioService = AudioService::GetInstance();
1344 
1345     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1346         std::make_shared<StreamListenerHolder>();
1347 
1348     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1349     std::shared_ptr<CapturerInServer> capturerInServer =
1350         std::make_shared<CapturerInServer>(processConfig, streamListener);
1351     std::shared_ptr<CapturerInServer> capturer = capturerInServer;
1352     audioService->muteSwitchStreams_.insert(sessionId);
1353     audioService->CheckCaptureSessionMuteState(sessionId, capturer);
1354     EXPECT_EQ(audioService->mutedSessions_.count(sessionId), 0);
1355     audioService->RemoveIdFromMuteControlSet(sessionId);
1356 }
1357 
1358 /**
1359  * @tc.name  : Test CheckFastSessionMuteState API
1360  * @tc.type  : FUNC
1361  * @tc.number: CheckFastSessionMuteState_006
1362  * @tc.desc  : Test CheckFastSessionMuteState interface.
1363  */
1364 HWTEST(AudioServiceUnitTest, CheckFastSessionMuteState_001, TestSize.Level1)
1365 {
1366     AudioProcessConfig processConfig;
1367     uint32_t sessionId = 100001;
1368     AudioService *audioService = AudioService::GetInstance();
1369 
1370     sptr<AudioProcessInServer> audioprocess = AudioProcessInServer::Create(processConfig, AudioService::GetInstance());;
1371     audioService->CheckFastSessionMuteState(sessionId, audioprocess);
1372 
1373     audioService->muteSwitchStreams_.insert(sessionId);
1374     audioService->CheckFastSessionMuteState(sessionId, audioprocess);
1375     EXPECT_EQ(audioService->mutedSessions_.count(sessionId), 0);
1376     audioService->RemoveIdFromMuteControlSet(sessionId);
1377 }
1378 
1379 /**
1380  * @tc.name  : Test GetStandbyStatus API
1381  * @tc.type  : FUNC
1382  * @tc.number: GetStandbyStatus_001
1383  * @tc.desc  : Test GetStandbyStatus interface.
1384  */
1385 HWTEST(AudioServiceUnitTest, GetStandbyStatus_001, TestSize.Level1)
1386 {
1387     uint32_t sessionId = 100001;
1388     AudioService *audioService = AudioService::GetInstance();
1389     audioService->UpdateMuteControlSet(sessionId, true);
1390     bool isStandby = false;
1391     int64_t enterStandbyTime = 100000;
1392     int ret = audioService->GetStandbyStatus(sessionId, isStandby, enterStandbyTime);
1393     EXPECT_EQ(ret, ERR_INVALID_PARAM);
1394 }
1395 /**
1396  * @tc.name  : Test OnUpdateInnerCapList API
1397  * @tc.type  : FUNC
1398  * @tc.number: OnUpdateInnerCapList_001
1399  * @tc.desc  : Test OnUpdateInnerCapList interface.
1400  */
1401 HWTEST(AudioServiceUnitTest, OnUpdateInnerCapList_001, TestSize.Level1)
1402 {
1403     AudioService *audioService = AudioService::GetInstance();
1404     std::shared_ptr<RendererInServer> renderer = nullptr;
1405     std::vector<std::weak_ptr<RendererInServer>> rendererVector;
1406     rendererVector.push_back(renderer);
1407     int32_t innerCapId = 1;
1408     audioService->filteredRendererMap_.insert(std::make_pair(innerCapId, rendererVector));
1409     int32_t ret = audioService->OnUpdateInnerCapList(innerCapId);
1410     EXPECT_EQ(ret, SUCCESS);
1411 }
1412 
1413 /**
1414  * @tc.name  : Test EnableDualToneList API
1415  * @tc.type  : FUNC
1416  * @tc.number: EnableDualToneList_001
1417  * @tc.desc  : Test EnableDualToneList interface.
1418  */
1419 HWTEST(AudioServiceUnitTest, EnableDualToneList_001, TestSize.Level1)
1420 {
1421     AudioService *audioService = AudioService::GetInstance();
1422     std::shared_ptr<RendererInServer> renderer = nullptr;
1423     int32_t sessionId = 1;
1424     audioService->allRendererMap_.insert(std::make_pair(sessionId, renderer));
1425     int32_t ret = audioService->EnableDualToneList(sessionId);
1426     EXPECT_EQ(ret, SUCCESS);
1427 }
1428 /**
1429  * @tc.name  : Test DisableDualToneList API
1430  * @tc.type  : FUNC
1431  * @tc.number: DisableDualToneList_001
1432  * @tc.desc  : Test DisableDualToneList interface.
1433  */
1434 HWTEST(AudioServiceUnitTest, DisableDualToneList_001, TestSize.Level1)
1435 {
1436     AudioService *audioService = AudioService::GetInstance();
1437     std::shared_ptr<RendererInServer> renderer = nullptr;
1438     audioService->filteredDualToneRendererMap_.push_back(renderer);
1439     int32_t sessionId = 1;
1440     int32_t ret = audioService->DisableDualToneList(sessionId);
1441     EXPECT_EQ(ret, SUCCESS);
1442 }
1443 /**
1444  * @tc.name  : Test UpdateAudioSinkState API
1445  * @tc.type  : FUNC
1446  * @tc.number: UpdateAudioSinkState_001
1447  * @tc.desc  : Test UpdateAudioSinkState interface.
1448  */
1449 HWTEST(AudioServiceUnitTest, UpdateAudioSinkState_001, TestSize.Level1)
1450 {
1451     AudioService *audioService = AudioService::GetInstance();
1452     audioService->currentRendererStreamCnt_ = 0;
1453     audioService->UpdateAudioSinkState(1, false);
1454 
1455     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1456     audioService->SetIncMaxRendererStreamCnt(audioMode);
1457     int32_t res = audioService->GetCurrentRendererStreamCnt();
1458     EXPECT_EQ(res, 1);
1459 }
1460 /**
1461  * @tc.name  : Test UpdateAudioSinkState API
1462  * @tc.type  : FUNC
1463  * @tc.number: UpdateAudioSinkState_002
1464  * @tc.desc  : Test UpdateAudioSinkState interface.
1465  */
1466 HWTEST(AudioServiceUnitTest, UpdateAudioSinkState_002, TestSize.Level1)
1467 {
1468     AudioService *audioService = AudioService::GetInstance();
1469     audioService->currentRendererStreamCnt_ = 0;
1470     audioService->UpdateAudioSinkState(1, true);
1471 
1472     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1473     audioService->SetIncMaxRendererStreamCnt(audioMode);
1474     int32_t res = audioService->GetCurrentRendererStreamCnt();
1475     EXPECT_EQ(res, 1);
1476 }
1477 /**
1478  * @tc.name  : Test ShouldBeDualTone API
1479  * @tc.type  : FUNC
1480  * @tc.number: AudioServiceShouldBeDualTone_003
1481  * @tc.desc  : Test ShouldBeDualTone interface.
1482  */
1483 HWTEST(AudioServiceUnitTest, AudioServiceShouldBeDualTone_003, TestSize.Level1)
1484 {
1485     AudioProcessConfig config = {};
1486     config.audioMode = AUDIO_MODE_PLAYBACK;
1487     bool ret;
1488     ret = AudioService::GetInstance()->ShouldBeDualTone(config);
1489     EXPECT_EQ(ret, false);
1490     config.audioMode = AUDIO_MODE_PLAYBACK;
1491     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
1492     ret = AudioService::GetInstance()->ShouldBeDualTone(config);
1493     EXPECT_FALSE(ret);
1494 }
1495 /**
1496  * @tc.name  : Test CheckHibernateState API
1497  * @tc.type  : FUNC
1498  * @tc.number: CheckHibernateState_001
1499  * @tc.desc  : Test CheckHibernateState interface.
1500  */
1501 HWTEST(AudioServiceUnitTest, CheckHibernateState_001, TestSize.Level1)
1502 {
1503     AudioService *audioService = AudioService::GetInstance();
1504     audioService->currentRendererStreamCnt_ = 0;
1505     audioService->CheckHibernateState(true);
1506 
1507     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1508     audioService->SetIncMaxRendererStreamCnt(audioMode);
1509     int32_t res = audioService->GetCurrentRendererStreamCnt();
1510     EXPECT_EQ(res, 1);
1511 }
1512 /**
1513  * @tc.name  : Test CheckHibernateState API
1514  * @tc.type  : FUNC
1515  * @tc.number: CheckHibernateState_002
1516  * @tc.desc  : Test CheckHibernateState interface.
1517  */
1518 HWTEST(AudioServiceUnitTest, CheckHibernateState_002, TestSize.Level1)
1519 {
1520     AudioService *audioService = AudioService::GetInstance();
1521     audioService->currentRendererStreamCnt_ = 0;
1522     audioService->CheckHibernateState(false);
1523 
1524     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1525     audioService->SetIncMaxRendererStreamCnt(audioMode);
1526     int32_t res = audioService->GetCurrentRendererStreamCnt();
1527     EXPECT_EQ(res, 1);
1528 }
1529 /**
1530  * @tc.name  : Test CheckHibernateState API
1531  * @tc.type  : FUNC
1532  * @tc.number: CheckHibernateState_003
1533  * @tc.desc  : Test CheckHibernateState interface.
1534  */
1535 HWTEST(AudioServiceUnitTest, CheckHibernateState_003, TestSize.Level1)
1536 {
1537     AudioService *audioService = AudioService::GetInstance();
1538     audioService->allRunningSinks_.insert(1);
1539     audioService->currentRendererStreamCnt_ = 0;
1540     audioService->CheckHibernateState(true);
1541 
1542     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1543     audioService->SetIncMaxRendererStreamCnt(audioMode);
1544     int32_t res = audioService->GetCurrentRendererStreamCnt();
1545     EXPECT_EQ(res, 1);
1546 }
1547 /**
1548  * @tc.name  : Test UnsetOffloadMode API
1549  * @tc.type  : FUNC
1550  * @tc.number: UnsetOffloadMode_001
1551  * @tc.desc  : Test UnsetOffloadMode interface.
1552  */
1553 HWTEST(AudioServiceUnitTest, UnsetOffloadMode_001, TestSize.Level1)
1554 {
1555     AudioService *audioService = AudioService::GetInstance();
1556     audioService->allRunningSinks_.insert(1);
1557     int ret = audioService->UnsetOffloadMode(1);
1558     EXPECT_EQ(ret, ERROR);
1559 }
1560 
1561 /**
1562  * @tc.name  : Test DelayCallReleaseEndpoint API
1563  * @tc.type  : FUNC
1564  * @tc.number: DelayCallReleaseEndpoint_001
1565  * @tc.desc  : Test DelayCallReleaseEndpoint interface.
1566  */
1567 HWTEST(AudioServiceUnitTest, DelayCallReleaseEndpoint_001, TestSize.Level1)
1568 {
1569     AudioService *audioService = AudioService::GetInstance();
1570     AudioProcessConfig clientConfig = {};
1571     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_MMAP,
1572         123, clientConfig);
1573     EXPECT_NE(nullptr, endpoint);
1574     string endpointName = endpoint->GetEndpointName();
1575     audioService->endpointList_[endpointName] = endpoint;
1576 
1577     audioService->releasingEndpointSet_.insert(endpointName);
1578     audioService->DelayCallReleaseEndpoint(endpointName);
1579     EXPECT_EQ(audioService->endpointList_.count(endpointName), 1);
1580 
1581     audioService->releasingEndpointSet_.insert(endpointName);
1582     endpoint->endpointStatus_ = AudioEndpoint::EndpointStatus::UNLINKED;
1583     audioService->DelayCallReleaseEndpoint(endpointName);
1584     EXPECT_EQ(audioService->endpointList_.count(endpointName), 0);
1585 }
1586 
1587 /**
1588  * @tc.name  : Test ReleaseProcess API
1589  * @tc.type  : FUNC
1590  * @tc.number: ReleaseProcess_001
1591  * @tc.desc  : Test ReleaseProcess interface.
1592  */
1593 HWTEST(AudioServiceUnitTest, ReleaseProcess_001, TestSize.Level1)
1594 {
1595     AudioService *audioService = AudioService::GetInstance();
1596     EXPECT_NE(audioService, nullptr);
1597 
1598     std::string endpointName = "invalid_endpoint";
1599     audioService->ReleaseProcess(endpointName, 0);
1600 }
1601 
1602 /**
1603  * @tc.name  : Test ReleaseProcess API
1604  * @tc.type  : FUNC
1605  * @tc.number: ReleaseProcess_002
1606  * @tc.desc  : Test ReleaseProcess interface.
1607  */
1608 HWTEST(AudioServiceUnitTest, ReleaseProcess_002, TestSize.Level1)
1609 {
1610     AudioService *audioService = AudioService::GetInstance();
1611     std::string endpointName = "endpoint";
1612     std::shared_ptr<AudioEndpoint> audioEndpoint = nullptr;
1613     int32_t delayInMs = 1;
1614     audioService->endpointList_[endpointName] = audioEndpoint;
1615     audioService->ReleaseProcess(endpointName, delayInMs);
1616     EXPECT_EQ(audioService->endpointList_.count(endpointName), 1);
1617     audioService->endpointList_.erase(endpointName);
1618 
1619     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1620     audioService->SetIncMaxRendererStreamCnt(audioMode);
1621 
1622     audioService->currentRendererStreamCnt_ = 0;
1623     int32_t res = audioService->GetCurrentRendererStreamCnt();
1624     EXPECT_EQ(res, 0);
1625 }
1626 
1627 /**
1628  * @tc.name  : Test ReleaseProcess API
1629  * @tc.type  : FUNC
1630  * @tc.number: ReleaseProcess_003
1631  * @tc.desc  : Test ReleaseProcess interface.
1632  */
1633 HWTEST(AudioServiceUnitTest, ReleaseProcess_003, TestSize.Level1)
1634 {
1635     AudioService *audioService = AudioService::GetInstance();
1636     audioService->currentRendererStreamCnt_ = 0;
1637     audioService->ReleaseProcess("endponit", 0);
1638 
1639     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1640     audioService->SetIncMaxRendererStreamCnt(audioMode);
1641     int32_t res = audioService->GetCurrentRendererStreamCnt();
1642     EXPECT_EQ(res, 1);
1643 }
1644 
1645 /**
1646  * @tc.name  : Test ReleaseProcess API
1647  * @tc.type  : FUNC
1648  * @tc.number: ReleaseProcess_004
1649  * @tc.desc  : Test ReleaseProcess interface.
1650  */
1651 HWTEST(AudioServiceUnitTest, ReleaseProcess_004, TestSize.Level1)
1652 {
1653     AudioService *audioService = AudioService::GetInstance();
1654     audioService->currentRendererStreamCnt_ = 0;
1655     audioService->releasingEndpointSet_.insert("endponit");
1656     audioService->ReleaseProcess("endponit", 1);
1657 
1658     AudioMode audioMode = AUDIO_MODE_PLAYBACK;
1659     audioService->SetIncMaxRendererStreamCnt(audioMode);
1660     int32_t res = audioService->GetCurrentRendererStreamCnt();
1661     EXPECT_EQ(res, 1);
1662 }
1663 
1664 /**
1665  * @tc.name  : Test GetReleaseDelayTime API
1666  * @tc.type  : FUNC
1667  * @tc.number: GetReleaseDelayTime_001
1668  * @tc.desc  : Test GetReleaseDelayTime interface.
1669  */
1670 HWTEST(AudioServiceUnitTest, GetReleaseDelayTime_001, TestSize.Level1)
1671 {
1672     AudioService *audioService = AudioService::GetInstance();
1673     EXPECT_NE(audioService, nullptr);
1674 
1675     AudioProcessConfig clientConfig = {};
1676     std::shared_ptr<AudioEndpoint> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
1677         123, clientConfig);
1678     EXPECT_NE(nullptr, endpoint);
1679 
1680     bool isSwitchStream = false;
1681     int ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, false);
1682     EXPECT_EQ(ret, VOIP_ENDPOINT_RELEASE_DELAY_TIME);
1683     ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, true);
1684     EXPECT_EQ(ret, VOIP_REC_ENDPOINT_RELEASE_DELAY_TIME);
1685 }
1686 
1687 /**
1688  * @tc.name  : Test GetReleaseDelayTime API
1689  * @tc.type  : FUNC
1690  * @tc.number: GetReleaseDelayTime_002
1691  * @tc.desc  : Test GetReleaseDelayTime interface.
1692  */
1693 HWTEST(AudioServiceUnitTest, GetReleaseDelayTime_002, TestSize.Level1)
1694 {
1695     AudioService *audioService = AudioService::GetInstance();
1696     EXPECT_NE(audioService, nullptr);
1697 
1698     AudioProcessConfig clientConfig = {};
1699     std::shared_ptr<AudioEndpoint> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_MMAP,
1700         123, clientConfig);
1701     EXPECT_NE(nullptr, endpoint);
1702 
1703     bool isSwitchStream = false;
1704     int ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, false);
1705     EXPECT_EQ(ret, NORMAL_ENDPOINT_RELEASE_DELAY_TIME_MS);
1706     ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, true);
1707     EXPECT_EQ(ret, NORMAL_ENDPOINT_RELEASE_DELAY_TIME_MS);
1708 }
1709 
1710 /**
1711  * @tc.name  : Test GetReleaseDelayTime API
1712  * @tc.type  : FUNC
1713  * @tc.number: GetReleaseDelayTime_003
1714  * @tc.desc  : Test GetReleaseDelayTime interface.
1715  */
1716 HWTEST(AudioServiceUnitTest, GetReleaseDelayTime_003, TestSize.Level1)
1717 {
1718     AudioService *audioService = AudioService::GetInstance();
1719     EXPECT_NE(audioService, nullptr);
1720 
1721     AudioProcessConfig clientConfig = {};
1722     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_MMAP,
1723         123, clientConfig);
1724     EXPECT_NE(nullptr, endpoint);
1725 
1726     endpoint->deviceInfo_.deviceType_ = DEVICE_TYPE_BLUETOOTH_A2DP;
1727 
1728     bool isSwitchStream = false;
1729     int ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, false);
1730     EXPECT_EQ(ret, A2DP_ENDPOINT_RELEASE_DELAY_TIME);
1731     ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, true);
1732     EXPECT_EQ(ret, A2DP_ENDPOINT_RELEASE_DELAY_TIME);
1733     isSwitchStream = true;
1734     ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, false);
1735     EXPECT_EQ(ret, A2DP_ENDPOINT_RE_CREATE_RELEASE_DELAY_TIME);
1736     ret = audioService->GetReleaseDelayTime(endpoint, isSwitchStream, true);
1737     EXPECT_EQ(ret, A2DP_ENDPOINT_RE_CREATE_RELEASE_DELAY_TIME);
1738 }
1739 
1740 /**
1741  * @tc.name  : Test GetStandbyStatus API
1742  * @tc.type  : FUNC
1743  * @tc.number: GetStandbyStatus_002
1744  * @tc.desc  : Test GetStandbyStatus interface.
1745  */
1746 HWTEST(AudioServiceUnitTest, GetStandbyStatus_002, TestSize.Level1)
1747 {
1748     AudioService *audioService = AudioService::GetInstance();
1749     EXPECT_NE(audioService, nullptr);
1750 
1751     AudioProcessConfig processConfig;
1752 
1753     std::shared_ptr<RendererInServer> rendererInServer1 = nullptr;
1754 
1755     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
1756         std::make_shared<StreamListenerHolder>();
1757     EXPECT_NE(streamListenerHolder, nullptr);
1758     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
1759     std::shared_ptr<RendererInServer> rendererInServer2 =
1760         std::make_shared<RendererInServer>(processConfig, streamListener);
1761     EXPECT_NE(rendererInServer2, nullptr);
1762 
1763     audioService->allRendererMap_.clear();
1764     audioService->allRendererMap_.insert(std::make_pair(0, rendererInServer1));
1765     audioService->allRendererMap_.insert(std::make_pair(1, rendererInServer2));
1766 
1767     uint32_t sessionId = 0;
1768     bool isStandby = true;
1769     int64_t enterStandbyTime = 0;
1770     int ret = audioService->GetStandbyStatus(sessionId, isStandby, enterStandbyTime);
1771     EXPECT_EQ(ret, ERR_INVALID_PARAM);
1772     sessionId = 1;
1773     ret = audioService->GetStandbyStatus(sessionId, isStandby, enterStandbyTime);
1774     EXPECT_EQ(ret, SUCCESS);
1775 
1776     audioService->allRendererMap_.clear();
1777 }
1778 
1779 /**
1780  * @tc.name  : Test RemoveRenderer API
1781  * @tc.type  : FUNC
1782  * @tc.number: RemoveRenderer_001
1783  * @tc.desc  : Test RemoveRenderer interface.
1784  */
1785 HWTEST(AudioServiceUnitTest, RemoveRenderer_001, TestSize.Level1)
1786 {
1787     AudioService *audioService = AudioService::GetInstance();
1788     EXPECT_NE(audioService, nullptr);
1789 
1790     audioService->allRendererMap_.clear();
1791 
1792     uint32_t sessionId = 100001;
1793     audioService->UpdateMuteControlSet(sessionId, true);
1794 
1795     std::set<uint32_t>::iterator end = audioService->mutedSessions_.end();
1796     std::set<uint32_t>::iterator it = end;
1797     audioService->RemoveRenderer(sessionId, true);
1798     {
1799         std::lock_guard<std::mutex> lock(audioService->mutedSessionsMutex_);
1800         it = audioService->mutedSessions_.find(sessionId);
1801         EXPECT_NE(it, end);
1802     }
1803 
1804     audioService->RemoveRenderer(sessionId, false);
1805     {
1806         std::lock_guard<std::mutex> lock(audioService->mutedSessionsMutex_);
1807         it = audioService->mutedSessions_.find(sessionId);
1808         EXPECT_NE(it, end);
1809     }
1810 }
1811 
1812 /**
1813  * @tc.name  : Test AddFilteredRender API
1814  * @tc.type  : FUNC
1815  * @tc.number: AddFilteredRender_001
1816  * @tc.desc  : Test AddFilteredRender interface.
1817  */
1818 HWTEST(AudioServiceUnitTest, AddFilteredRender_001, TestSize.Level1)
1819 {
1820     AudioService *audioService = AudioService::GetInstance();
1821     EXPECT_NE(audioService, nullptr);
1822 
1823     audioService->filteredRendererMap_.clear();
1824 
1825     int32_t innerCapId = 0;
1826     std::shared_ptr<RendererInServer> renderer = nullptr;
1827     audioService->AddFilteredRender(innerCapId, renderer);
1828 }
1829 
1830 /**
1831  * @tc.name  : Test CheckInnerCapForRenderer API
1832  * @tc.type  : FUNC
1833  * @tc.number: CheckInnerCapForRenderer_002
1834  * @tc.desc  : Test CheckInnerCapForRenderer interface.
1835  */
1836 HWTEST(AudioServiceUnitTest, CheckInnerCapForRenderer_002, TestSize.Level1)
1837 {
1838     AudioService *audioService = AudioService::GetInstance();
1839     EXPECT_NE(audioService, nullptr);
1840 
1841     audioService->workingConfigs_.clear();
1842 
1843     uint32_t sessionId = 0;
1844     std::shared_ptr<RendererInServer> renderer = nullptr;
1845     audioService->CheckInnerCapForRenderer(sessionId, renderer);
1846 }
1847 
1848 /**
1849  * @tc.name  : Test ShouldBeInnerCap API
1850  * @tc.type  : FUNC
1851  * @tc.number: ShouldBeInnerCap_002
1852  * @tc.desc  : Test ShouldBeInnerCap interface.
1853  */
1854 HWTEST(AudioServiceUnitTest, ShouldBeInnerCap_002, TestSize.Level1)
1855 {
1856     AudioService *audioService = AudioService::GetInstance();
1857     EXPECT_NE(audioService, nullptr);
1858 
1859     audioService->workingConfigs_.clear();
1860 
1861     AudioProcessConfig rendererConfig;
1862     rendererConfig.privacyType = AudioPrivacyType::PRIVACY_TYPE_PUBLIC;
1863     int32_t innerCapId = 1;
1864     bool ret = audioService->ShouldBeInnerCap(rendererConfig, innerCapId);
1865     EXPECT_EQ(ret, false);
1866 }
1867 
1868 /**
1869  * @tc.name  : Test ShouldBeInnerCap API
1870  * @tc.type  : FUNC
1871  * @tc.number: ShouldBeInnerCap_003
1872  * @tc.desc  : Test ShouldBeInnerCap interface.
1873  */
1874 HWTEST(AudioServiceUnitTest, ShouldBeInnerCap_003, TestSize.Level1)
1875 {
1876     AudioService *audioService = AudioService::GetInstance();
1877     EXPECT_NE(audioService, nullptr);
1878 
1879     AudioProcessConfig rendererConfig;
1880     rendererConfig.privacyType = AudioPrivacyType::PRIVACY_TYPE_PRIVATE;
1881     std::set<int32_t> beCapIds;
1882     bool ret = audioService->ShouldBeInnerCap(rendererConfig, beCapIds);
1883     EXPECT_EQ(ret, false);
1884 }
1885 
1886 /**
1887  * @tc.name  : Test CheckShouldCap API
1888  * @tc.type  : FUNC
1889  * @tc.number: CheckShouldCap_001
1890  * @tc.desc  : Test CheckShouldCap interface.
1891  */
1892 HWTEST(AudioServiceUnitTest, CheckShouldCap_001, TestSize.Level1)
1893 {
1894     AudioService *audioService = AudioService::GetInstance();
1895     EXPECT_NE(audioService, nullptr);
1896 
1897     audioService->filteredRendererMap_.clear();
1898 
1899     AudioPlaybackCaptureConfig audioPlaybackCaptureConfig;
1900     audioPlaybackCaptureConfig.filterOptions.usages.push_back(STREAM_USAGE_MEDIA);
1901     audioService->workingConfigs_.clear();
1902     audioService->workingConfigs_.insert(std::make_pair(1, audioPlaybackCaptureConfig));
1903 
1904     int32_t innerCapId = 0;
1905     AudioProcessConfig rendererConfig;
1906     bool ret = audioService->CheckShouldCap(rendererConfig, innerCapId);
1907     EXPECT_EQ(ret, false);
1908     innerCapId = 1;
1909     ret = audioService->CheckShouldCap(rendererConfig, innerCapId);
1910     EXPECT_EQ(ret, false);
1911     audioPlaybackCaptureConfig.filterOptions.pids.push_back(1);
1912     ret = audioService->CheckShouldCap(rendererConfig, innerCapId);
1913     EXPECT_EQ(ret, false);
1914 
1915     audioService->workingConfigs_.clear();
1916 }
1917 
1918 /**
1919  * @tc.name  : Test FilterAllFastProcess API
1920  * @tc.type  : FUNC
1921  * @tc.number: FilterAllFastProcess_002
1922  * @tc.desc  : Test FilterAllFastProcess interface.
1923  */
1924 HWTEST(AudioServiceUnitTest, FilterAllFastProcess_002, TestSize.Level1)
1925 {
1926     AudioService *audioService = AudioService::GetInstance();
1927     EXPECT_NE(audioService, nullptr);
1928 
1929     AudioProcessConfig config = {};
1930     config.audioMode = AUDIO_MODE_PLAYBACK;
1931     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
1932     EXPECT_NE(audioprocess, nullptr);
1933 
1934     AudioProcessConfig clientConfig = {};
1935     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
1936         123, clientConfig);
1937     EXPECT_NE(endpoint, nullptr);
1938     endpoint->deviceInfo_.deviceRole_ = OUTPUT_DEVICE;
1939 
1940     audioService->linkedPairedList_.clear();
1941     audioService->linkedPairedList_.push_back(std::make_pair(audioprocess, endpoint));
1942 
1943     audioService->endpointList_.clear();
1944     audioService->endpointList_.insert(std::make_pair("endpoint", endpoint));
1945 
1946     audioService->FilterAllFastProcess();
1947 
1948     audioService->linkedPairedList_.clear();
1949     audioService->endpointList_.clear();
1950 }
1951 
1952 /**
1953  * @tc.name  : Test CheckDisableFastInner API
1954  * @tc.type  : FUNC
1955  * @tc.number: CheckDisableFastInner_001
1956  * @tc.desc  : Test CheckDisableFastInner interface.
1957  */
1958 HWTEST(AudioServiceUnitTest, CheckDisableFastInner_001, TestSize.Level1)
1959 {
1960     AudioService *audioService = AudioService::GetInstance();
1961     EXPECT_NE(audioService, nullptr);
1962 
1963     AudioPlaybackCaptureConfig audioPlaybackCaptureConfig;
1964     audioService->workingConfigs_.clear();
1965     audioService->workingConfigs_.insert(std::make_pair(1, audioPlaybackCaptureConfig));
1966 
1967     AudioProcessConfig clientConfig = {};
1968     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
1969         123, clientConfig);
1970     int32_t ret = audioService->CheckDisableFastInner(endpoint);
1971     EXPECT_EQ(ret, SUCCESS);
1972 
1973     audioService->workingConfigs_.clear();
1974 }
1975 
1976 /**
1977  * @tc.name  : Test HandleFastCapture API
1978  * @tc.type  : FUNC
1979  * @tc.number: HandleFastCapture_001
1980  * @tc.desc  : Test HandleFastCapture interface.
1981  */
1982 HWTEST(AudioServiceUnitTest, HandleFastCapture_001, TestSize.Level1)
1983 {
1984     AudioService *audioService = AudioService::GetInstance();
1985     EXPECT_NE(audioService, nullptr);
1986 
1987     audioService->filteredRendererMap_.clear();
1988 
1989     std::set<int32_t> captureIds = {1};
1990     AudioProcessConfig config = {};
1991     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
1992     EXPECT_NE(audioprocess, nullptr);
1993 
1994     AudioProcessConfig clientConfig = {};
1995     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
1996         123, clientConfig);
1997     EXPECT_NE(endpoint, nullptr);
1998 
1999     int32_t ret = audioService->HandleFastCapture(captureIds, audioprocess, endpoint);
2000     EXPECT_EQ(ret, SUCCESS);
2001 }
2002 
2003 /**
2004  * @tc.name  : Test OnInitInnerCapList API
2005  * @tc.type  : FUNC
2006  * @tc.number: OnInitInnerCapList_001
2007  * @tc.desc  : Test OnInitInnerCapList interface.
2008  */
2009 HWTEST(AudioServiceUnitTest, OnInitInnerCapList_001, TestSize.Level1)
2010 {
2011     AudioService *audioService = AudioService::GetInstance();
2012     EXPECT_NE(audioService, nullptr);
2013 
2014     std::shared_ptr<RendererInServer> rendererInServer1 = nullptr;
2015 
2016     AudioProcessConfig processConfig;
2017     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
2018         std::make_shared<StreamListenerHolder>();
2019     EXPECT_NE(streamListenerHolder, nullptr);
2020     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
2021     std::shared_ptr<RendererInServer> rendererInServer2 =
2022         std::make_shared<RendererInServer>(processConfig, streamListener);
2023     EXPECT_NE(rendererInServer2, nullptr);
2024 
2025     audioService->allRendererMap_.clear();
2026     audioService->allRendererMap_.insert(std::make_pair(0, rendererInServer1));
2027     audioService->allRendererMap_.insert(std::make_pair(1, rendererInServer2));
2028 
2029     int32_t innerCapId = 0;
2030     int32_t ret = audioService->OnInitInnerCapList(innerCapId);
2031     AudioService::GetInstance()->InitAllDupBuffer(1);
2032     AudioService::GetInstance()->RenderersCheckForAudioWorkgroup(1);
2033     EXPECT_EQ(ret, SUCCESS);
2034 
2035     audioService->allRendererMap_.clear();
2036 }
2037 
2038 /**
2039  * @tc.name  : Test SetDefaultAdapterEnable API
2040  * @tc.type  : FUNC
2041  * @tc.number: SetDefaultAdapterEnable_001
2042  * @tc.desc  : Test SetDefaultAdapterEnable interface.
2043  */
2044 HWTEST(AudioServiceUnitTest, SetDefaultAdapterEnable_001, TestSize.Level1)
2045 {
2046     AudioService *audioService = AudioService::GetInstance();
2047     EXPECT_NE(audioService, nullptr);
2048     bool isEnable = false;
2049     audioService->SetDefaultAdapterEnable(isEnable);
2050     bool result = audioService->GetDefaultAdapterEnable();
2051     EXPECT_EQ(result, isEnable);
2052 }
2053 
2054 /*
2055  * @tc.name  : Test SetSessionMuteState API
2056  * @tc.type  : FUNC
2057  * @tc.number: AudioServiceSetSessionMuteState_001
2058  * @tc.desc  : Test RegisterMuteStateChangeCallback whether callback can invoke.
2059  */
2060 HWTEST(AudioServiceUnitTest, AudioServiceSetSessionMuteState_001, TestSize.Level1)
2061 {
2062     bool muteFlag = true;
2063     uint32_t sessionId = 0;
2064     uint32_t sessionId2 = 1;
2065     uint32_t sessionId3 = 3;
2066     bool testFlag = false;
2067 
2068     auto service = AudioService::GetInstance();
2069     ASSERT_NE(service, nullptr);
2070     service->SetSessionMuteState(sessionId, true, muteFlag);
__anonb847c60c0102(bool flag) 2071     service->RegisterMuteStateChangeCallback(sessionId2, [&](bool flag) {
2072         testFlag = flag;
2073     });
2074     EXPECT_EQ(testFlag, false);
__anonb847c60c0202(bool flag) 2075     service->RegisterMuteStateChangeCallback(sessionId, [&](bool flag) {
2076         testFlag = flag;
2077     });
2078     EXPECT_EQ(testFlag, false);
2079 
2080     testFlag = false;
2081     service->SetLatestMuteState(sessionId3, muteFlag);
2082     EXPECT_FALSE(testFlag);
2083 
__anonb847c60c0302(bool flag) 2084     service->RegisterMuteStateChangeCallback(sessionId3, [&](bool flag) {
2085         testFlag = flag;
2086     });
2087     service->SetSessionMuteState(sessionId3, true, muteFlag);
2088     service->SetLatestMuteState(sessionId3, muteFlag);
2089     EXPECT_EQ(testFlag, muteFlag);
2090 }
2091 
2092 /**
2093  * @tc.name  : Test SetSessionMuteState API
2094  * @tc.type  : FUNC
2095  * @tc.number: AudioServiceSetSessionMuteState_002
2096  * @tc.desc  : Test SetSessionMuteState interface .
2097  */
2098 HWTEST(AudioServiceUnitTest, AudioServiceSetSessionMuteState_002, TestSize.Level1)
2099 {
2100     bool muteFlag = true;
2101     uint32_t sessionId = 0;
2102     auto service = AudioService::GetInstance();
2103     ASSERT_NE(service, nullptr);
2104     service->SetSessionMuteState(sessionId, true, muteFlag);
2105     EXPECT_TRUE(service->muteStateMap_.count(sessionId) != 0);
2106     service->SetSessionMuteState(sessionId, false, muteFlag);
2107     EXPECT_TRUE(service->muteStateMap_.count(sessionId) == 0);
2108 }
2109 
2110 /**
2111  * @tc.name  : Test GetCurrentLoopbackStreamCnt API
2112  * @tc.type  : FUNC
2113  * @tc.number: AudioServiceLoopbackStreamCnt_001,
2114  * @tc.desc  : Test GetCurrentLoopbackStreamCnt interface.
2115  */
2116 HWTEST(AudioServiceUnitTest, AudioServiceLoopbackStreamCnt_001, TestSize.Level1)
2117 {
2118     int32_t rendererCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_PLAYBACK);
2119     int32_t capturerCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_RECORD);
2120     EXPECT_EQ(rendererCnt, 0);
2121     EXPECT_EQ(capturerCnt, 0);
2122     AudioService::GetInstance()->SetIncMaxLoopbackStreamCnt(AUDIO_MODE_PLAYBACK);
2123     AudioService::GetInstance()->SetIncMaxLoopbackStreamCnt(AUDIO_MODE_RECORD);
2124     rendererCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_PLAYBACK);
2125     capturerCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_RECORD);
2126     EXPECT_EQ(rendererCnt, 1);
2127     EXPECT_EQ(capturerCnt, 1);
2128     AudioService::GetInstance()->SetDecMaxLoopbackStreamCnt(AUDIO_MODE_PLAYBACK);
2129     AudioService::GetInstance()->SetDecMaxLoopbackStreamCnt(AUDIO_MODE_RECORD);
2130     rendererCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_PLAYBACK);
2131     capturerCnt = AudioService::GetInstance()->GetCurrentLoopbackStreamCnt(AUDIO_MODE_RECORD);
2132     EXPECT_EQ(rendererCnt, 0);
2133     EXPECT_EQ(capturerCnt, 0);
2134 }
2135 
2136 /**
2137  * @tc.name  : Test SaveForegroundList API
2138  * @tc.type  : FUNC
2139  * @tc.number: SaveForegroundList_001,
2140  * @tc.desc  : Test SaveForegroundList interface.
2141  */
2142 HWTEST(AudioServiceUnitTest, SaveForegroundList_001, TestSize.Level1)
2143 {
2144     std::vector<std::string> list;
2145     list.resize(11);
2146     EXPECT_EQ(list.size(), 11);
2147     AudioService::GetInstance()->SaveForegroundList(list);
2148     EXPECT_EQ(AudioService::GetInstance()->foregroundSet_.size(), 0);
2149     EXPECT_EQ(AudioService::GetInstance()->foregroundUidSet_.size(), 0);
2150 
2151     list.resize(5);
2152     EXPECT_EQ(list.size(), 5);
2153     AudioService::GetInstance()->SaveForegroundList(list);
2154 }
2155 
2156 /**
2157  * @tc.name  : Test MatchForegroundList API
2158  * @tc.type  : FUNC
2159  * @tc.number: MatchForegroundList_001,
2160  * @tc.desc  : Test MatchForegroundList interface.
2161  */
2162 HWTEST(AudioServiceUnitTest, MatchForegroundList_001, TestSize.Level1)
2163 {
2164     uint32_t uid = 0;
2165     std::string bundleName = "test";
2166     AudioService::GetInstance()->foregroundSet_.clear();
2167     bool ret = AudioService::GetInstance()->MatchForegroundList(bundleName, uid);
2168     EXPECT_FALSE(ret);
2169 
2170     AudioService::GetInstance()->foregroundSet_.insert(bundleName);
2171     ret = AudioService::GetInstance()->MatchForegroundList(bundleName, uid);
2172     EXPECT_TRUE(ret);
2173 
2174     uid = 10;
2175     AudioService::GetInstance()->foregroundUidSet_.clear();
2176     ret = AudioService::GetInstance()->MatchForegroundList(bundleName, uid);
2177     EXPECT_TRUE(AudioService::GetInstance()->foregroundUidSet_.find(uid) !=
2178         AudioService::GetInstance()->foregroundUidSet_.end());
2179     EXPECT_TRUE(ret);
2180 }
2181 
2182 /**
2183  * @tc.name  : Test InForegroundList API
2184  * @tc.type  : FUNC
2185  * @tc.number: InForegroundList_001,
2186  * @tc.desc  : Test InForegroundList interface.
2187  */
2188 HWTEST(AudioServiceUnitTest, InForegroundList_001, TestSize.Level1)
2189 {
2190     uint32_t uid = 5;
2191     AudioService::GetInstance()->foregroundUidSet_.clear();
2192     bool ret = AudioService::GetInstance()->InForegroundList(uid);
2193     EXPECT_FALSE(ret);
2194 
2195     AudioService::GetInstance()->foregroundUidSet_.insert(uid);
2196     ret = AudioService::GetInstance()->InForegroundList(uid);
2197     EXPECT_TRUE(ret);
2198 }
2199 
2200 #ifdef SUPPORT_LOW_LATENCY
2201 /**
2202  * @tc.name  : Test CheckBeforeRecordEndpointCreate API
2203  * @tc.type  : FUNC
2204  * @tc.number: CheckBeforeRecordEndpointCreate_001,
2205  * @tc.desc  : Test CheckBeforeRecordEndpointCreate interface.
2206  */
2207 HWTEST(AudioServiceUnitTest, CheckBeforeRecordEndpointCreate_001, TestSize.Level1)
2208 {
2209     bool isRecord = false;
2210     AudioService::GetInstance()->CheckBeforeRecordEndpointCreate(isRecord);
2211 
2212     isRecord = true;
2213     std::string endpointName = "test";
2214     AudioProcessConfig clientConfig = {};
2215     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
2216         123, clientConfig);
2217     EXPECT_NE(endpoint, nullptr);
2218     endpoint->clientConfig_.audioMode = AudioMode::AUDIO_MODE_RECORD;
2219     AudioService::GetInstance()->endpointList_[endpointName] = endpoint;
2220     AudioService::GetInstance()->CheckBeforeRecordEndpointCreate(isRecord);
2221 }
2222 
2223 /**
2224  * @tc.name  : Test CheckBeforeRecordEndpointCreate API
2225  * @tc.type  : FUNC
2226  * @tc.number: CheckBeforeRecordEndpointCreate_002,
2227  * @tc.desc  : Test CheckBeforeRecordEndpointCreate interface.
2228  */
2229 HWTEST(AudioServiceUnitTest, CheckBeforeRecordEndpointCreate_002, TestSize.Level1)
2230 {
2231     bool isRecord = true;
2232     std::string endpointName = "test";
2233     AudioProcessConfig clientConfig = {};
2234     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
2235         123, clientConfig);
2236     EXPECT_NE(endpoint, nullptr);
2237     endpoint->clientConfig_.audioMode = AudioMode::AUDIO_MODE_PLAYBACK;
2238     AudioService::GetInstance()->endpointList_[endpointName] = endpoint;
2239     AudioService::GetInstance()->CheckBeforeRecordEndpointCreate(isRecord);
2240 }
2241 
2242 /**
2243  * @tc.name  : Test NotifyStreamVolumeChanged API
2244  * @tc.type  : FUNC
2245  * @tc.number: NotifyStreamVolumeChanged_001
2246  * @tc.desc  : Test NotifyStreamVolumeChanged interface.
2247  */
2248 HWTEST(AudioServiceUnitTest, NotifyStreamVolumeChanged_001, TestSize.Level1)
2249 {
2250     float volume = 1.0f;
2251     AudioStreamType streamType = STREAM_MUSIC;
2252 
2253     std::string endpointName = "test";
2254     AudioService::GetInstance()->endpointList_.clear();
2255     AudioService::GetInstance()->endpointList_[endpointName] = nullptr;
2256     auto ret = AudioService::GetInstance()->NotifyStreamVolumeChanged(streamType, volume);
2257     EXPECT_EQ(ret, SUCCESS);
2258 }
2259 
2260 /**
2261  * @tc.name  : Test NotifyStreamVolumeChanged API
2262  * @tc.type  : FUNC
2263  * @tc.number: NotifyStreamVolumeChanged_002
2264  * @tc.desc  : Test NotifyStreamVolumeChanged interface.
2265  */
2266 HWTEST(AudioServiceUnitTest, NotifyStreamVolumeChanged_002, TestSize.Level1)
2267 {
2268     float volume = 1.0f;
2269     AudioStreamType streamType = STREAM_MUSIC;
2270 
2271     std::string endpointName = "test";
2272     AudioService::GetInstance()->endpointList_.clear();
2273     AudioProcessConfig clientConfig = {};
2274     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
2275         123, clientConfig);
2276     EXPECT_NE(endpoint, nullptr);
2277     AudioService::GetInstance()->endpointList_[endpointName] = endpoint;
2278     auto ret = AudioService::GetInstance()->NotifyStreamVolumeChanged(streamType, volume);
2279     EXPECT_EQ(ret, SUCCESS);
2280 }
2281 #endif
2282 
2283 /**
2284  * @tc.name  : Test GetRendererBySessionID API
2285  * @tc.type  : FUNC
2286  * @tc.number: GetRendererBySessionId_001
2287  * @tc.desc  : Test GetRendererBySessionID interface.
2288  */
2289 HWTEST(AudioServiceUnitTest, GetRendererBySessionId_001, TestSize.Level1)
2290 {
2291     uint32_t sessionID = 10;
2292     AudioService::GetInstance()->allRendererMap_.clear();
2293     auto ret = AudioService::GetInstance()->GetRendererBySessionID(sessionID);
2294     EXPECT_EQ(ret, nullptr);
2295 
2296     AudioProcessConfig processConfig;
2297     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
2298         std::make_shared<StreamListenerHolder>();
2299     EXPECT_NE(streamListenerHolder, nullptr);
2300     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
2301     std::shared_ptr<RendererInServer> rendererInServer =
2302         std::make_shared<RendererInServer>(processConfig, streamListener);
2303     EXPECT_NE(rendererInServer, nullptr);
2304     std::weak_ptr<RendererInServer> server = rendererInServer;
2305 
2306     AudioService::GetInstance()->allRendererMap_[sessionID] = server;
2307     ret = AudioService::GetInstance()->GetRendererBySessionID(sessionID);
2308     EXPECT_NE(ret, nullptr);
2309 }
2310 
2311 #ifdef SUPPORT_LOW_LATENCY
2312 /**
2313  * @tc.name  : Test SetNonInterruptMuteForProcess API
2314  * @tc.type  : FUNC
2315  * @tc.number: SetNonInterruptMuteForProcess_001
2316  * @tc.desc  : Test SetNonInterruptMuteForProcess interface.
2317  */
2318 HWTEST(AudioServiceUnitTest, SetNonInterruptMuteForProcess_001, TestSize.Level1)
2319 {
2320     uint32_t sessionId = 10;
2321     bool muteFlag = true;
2322 
2323     AudioProcessConfig config = {};
2324     config.audioMode = AUDIO_MODE_PLAYBACK;
2325     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
2326     EXPECT_NE(audioprocess, nullptr);
2327     audioprocess->sessionId_ = 10;
2328 
2329     std::shared_ptr<AudioEndpointInner> endpoint = nullptr;
2330     AudioService::GetInstance()->linkedPairedList_.clear();
2331     AudioService::GetInstance()->linkedPairedList_.push_back(std::make_pair(audioprocess, endpoint));
2332     AudioService::GetInstance()->SetNonInterruptMuteForProcess(sessionId, muteFlag);
2333     EXPECT_EQ(AudioService::GetInstance()->linkedPairedList_.begin()->first->GetSessionId(), sessionId);
2334 
2335     sessionId = 0;
2336     AudioService::GetInstance()->SetNonInterruptMuteForProcess(sessionId, muteFlag);
2337 }
2338 
2339 /**
2340  * @tc.name  : Test SetNonInterruptMuteForProcess API
2341  * @tc.type  : FUNC
2342  * @tc.number: SetNonInterruptMuteForProcess_002
2343  * @tc.desc  : Test SetNonInterruptMuteForProcess interface.
2344  */
2345 HWTEST(AudioServiceUnitTest, SetNonInterruptMuteForProcess_002, TestSize.Level1)
2346 {
2347     uint32_t sessionId = 10;
2348     bool muteFlag = true;
2349 
2350     sptr<AudioProcessInServer> audioprocess = nullptr;
2351 
2352     std::shared_ptr<AudioEndpointInner> endpoint = nullptr;
2353     AudioService::GetInstance()->linkedPairedList_.clear();
2354     AudioService::GetInstance()->linkedPairedList_.push_back(std::make_pair(audioprocess, endpoint));
2355     AudioService::GetInstance()->SetNonInterruptMuteForProcess(sessionId, muteFlag);
2356     EXPECT_EQ(AudioService::GetInstance()->linkedPairedList_.begin()->first, nullptr);
2357 }
2358 #endif
2359 
2360 /**
2361  * @tc.name  : Test SetOffloadMode API
2362  * @tc.type  : FUNC
2363  * @tc.number: SetOffloadMode_002
2364  * @tc.desc  : Test SetOffloadMode interface.
2365  */
2366 HWTEST(AudioServiceUnitTest, SetOffloadMode_002, TestSize.Level1)
2367 {
2368     uint32_t sessionId = 2;
2369     int32_t state = 1;
2370     bool isAppBack = true;
2371     AudioService::GetInstance()->allRendererMap_.clear();
2372     std::weak_ptr<RendererInServer> server;
2373     AudioService::GetInstance()->allRendererMap_[sessionId] = server;
2374     int32_t ret = AudioService::GetInstance()->SetOffloadMode(sessionId, state, isAppBack);
2375     EXPECT_EQ(ERROR, ret);
2376 }
2377 
2378 /**
2379  * @tc.name  : Test SetOffloadMode API
2380  * @tc.type  : FUNC
2381  * @tc.number: SetOffloadMode_003
2382  * @tc.desc  : Test SetOffloadMode interface.
2383  */
2384 HWTEST(AudioServiceUnitTest, SetOffloadMode_003, TestSize.Level1)
2385 {
2386     uint32_t sessionId = 2;
2387     int32_t state = 1;
2388     bool isAppBack = true;
2389     AudioService::GetInstance()->allRendererMap_.clear();
2390 
2391     AudioProcessConfig processConfig;
2392     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
2393         std::make_shared<StreamListenerHolder>();
2394     EXPECT_NE(streamListenerHolder, nullptr);
2395     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
2396     std::shared_ptr<RendererInServer> server =
2397         std::make_shared<RendererInServer>(processConfig, streamListener);
2398     EXPECT_NE(server, nullptr);
2399 
2400     bool isDirect = true;
2401     server->stream_ = std::make_shared<ProRendererStreamImpl>(processConfig, isDirect);
2402     AudioService::GetInstance()->allRendererMap_[sessionId] = server;
2403     int32_t ret = AudioService::GetInstance()->SetOffloadMode(sessionId, state, isAppBack);
2404     EXPECT_EQ(SUCCESS, ret);
2405 }
2406 
2407 /**
2408  * @tc.name  : Test UnsetOffloadMode API
2409  * @tc.type  : FUNC
2410  * @tc.number: UnsetOffloadMode_002
2411  * @tc.desc  : Test UnsetOffloadMode interface.
2412  */
2413 HWTEST(AudioServiceUnitTest, UnsetOffloadMode_002, TestSize.Level1)
2414 {
2415     uint32_t sessionId = 10;
2416     AudioService::GetInstance()->allRendererMap_.clear();
2417     int ret = AudioService::GetInstance()->UnsetOffloadMode(sessionId);
2418     EXPECT_EQ(ret, ERR_INVALID_INDEX);
2419 
2420     std::weak_ptr<RendererInServer> server;
2421     AudioService::GetInstance()->allRendererMap_[sessionId] = server;
2422     ret = AudioService::GetInstance()->UnsetOffloadMode(sessionId);
2423     EXPECT_EQ(ret, ERROR);
2424 }
2425 
2426 /**
2427  * @tc.name  : Test UnsetOffloadMode API
2428  * @tc.type  : FUNC
2429  * @tc.number: UnsetOffloadMode_003
2430  * @tc.desc  : Test UnsetOffloadMode interface.
2431  */
2432 HWTEST(AudioServiceUnitTest, UnsetOffloadMode_003, TestSize.Level1)
2433 {
2434     uint32_t sessionId = 10;
2435     AudioService::GetInstance()->allRendererMap_.clear();
2436     AudioProcessConfig processConfig;
2437     std::shared_ptr<StreamListenerHolder> streamListenerHolder =
2438         std::make_shared<StreamListenerHolder>();
2439     EXPECT_NE(streamListenerHolder, nullptr);
2440     std::weak_ptr<IStreamListener> streamListener = streamListenerHolder;
2441     std::shared_ptr<RendererInServer> server =
2442         std::make_shared<RendererInServer>(processConfig, streamListener);
2443     EXPECT_NE(server, nullptr);
2444 
2445     bool isDirect = true;
2446     server->stream_ = std::make_shared<ProRendererStreamImpl>(processConfig, isDirect);
2447     AudioService::GetInstance()->allRendererMap_[sessionId] = server;
2448     auto ret = AudioService::GetInstance()->UnsetOffloadMode(sessionId);
2449     EXPECT_EQ(ret, SUCCESS);
2450 }
2451 
2452 /**
2453  * @tc.name  : Test UpdateAudioSinkState API
2454  * @tc.type  : FUNC
2455  * @tc.number: UpdateAudioSinkState_003
2456  * @tc.desc  : Test UpdateAudioSinkState interface.
2457  */
2458 HWTEST(AudioServiceUnitTest, UpdateAudioSinkState_003, TestSize.Level1)
2459 {
2460     uint32_t sinkId = 10;
2461     bool started = false;
2462 
2463     AudioService::GetInstance()->allRunningSinks_.clear();
2464     AudioService::GetInstance()->allRunningSinks_.insert(sinkId);
2465     AudioService::GetInstance()->UpdateAudioSinkState(sinkId, started);
2466     EXPECT_TRUE(AudioService::GetInstance()->allRunningSinks_.empty());
2467 
2468     uint32_t num = 5;
2469     AudioService::GetInstance()->allRunningSinks_.insert(num);
2470     AudioService::GetInstance()->allRunningSinks_.insert(sinkId);
2471     AudioService::GetInstance()->UpdateAudioSinkState(sinkId, started);
2472     EXPECT_FALSE(AudioService::GetInstance()->allRunningSinks_.empty());
2473 }
2474 
2475 /**
2476  * @tc.name  : Test UpdateSourceType API
2477  * @tc.type  : FUNC
2478  * @tc.number: UpdateSourceType_001
2479  * @tc.desc  : Test UPdateSourceType interface.
2480  */
2481 HWTEST(AudioServiceUnitTest, UpdateSourceType_001, TestSize.Level1)
2482 {
2483     SourceType sourceType = SOURCE_TYPE_WAKEUP;
2484     auto ret = AudioService::GetInstance()->UpdateSourceType(sourceType);
2485     EXPECT_EQ(ret, SUCCESS);
2486 
2487     sourceType = SOURCE_TYPE_MIC;
2488     ret = AudioService::GetInstance()->UpdateSourceType(sourceType);
2489     EXPECT_EQ(ret, ERROR);
2490 }
2491 
2492 /**
2493  * @tc.name  : Test RestoreSession API
2494  * @tc.type  : FUNC
2495  * @tc.number: RestoreSession_001
2496  * @tc.desc  : Test RestoreSession interface.
2497  */
2498 HWTEST(AudioServiceUnitTest, RestoreSession_001, TestSize.Level1)
2499 {
2500     uint32_t sessionId = 10;
2501     RestoreInfo restoreInfo;
2502     std::weak_ptr<RendererInServer> rendererInServer;
2503     AudioService::GetInstance()->allRendererMap_.clear();
2504     AudioService::GetInstance()->allRendererMap_[sessionId] = rendererInServer;
2505     auto ret = AudioService::GetInstance()->RestoreSession(sessionId, restoreInfo);
2506     EXPECT_EQ(ret, RESTORE_ERROR);
2507 
2508     std::weak_ptr<CapturerInServer> capturerInServer;
2509     AudioService::GetInstance()->allRendererMap_.clear();
2510     AudioService::GetInstance()->allCapturerMap_.clear();
2511     AudioService::GetInstance()->allCapturerMap_[sessionId] = capturerInServer;
2512     ret = AudioService::GetInstance()->RestoreSession(sessionId, restoreInfo);
2513     EXPECT_EQ(ret, RESTORE_ERROR);
2514 }
2515 
2516 /**
2517  * @tc.name  : Test RestoreSession API
2518  * @tc.type  : FUNC
2519  * @tc.number: RestoreSession_002
2520  * @tc.desc  : Test RestoreSession interface.
2521  */
2522 HWTEST(AudioServiceUnitTest, RestoreSession_002, TestSize.Level1)
2523 {
2524     uint32_t sessionId = 10;
2525     RestoreInfo restoreInfo;
2526     AudioService::GetInstance()->allRendererMap_.clear();
2527     AudioService::GetInstance()->allCapturerMap_.clear();
2528 
2529     AudioProcessConfig config = {};
2530     config.audioMode = AUDIO_MODE_PLAYBACK;
2531     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
2532     EXPECT_NE(audioprocess, nullptr);
2533     audioprocess->sessionId_ = 1;
2534 
2535     std::shared_ptr<AudioEndpointInner> endpoint = nullptr;
2536     AudioService::GetInstance()->linkedPairedList_.clear();
2537     AudioService::GetInstance()->linkedPairedList_.push_back(std::make_pair(audioprocess, endpoint));
2538 
2539     auto ret = AudioService::GetInstance()->RestoreSession(sessionId, restoreInfo);
2540     EXPECT_EQ(ret, RESTORE_ERROR);
2541 }
2542 
2543 /*
2544  * @tc.name  : Test RegisterMuteStateChangeCallback API
2545  * @tc.type  : FUNC
2546  * @tc.number: RegisterMuteStateChangeCallback_001
2547  * @tc.desc  : Test RegisterMuteStateChangeCallback whether callback can invoke.
2548  */
2549 HWTEST(AudioServiceUnitTest, RegisterMuteStateChangeCallback_001, TestSize.Level1)
2550 {
2551     uint32_t sessionId = 10;
2552     bool muteFlag = false;
__anonb847c60c0402(bool flag) 2553     MuteStateChangeCallbck muteStateChangeCallback = [&muteFlag](bool flag) { muteFlag = flag; };
2554     AudioService::GetInstance()->muteStateMap_.clear();
2555     AudioService::GetInstance()->muteStateCallbacks_.clear();
2556     AudioService::GetInstance()->muteStateCallbacks_[sessionId] = muteStateChangeCallback;
2557     AudioService::GetInstance()->RegisterMuteStateChangeCallback(sessionId, muteStateChangeCallback);
2558 
2559     AudioService::GetInstance()->muteStateMap_[sessionId] = true;
2560     AudioService::GetInstance()->RegisterMuteStateChangeCallback(sessionId, muteStateChangeCallback);
2561     EXPECT_EQ(muteFlag, true);
2562 }
2563 
2564 /*
2565  * @tc.name  : Test ForceStopAudioStream API
2566  * @tc.type  : FUNC
2567  * @tc.number: ForceStopAudioStream_001
2568  * @tc.desc  : Test ForceStopAudioStream interface.
2569  */
2570 HWTEST(AudioServiceUnitTest, ForceStopAudioStream_001, TestSize.Level1)
2571 {
2572     StopAudioType stopAudioType = STOP_ALL;
2573     AudioService::GetInstance()->allRendererMap_.clear();
2574     AudioService::GetInstance()->allCapturerMap_.clear();
2575     AudioService::GetInstance()->linkedPairedList_.clear();
2576     auto ret = AudioService::GetInstance()->ForceStopAudioStream(stopAudioType);
2577     EXPECT_EQ(ret, SUCCESS);
2578 
2579     stopAudioType = STOP_RENDER;
2580     ret = AudioService::GetInstance()->ForceStopAudioStream(stopAudioType);
2581     EXPECT_EQ(ret, SUCCESS);
2582 
2583     stopAudioType = STOP_RECORD;
2584     ret = AudioService::GetInstance()->ForceStopAudioStream(stopAudioType);
2585     EXPECT_EQ(ret, SUCCESS);
2586 }
2587 
2588 #ifdef SUPPORT_LOW_LATENCY
2589 /*
2590  * @tc.name  : Test ForceStopAudioStream API
2591  * @tc.type  : FUNC
2592  * @tc.number: ForceStopAudioStream_002
2593  * @tc.desc  : Test ForceStopAudioStream interface.
2594  */
2595 HWTEST(AudioServiceUnitTest, ForceStopAudioStream_002, TestSize.Level1)
2596 {
2597     AudioProcessConfig config = {};
2598     config.audioMode = AUDIO_MODE_PLAYBACK;
2599     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
2600     EXPECT_NE(audioprocess, nullptr);
2601     audioprocess->sessionId_ = 1;
2602 
2603     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
2604         123, config);
2605     EXPECT_NE(endpoint, nullptr);
2606     endpoint->clientConfig_.audioMode = AudioMode::AUDIO_MODE_PLAYBACK;
2607     AudioService::GetInstance()->linkedPairedList_.push_back(std::make_pair(audioprocess, endpoint));
2608 
2609     StopAudioType stopAudioType = STOP_ALL;
2610     auto ret = AudioService::GetInstance()->ForceStopAudioStream(stopAudioType);
2611     EXPECT_EQ(ret, SUCCESS);
2612 
2613     stopAudioType = STOP_RECORD;
2614     ret = AudioService::GetInstance()->ForceStopAudioStream(stopAudioType);
2615     EXPECT_EQ(ret, SUCCESS);
2616 }
2617 #endif
2618 
2619 /**
2620  * @tc.name  : Test ConfigCoreServiceProvider API
2621  * @tc.type  : FUNC
2622  * @tc.number: ConfigCoreServiceProvider_001
2623  * @tc.desc  : Test ConfigCoreServiceProvider interface.
2624  */
2625 HWTEST(AudioServiceUnitTest, ConfigCoreServiceProvider_001, TestSize.Level1)
2626 {
2627     auto coreServiceHandler = CoreServiceHandler::GetInstance();
2628     sptr<ICoreServiceProviderIpc> provider = nullptr;
2629     auto result = coreServiceHandler.ConfigCoreServiceProvider(provider);
2630     EXPECT_EQ(result, ERR_INVALID_PARAM);
2631 }
2632 
2633 /**
2634  * @tc.name  : Test AddThread API
2635  * @tc.type  : FUNC
2636  * @tc.number: AddThread_001
2637  * @tc.desc  : Test AddThread interface.
2638  */
2639 HWTEST(AudioServiceUnitTest, AddThread_001, TestSize.Level1)
2640 {
2641     AudioWorkgroup workgroup(1);
2642     int32_t tid = 10;
2643     ConcurrentTask::IntervalReply reply;
2644     reply.paramA = 1;
2645     int32_t result = workgroup.AddThread(tid);
2646     EXPECT_EQ(result, AUDIO_OK);
2647 }
2648 
2649 /**
2650  * @tc.name  : Test AddThread API
2651  * @tc.type  : FUNC
2652  * @tc.number: AddThread_002
2653  * @tc.desc  : Test AddThread interface.
2654  */
2655 HWTEST(AudioServiceUnitTest, AddThread_002, TestSize.Level1)
2656 {
2657     AudioWorkgroup workgroup(1);
2658     int32_t tid = 10;
2659     ConcurrentTask::IntervalReply reply;
2660     reply.paramA = -1;
2661     int32_t result = workgroup.AddThread(tid);
2662     EXPECT_NE(result, AUDIO_ERR);
2663 }
2664 
2665 /**
2666  * @tc.name  : Test AudioWorkgroup API
2667  * @tc.type  : FUNC
2668  * @tc.number: RemoveThread_001
2669  * @tc.desc  : Test AudioWorkgroup interface.
2670  */
2671 HWTEST(AudioServiceUnitTest, RemoveThread_001, TestSize.Level1)
2672 {
2673     AudioWorkgroup workgroup(1);
2674     int32_t tid = -1;
2675     ConcurrentTask::IntervalReply reply;
2676     reply.paramA = -1;
2677     int32_t result = workgroup.AddThread(tid);
2678     EXPECT_NE(result, AUDIO_ERR);
2679 }
2680 
2681 /**
2682  * @tc.name  : Test AudioWorkgroup API
2683  * @tc.type  : FUNC
2684  * @tc.number: RemoveThread_002
2685  * @tc.desc  : Test AudioWorkgroup interface.
2686  */
2687 HWTEST(AudioServiceUnitTest, RemoveThread_002, TestSize.Level1)
2688 {
2689     AudioWorkgroup workgroup(1);
2690     int32_t tid = -1;
2691     ConcurrentTask::IntervalReply reply;
2692     reply.paramA = 1;
2693     int32_t result = workgroup.AddThread(tid);
2694     EXPECT_EQ(result, AUDIO_OK);
2695 }
2696 
2697 /**
2698  * @tc.name  : Test AudioWorkgroup API
2699  * @tc.type  : FUNC
2700  * @tc.number: Start_001
2701  * @tc.desc  : Test AudioWorkgroup interface.
2702  */
2703 HWTEST(AudioServiceUnitTest, Start_001, TestSize.Level1)
2704 {
2705     AudioWorkgroup workgroup(1);
2706     int32_t result = workgroup.Start(100, 100);
2707     EXPECT_EQ(result, AUDIO_ERR);
2708 }
2709 
2710 /**
2711  * @tc.name  : Test AudioWorkgroup API
2712  * @tc.type  : FUNC
2713  * @tc.number: Start_002
2714  * @tc.desc  : Test AudioWorkgroup interface.
2715  */
2716 HWTEST(AudioServiceUnitTest, Start_002, TestSize.Level1)
2717 {
2718     AudioWorkgroup workgroup(1);
2719     int32_t result = workgroup.Start(100, 200);
2720     EXPECT_NE(result, AUDIO_OK);
2721 }
2722 
2723 /**
2724  * @tc.name  : Test AudioWorkgroup API
2725  * @tc.type  : FUNC
2726  * @tc.number: Start_003
2727  * @tc.desc  : Test AudioWorkgroup interface.
2728  */
2729 HWTEST(AudioServiceUnitTest, Start_003, TestSize.Level1)
2730 {
2731     AudioWorkgroup workgroup(1);
2732     int32_t result = workgroup.Start(200, 100);
2733     EXPECT_EQ(result, AUDIO_ERR);
2734 }
2735 
2736 /**
2737  * @tc.name  : Test AudioWorkgroup API
2738  * @tc.type  : FUNC
2739  * @tc.number: Stop_003
2740  * @tc.desc  : Test AudioWorkgroup interface.
2741  */
2742 HWTEST(AudioServiceUnitTest, Stop_001, TestSize.Level1)
2743 {
2744     AudioWorkgroup workgroup(1);
2745     int result = workgroup.Stop();
2746     if (RME::EndFrameFreq(0) != 0) {
2747         EXPECT_EQ(result, AUDIO_ERR);
2748     }
2749 }
2750 
2751 /**
2752  * @tc.name  : Test AudioWorkgroup API
2753  * @tc.type  : FUNC
2754  * @tc.number: Stop_002
2755  * @tc.desc  : Test AudioWorkgroup interface.
2756  */
2757 HWTEST(AudioServiceUnitTest, Stop_002, TestSize.Level1)
2758 {
2759     AudioWorkgroup workgroup(1);
2760     int result = workgroup.Stop();
2761     if (RME::EndFrameFreq(0) == 0) {
2762         EXPECT_EQ(result, AUDIO_OK);
2763     }
2764 }
2765 
2766 /**
2767  * @tc.name  : Test InRenderWhitelist API
2768  * @tc.type  : FUNC
2769  * @tc.number: InRenderWhitelist_001,
2770  * @tc.desc  : Test InRenderWhitelist interface.
2771  */
2772 HWTEST(AudioServiceUnitTest, InRenderWhitelist_001, TestSize.Level1)
2773 {
2774     std::string bundleName = "com.test";
2775     AudioService::GetInstance()->renderWhitelist_.clear();
2776     bool ret = AudioService::GetInstance()->InRenderWhitelist(bundleName);
2777     EXPECT_FALSE(ret);
2778 
2779     AudioService::GetInstance()->renderWhitelist_.insert(bundleName);
2780     ret = AudioService::GetInstance()->InRenderWhitelist(bundleName);
2781     EXPECT_TRUE(ret);
2782 }
2783 
2784 /**
2785  * @tc.name  : Test SaveRenderWhitelist API
2786  * @tc.type  : FUNC
2787  * @tc.number: SaveRenderWhitelist_001,
2788  * @tc.desc  : Test SaveRenderWhitelist interface.
2789  */
2790 HWTEST(AudioServiceUnitTest, SaveRenderWhitelist_001, TestSize.Level1)
2791 {
2792     std::vector<std::string> list;
2793     list.resize(5);
2794     EXPECT_EQ(list.size(), 5);
2795     AudioService::GetInstance()->SaveRenderWhitelist(list);
2796     EXPECT_NE(AudioService::GetInstance()->renderWhitelist_.size(), 5);
2797 }
2798 
2799 /**
2800  * @tc.name  : Test UpdateSystemVolume API
2801  * @tc.type  : FUNC
2802  * @tc.number: UpdateSystemVolume_001,
2803  * @tc.desc  : Test UpdateSystemVolume interface.
2804  */
2805 HWTEST(AudioServiceUnitTest, UpdateSystemVolume_001, TestSize.Level1)
2806 {
2807     AudioStreamType streamType = STREAM_ALARM;
2808     float volume = 0.5;
2809 
2810     // Act
2811     AudioService::GetInstance()->UpdateSystemVolume(streamType, volume);
2812 
2813     // Assert
2814     float expectedVolume = 0.0;
2815     EXPECT_NE(expectedVolume, AudioService::GetInstance()->musicOrVoipSystemVolume_);
2816 }
2817 
2818 /**
2819  * @tc.name  : Test UpdateSystemVolume API
2820  * @tc.type  : FUNC
2821  * @tc.number: UpdateSystemVolume_002,
2822  * @tc.desc  : Test UpdateSystemVolume interface.
2823  */
2824 HWTEST(AudioServiceUnitTest, UpdateSystemVolume_002, TestSize.Level1)
2825 {
2826     AudioStreamType streamType = STREAM_MUSIC;
2827     float volume = 0.5;
2828 
2829     AudioService::GetInstance()->UpdateSystemVolume(streamType, volume);
2830 
2831     EXPECT_EQ(volume, AudioService::GetInstance()->musicOrVoipSystemVolume_);
2832 }
2833 
2834 /**
2835  * @tc.name  : Test UpdateSystemVolume API
2836  * @tc.type  : FUNC
2837  * @tc.number: UpdateSystemVolume_003,
2838  * @tc.desc  : Test UpdateSystemVolume interface.
2839  */
2840 HWTEST(AudioServiceUnitTest, UpdateSystemVolume_003, TestSize.Level1)
2841 {
2842     AudioStreamType streamType = STREAM_VOICE_COMMUNICATION;
2843     float volume = 0.5;
2844 
2845     AudioService::GetInstance()->UpdateSystemVolume(streamType, volume);
2846 
2847     EXPECT_EQ(volume, AudioService::GetInstance()->musicOrVoipSystemVolume_);
2848 }
2849 
2850 /**
2851  * @tc.name  : Test SetSessionMuteState API
2852  * @tc.type  : FUNC
2853  * @tc.number: SetSessionMuteState_001,
2854  * @tc.desc  : Test SetSessionMuteState interface.
2855  */
2856 HWTEST(AudioServiceUnitTest, SetSessionMuteState_001, TestSize.Level1)
2857 {
2858     uint32_t sessionId = 1;
2859     bool insert = true;
2860     bool muteFlag = true;
2861 
2862     AudioService::GetInstance()->SetSessionMuteState(sessionId, insert, muteFlag);
2863 
2864     std::unique_lock<std::mutex> lock(AudioService::GetInstance()->muteStateMapMutex_);
2865     EXPECT_EQ(AudioService::GetInstance()->muteStateMap_[sessionId], muteFlag);
2866 }
2867 
2868 /**
2869  * @tc.name  : Test CleanAppUseNumMap API
2870  * @tc.type  : FUNC
2871  * @tc.number: CleanAppUseNumMap_001,
2872  * @tc.desc  : Test CleanAppUseNumMap interface.
2873  */
2874 HWTEST(AudioServiceUnitTest, CleanAppUseNumMap_001, TestSize.Level1)
2875 {
2876     int32_t appUid = 12345;
2877     AudioService::GetInstance()->appUseNumMap_[appUid] = 5;
2878 
2879     AudioService::GetInstance()->CleanAppUseNumMap(appUid);
2880 
2881     EXPECT_EQ(AudioService::GetInstance()->appUseNumMap_[appUid], 4);
2882 }
2883 
2884 /**
2885  * @tc.name  : Test CleanAppUseNumMap API
2886  * @tc.type  : FUNC
2887  * @tc.number: CleanAppUseNumMap_002,
2888  * @tc.desc  : Test CleanAppUseNumMap interface.
2889  */
2890 HWTEST(AudioServiceUnitTest, CleanAppUseNumMap_002, TestSize.Level1)
2891 {
2892     int32_t appUid = 12345;
2893 
2894     AudioService::GetInstance()->CleanAppUseNumMap(appUid);
2895 
2896     EXPECT_NE(AudioService::GetInstance()->appUseNumMap_.find(appUid),
2897               AudioService::GetInstance()->appUseNumMap_.end());
2898 }
2899 
2900 /**
2901  * @tc.name  : Test SetIncMaxRendererStreamCnt API
2902  * @tc.type  : FUNC
2903  * @tc.number: SetIncMaxRendererStreamCnt_001,
2904  * @tc.desc  : Test SetIncMaxRendererStreamCnt interface.
2905  */
2906 HWTEST(AudioServiceUnitTest, SetIncMaxRendererStreamCnt_001, TestSize.Level1)
2907 {
2908     int32_t initialCount = AudioService::GetInstance()->currentRendererStreamCnt_;
2909 
2910     AudioService::GetInstance()->SetIncMaxRendererStreamCnt(AUDIO_MODE_PLAYBACK);
2911 
2912     EXPECT_EQ(AudioService::GetInstance()->currentRendererStreamCnt_, initialCount + 1);
2913 }
2914 
2915 /**
2916  * @tc.name  : Test ShouldBeDualTone API
2917  * @tc.type  : FUNC
2918  * @tc.number: ShouldBeDualTone_001,
2919  * @tc.desc  : Test ShouldBeDualTone interface.
2920  */
2921 HWTEST(AudioServiceUnitTest, ShouldBeDualTone_001, TestSize.Level1)
2922 {
2923     AudioProcessConfig config = {};
2924     config.rendererInfo.streamUsage = STREAM_USAGE_MUSIC;
2925 
2926     EXPECT_FALSE(AudioService::GetInstance()->ShouldBeDualTone(config));
2927 
2928     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
2929     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
2930     EXPECT_FALSE(AudioService::GetInstance()->ShouldBeDualTone(config));
2931 }
2932 
2933 /**
2934  * @tc.name  : Test ShouldBeDualTone API
2935  * @tc.type  : FUNC
2936  * @tc.number: ShouldBeDualTone_002,
2937  * @tc.desc  : Test ShouldBeDualTone interface.
2938  */
2939 HWTEST(AudioServiceUnitTest, ShouldBeDualTone_002, TestSize.Level1)
2940 {
2941     AudioProcessConfig config = {};
2942     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
2943     config.audioMode = AUDIO_MODE_RECORD;
2944 
2945     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
2946     EXPECT_FALSE(AudioService::GetInstance()->ShouldBeDualTone(config));
2947 }
2948 
2949 /**
2950  * @tc.name  : Test ShouldBeDualTone API
2951  * @tc.type  : FUNC
2952  * @tc.number: ShouldBeDualTone_003,
2953  * @tc.desc  : Test ShouldBeDualTone interface.
2954  */
2955 HWTEST(AudioServiceUnitTest, ShouldBeDualTone_003, TestSize.Level1)
2956 {
2957     AudioProcessConfig config = {};
2958     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
2959     config.audioMode = AUDIO_MODE_PLAYBACK;
2960 
2961     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
2962     deviceInfo.deviceType_ = DEVICE_TYPE_WIRED_HEADSET;
2963 
2964     EXPECT_FALSE(AudioService::GetInstance()->ShouldBeDualTone(config));
2965 }
2966 
2967 /**
2968  * @tc.name  : Test ShouldBeDualTone API
2969  * @tc.type  : FUNC
2970  * @tc.number: ShouldBeDualTone_004,
2971  * @tc.desc  : Test ShouldBeDualTone interface.
2972  */
2973 HWTEST(AudioServiceUnitTest, ShouldBeDualTone_004, TestSize.Level1)
2974 {
2975     AudioProcessConfig config = {};
2976     config.rendererInfo.streamUsage = STREAM_USAGE_RINGTONE;
2977     config.audioMode = AUDIO_MODE_PLAYBACK;
2978 
2979     AudioDeviceDescriptor deviceInfo(AudioDeviceDescriptor::DEVICE_INFO);
2980     deviceInfo.deviceType_ = static_cast<DeviceType>(999); // 未知设备类型
2981 
2982     EXPECT_FALSE(AudioService::GetInstance()->ShouldBeDualTone(config));
2983 }
2984 
2985 /**
2986  * @tc.name  : Test GetDeviceInfoForProcess API
2987  * @tc.type  : FUNC
2988  * @tc.number: GetDeviceInfoForProcess_001,
2989  * @tc.desc  : Test GetDeviceInfoForProcess interface.
2990  */
2991 HWTEST(AudioServiceUnitTest, GetDeviceInfoForProcess_001, TestSize.Level1)
2992 {
2993     AudioProcessConfig config = {};
2994     config.originalSessionId = 1;
2995     config.rendererInfo.streamUsage = STREAM_USAGE_VOICE_COMMUNICATION;
2996     config.streamInfo.samplingRate = SAMPLE_RATE_16000;
2997     bool reload = false;
2998     AudioStreamInfo info;
2999     AudioDeviceDescriptor deviceInfo = AudioService::GetInstance()->GetDeviceInfoForProcess(config, info, reload);
3000 
3001     EXPECT_NE(deviceInfo.deviceType_, DEVICE_TYPE_MIC);
3002     EXPECT_EQ(deviceInfo.isLowLatencyDevice_, false);
3003     EXPECT_NE(deviceInfo.audioStreamInfo_.size(), 1);
3004 }
3005 
3006 /**
3007  * @tc.name  : Test GetDeviceInfoForProcess API
3008  * @tc.type  : FUNC
3009  * @tc.number: GetDeviceInfoForProcess_002,
3010  * @tc.desc  : Test GetDeviceInfoForProcess interface.
3011  */
3012 HWTEST(AudioServiceUnitTest, GetDeviceInfoForProcess_002, TestSize.Level1)
3013 {
3014     AudioProcessConfig config = {};
3015     config.originalSessionId = 1;
3016     config.rendererInfo.streamUsage = STREAM_USAGE_VOICE_COMMUNICATION;
3017     config.capturerInfo.sourceType = SOURCE_TYPE_VOICE_COMMUNICATION;
3018     config.streamInfo.samplingRate = SAMPLE_RATE_16000;
3019     bool reload = false;
3020     AudioStreamInfo info;
3021     AudioDeviceDescriptor deviceInfo = AudioService::GetInstance()->GetDeviceInfoForProcess(config, info, reload);
3022 
3023     EXPECT_NE(deviceInfo.deviceType_, DEVICE_TYPE_MIC);
3024     EXPECT_EQ(deviceInfo.isLowLatencyDevice_, false);
3025     EXPECT_EQ(deviceInfo.a2dpOffloadFlag_, 0);
3026     EXPECT_NE(deviceInfo.audioStreamInfo_.size(), 1);
3027     EXPECT_EQ(deviceInfo.deviceName_, "mmap_device");
3028 }
3029 
3030 /**
3031  * @tc.name  : Test GetDeviceInfoForProcess API
3032  * @tc.type  : FUNC
3033  * @tc.number: GetDeviceInfoForProcess_003,
3034  * @tc.desc  : Test GetDeviceInfoForProcess interface.
3035  */
3036 HWTEST(AudioServiceUnitTest, GetDeviceInfoForProcess_003, TestSize.Level1)
3037 {
3038     AudioProcessConfig config = {};
3039     config.originalSessionId = 1;
3040     config.audioMode = AUDIO_MODE_RECORD;
3041     bool reload = false;
3042     AudioStreamInfo info;
3043     AudioDeviceDescriptor deviceInfo = AudioService::GetInstance()->GetDeviceInfoForProcess(config, info, reload);
3044 
3045     EXPECT_EQ(deviceInfo.deviceId_, 1);
3046     EXPECT_EQ(deviceInfo.networkId_, LOCAL_NETWORK_ID);
3047     EXPECT_EQ(deviceInfo.deviceRole_, INPUT_DEVICE);
3048     EXPECT_EQ(deviceInfo.deviceType_, DEVICE_TYPE_MIC);
3049     EXPECT_NE(deviceInfo.audioStreamInfo_.size(), 1);
3050 
3051     EXPECT_EQ(deviceInfo.deviceName_, "mmap_device");
3052 }
3053 
3054 /**
3055  * @tc.name  : Test InitAllDupBuffer API
3056  * @tc.type  : FUNC
3057  * @tc.number: InitAllDupBuffer_001,
3058  * @tc.desc  : Test InitAllDupBuffer interface.
3059  */
3060 HWTEST(AudioServiceUnitTest, InitAllDupBuffer_001, TestSize.Level1)
3061 {
3062     AudioService *audioService = AudioService::GetInstance();
3063     int32_t innerCapId = 1;
3064 
3065     std::weak_ptr<RendererInServer> server;
3066     std::unique_lock<std::mutex> lock(audioService->rendererMapMutex_);
3067     AudioService::GetInstance()->filteredRendererMap_[innerCapId].push_back(server);
3068     lock.unlock();
3069 
3070     AudioService::GetInstance()->InitAllDupBuffer(innerCapId);
3071 }
3072 
3073 /**
3074  * @tc.name  : Test RenderersCheckForAudioWorkgroup API
3075  * @tc.type  : FUNC
3076  * @tc.number: RenderersCheckForAudioWorkgroup_001,
3077  * @tc.desc  : Test RenderersCheckForAudioWorkgroup interface.
3078  */
3079 HWTEST(AudioServiceUnitTest, RenderersCheckForAudioWorkgroup_001, TestSize.Level1)
3080 {
3081     AudioService *audioService = AudioService::GetInstance();
3082     audioService->RenderersCheckForAudioWorkgroup(1);
3083     EXPECT_FALSE(AudioResourceService::GetInstance()->IsProcessInWorkgroup(1));
3084     EXPECT_FALSE(AudioResourceService::GetInstance()->IsProcessHasSystemPermission(1));
3085 
3086     audioService->RenderersCheckForAudioWorkgroup(-1);
3087     EXPECT_FALSE(AudioResourceService::GetInstance()->IsProcessInWorkgroup(-1));
3088     EXPECT_FALSE(AudioResourceService::GetInstance()->IsProcessHasSystemPermission(-1));
3089 }
3090 
3091 /**
3092  * @tc.name  : Test GetSystemVolume API
3093  * @tc.type  : FUNC
3094  * @tc.number: GetSystemVolume_001,
3095  * @tc.desc  : Test GetSystemVolume interface.
3096  */
3097 HWTEST(AudioServiceUnitTest, GetSystemVolume_001, TestSize.Level1)
3098 {
3099     AudioService *audioService = AudioService::GetInstance();
3100     audioService->musicOrVoipSystemVolume_ = 0.5;
3101     float volume = 0.0;
3102     volume = audioService->GetSystemVolume();
3103     EXPECT_EQ(volume, 0.5);
3104 
3105     audioService->musicOrVoipSystemVolume_ = 1.0;
3106     volume = audioService->GetSystemVolume();
3107     EXPECT_EQ(volume, 1.0);
3108 
3109     audioService->musicOrVoipSystemVolume_ = 0.0;
3110     volume = audioService->GetSystemVolume();
3111     EXPECT_EQ(volume, 0.0);
3112 }
3113 
3114 /**
3115  * @tc.name  : Test LinkProcessToEndpoint API
3116  * @tc.type  : FUNC
3117  * @tc.number: LinkProcessToEndpoint_001,
3118  * @tc.desc  : Test LinkProcessToEndpoint interface.
3119  */
3120 HWTEST(AudioServiceUnitTest, LinkProcessToEndpoint_001, TestSize.Level1)
3121 {
3122     AudioProcessConfig config = {};
3123     config.audioMode = AUDIO_MODE_PLAYBACK;
3124     sptr<AudioProcessInServer> audioprocess =  AudioProcessInServer::Create(config, AudioService::GetInstance());
3125     EXPECT_NE(audioprocess, nullptr);
3126     std::shared_ptr<AudioEndpointInner> endpoint = std::make_shared<AudioEndpointInner>(AudioEndpoint::TYPE_VOIP_MMAP,
3127         123, config);
3128     EXPECT_NE(AudioService::GetInstance()->LinkProcessToEndpoint(audioprocess, endpoint), SUCCESS);
3129 }
3130 
3131 /**
3132  * @tc.name  : Test UpdateForegroundState API
3133  * @tc.type  : FUNC
3134  * @tc.number: UpdateForegroundState_001,
3135  * @tc.desc  : Test UpdateForegroundState interface.
3136  */
3137 HWTEST(AudioServiceUnitTest, UpdateForegroundState_001, TestSize.Level1)
3138 {
3139     uint32_t appTokenId = 12345;
3140     bool isActive = true;
3141     bool result = AudioService::GetInstance()->UpdateForegroundState(appTokenId, isActive);
3142     EXPECT_TRUE(result);
3143 }
3144 
3145 /**
3146  * @tc.name  : Test UpdateForegroundState API
3147  * @tc.type  : FUNC
3148  * @tc.number: UpdateForegroundState_002,
3149  * @tc.desc  : Test UpdateForegroundState interface.
3150  */
3151 HWTEST(AudioServiceUnitTest, UpdateForegroundState_002, TestSize.Level1)
3152 {
3153     uint32_t appTokenId = -1;
3154     bool isActive = true;
3155     bool result = AudioService::GetInstance()->UpdateForegroundState(appTokenId, isActive);
3156     EXPECT_TRUE(result);
3157 }
3158 
3159 /**
3160  * @tc.name  : Test DumpForegroundList API
3161  * @tc.type  : FUNC
3162  * @tc.number: DumpForegroundList_001,
3163  * @tc.desc  : Test DumpForegroundList interface.
3164  */
3165 HWTEST(AudioServiceUnitTest, DumpForegroundList_001, TestSize.Level1)
3166 {
3167     std::string dumpString;
3168     AudioService::GetInstance()->DumpForegroundList(dumpString);
3169     EXPECT_NE(dumpString, "DumpForegroundList:\n");
3170 }
3171 
3172 /**
3173  * @tc.name  : Test ConfigCoreServiceProvider API
3174  * @tc.type  : FUNC
3175  * @tc.number: ConfigCoreServiceProvider_002,
3176  * @tc.desc  : Test ConfigCoreServiceProvider interface.
3177  */
3178 HWTEST(AudioServiceUnitTest, ConfigCoreServiceProvider_002, TestSize.Level1)
3179 {
3180     auto coreServiceHandler = CoreServiceHandler::GetInstance();
3181     auto samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
3182     EXPECT_NE(nullptr, samgr);
3183     sptr<IRemoteObject> object = samgr->GetSystemAbility(AUDIO_DISTRIBUTED_SERVICE_ID);
3184     sptr<ICoreServiceProviderIpc> coreServiceProvider = iface_cast<ICoreServiceProviderIpc>(object);
3185     int32_t ret = coreServiceHandler.ConfigCoreServiceProvider(coreServiceProvider);
3186     EXPECT_EQ(ret, SUCCESS);
3187 }
3188 
3189 /**
3190  * @tc.name  : Test ConfigCoreServiceProvider API
3191  * @tc.type  : FUNC
3192  * @tc.number: ConfigCoreServiceProvider_003,
3193  * @tc.desc  : Test ConfigCoreServiceProvider interface.
3194  */
3195 HWTEST(AudioServiceUnitTest, ConfigCoreServiceProvider_003, TestSize.Level1)
3196 {
3197     auto coreServiceHandler = CoreServiceHandler::GetInstance();
3198     auto samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
3199     EXPECT_NE(nullptr, samgr);
3200     sptr<IRemoteObject> object = samgr->GetSystemAbility(AUDIO_DISTRIBUTED_SERVICE_ID);
3201     sptr<ICoreServiceProviderIpc> coreServiceProvider = iface_cast<ICoreServiceProviderIpc>(object);
3202     coreServiceHandler.ConfigCoreServiceProvider(coreServiceProvider); // Set the provider
3203     int32_t ret = coreServiceHandler.ConfigCoreServiceProvider(coreServiceProvider);
3204     EXPECT_EQ(ret, ERR_INVALID_OPERATION);
3205 }
3206 
3207 } // namespace AudioStandard
3208 } // namespace OHOS