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