• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 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 "audio_errors.h"
17 #include "audio_system_manager.h"
18 #include "audio_policy_test.h"
19 
20 using namespace std;
21 using namespace OHOS::AudioStandard;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace AudioStandard {
26 namespace V1_0 {
SetUpTestCase(void)27 void AudioPolicyTest::SetUpTestCase(void)
28 {
29     ASSERT_NE(nullptr, AudioSystemManager::GetInstance());
30 }
31 
TearDownTestCase(void)32 void AudioPolicyTest::TearDownTestCase(void) {}
33 
SetUp(void)34 void AudioPolicyTest::SetUp(void) {}
35 
TearDown(void)36 void AudioPolicyTest::TearDown(void) {}
37 
OnRingerModeUpdated(const AudioRingerMode & ringerMode)38 void AudioRingerModeCallbackTest::OnRingerModeUpdated(const AudioRingerMode &ringerMode)
39 {
40     ringerMode_ = ringerMode;
41 }
42 
43 namespace {
44 const PolicyParam VOLUME_PARAMS[] = {
45     {
46         .volume = 8,
47         .streamType = STREAM_MUSIC
48     },
49     {
50         .volume = 8,
51         .streamType = STREAM_RING
52     }
53 };
54 
55 const PolicyParam MUTE_PARAMS[] = {
56     {
57         .streamType = STREAM_MUSIC,
58         .mute = true
59     },
60     {
61         .streamType = STREAM_MUSIC,
62         .mute = false
63     }
64 };
65 
66 const PolicyParam STREAM_PARAMS[] = {
67     {
68         .streamType = STREAM_MUSIC,
69         .active = true
70     },
71     {
72         .streamType = STREAM_RING,
73         .active = false
74     }
75 };
76 
77 const PolicyParam ACTIVE_DEVICE_PARAMS[] = {
78     {
79         .actDeviceType = SPEAKER,
80         .active = true
81     },
82     {
83         .actDeviceType = BLUETOOTH_SCO,
84         .active = true
85     },
86     {
87         .actDeviceType = BLUETOOTH_SCO,
88         .active = false
89     },
90     {
91         .actDeviceType = SPEAKER,
92         .active = true
93     },
94     {
95         .actDeviceType = BLUETOOTH_SCO,
96         .active = true
97     },
98     {
99         .actDeviceType = SPEAKER,
100         .active = false
101     },
102     {
103         .actDeviceType = SPEAKER,
104         .active = true
105     },
106 };
107 
108 const PolicyParam RINGER_MODE_PARAMS[] = {
109     {
110         .ringerMode = RINGER_MODE_NORMAL
111     },
112     {
113         .ringerMode = RINGER_MODE_SILENT
114     },
115     {
116         .ringerMode = RINGER_MODE_VIBRATE
117     },
118 };
119 
120 const PolicyParam MIC_MUTE_PARAMS[] = {
121     {
122         .mute = true
123     },
124     {
125         .mute = false
126     }
127 };
128 
129 const PolicyParam VOLUME_RANGE_PARAMS[] = {
130     {
131         .streamType = STREAM_MUSIC
132     },
133     {
134         .streamType = STREAM_RING
135     }
136 };
137 
138 const PolicyParam AUDIO_PARAMS[] = {
139     {
140         .key = "sampling_rate",
141         .value = "8000"
142     },
143     {
144         .key = "sampling_rate",
145         .value = "44100"
146     },
147     {
148         .key = "sampling_rate",
149         .value = "96000"
150     }
151 };
152 
153 const PolicyParam DEVICES_PARAMS[] = {
154     {
155         .deviceType = DEVICE_TYPE_MIC,
156         .deviceFlag = INPUT_DEVICES_FLAG,
157         .deviceRole = INPUT_DEVICE
158     },
159     {
160         .deviceType = DEVICE_TYPE_SPEAKER,
161         .deviceFlag = OUTPUT_DEVICES_FLAG,
162         .deviceRole = OUTPUT_DEVICE
163     }
164 };
165 
166 const PolicyParam AUDIO_SCENE_PARAMS[] = {
167     {
168         .audioScene = AUDIO_SCENE_DEFAULT
169     },
170     {
171         .audioScene = AUDIO_SCENE_PHONE_CHAT
172     }
173 };
174 } // namespace
175 
176 /*
177  * Set Volume
178  *
179  */
180 class AudioPolicySetVolumeTest : public AudioPolicyTest {};
181 
182 HWTEST_P(AudioPolicySetVolumeTest, SetVolume, TestSize.Level1)
183 {
184     PolicyParam params = GetParam();
185 
186     AudioSystemManager::AudioVolumeType volumeType
187         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
188     float volume = params.volume;
189     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetVolume(volumeType, volume));
190 }
191 
192 INSTANTIATE_TEST_CASE_P(
193     SetVolume,
194     AudioPolicySetVolumeTest,
195     ValuesIn(VOLUME_PARAMS));
196 
197 /*
198  * Get Volume
199  *
200  */
201 class AudioPolicyGetVolumeTest : public AudioPolicyTest {};
202 
203 HWTEST_P(AudioPolicyGetVolumeTest, GetVolume, TestSize.Level1)
204 {
205     PolicyParam params = GetParam();
206     AudioSystemManager::AudioVolumeType volumeType
207         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
208     float volume = params.volume;
209 
210     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetVolume(volumeType, volume));
211     EXPECT_EQ(volume, AudioSystemManager::GetInstance()->GetVolume(volumeType));
212 }
213 
214 INSTANTIATE_TEST_CASE_P(
215     GetVolume,
216     AudioPolicyGetVolumeTest,
217     ValuesIn(VOLUME_PARAMS));
218 
219 /*
220  * Set Mute
221  *
222  */
223 class AudioPolicySetMuteTest : public AudioPolicyTest {};
224 
225 HWTEST_P(AudioPolicySetMuteTest, SetMute, TestSize.Level1)
226 {
227     PolicyParam params = GetParam();
228     AudioSystemManager::AudioVolumeType volumeType
229         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
230     bool mute = params.mute;
231 
232     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetMute(volumeType, mute));
233 }
234 
235 INSTANTIATE_TEST_CASE_P(
236     SetMute,
237     AudioPolicySetMuteTest,
238     ValuesIn(MUTE_PARAMS));
239 
240 /*
241  * Is Mute
242  *
243  */
244 class AudioPolicyGetMuteTest : public AudioPolicyTest {};
245 
246 HWTEST_P(AudioPolicyGetMuteTest, IsStreamMute, TestSize.Level1)
247 {
248     PolicyParam params = GetParam();
249     AudioSystemManager::AudioVolumeType volumeType
250         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
251     bool mute = params.mute;
252 
253     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetMute(volumeType, mute));
254     EXPECT_EQ(mute, AudioSystemManager::GetInstance()->IsStreamMute(volumeType));
255 }
256 
257 INSTANTIATE_TEST_CASE_P(
258     IsStreamMute,
259     AudioPolicyGetMuteTest,
260     ValuesIn(MUTE_PARAMS));
261 
262 /*
263  * Is Stream Active
264  *
265  */
266 class AudioPolicyIsStreamActiveTest : public AudioPolicyTest {};
267 
268 HWTEST_P(AudioPolicyIsStreamActiveTest, IsStreamActive, TestSize.Level1)
269 {
270     PolicyParam params = GetParam();
271     AudioSystemManager::AudioVolumeType volumeType
272         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
273 
274     // review this code
275     EXPECT_EQ(params.active, AudioSystemManager::GetInstance()->IsStreamActive(volumeType));
276 }
277 
278 INSTANTIATE_TEST_CASE_P(
279     IsStreamActive,
280     AudioPolicyIsStreamActiveTest,
281     ValuesIn(STREAM_PARAMS));
282 
283 /*
284  * Set Device Active
285  *
286  */
287 class AudioPolicySetDeviceActiveTest : public AudioPolicyTest {};
288 
289 HWTEST_P(AudioPolicySetDeviceActiveTest, SetDeviceActive, TestSize.Level1)
290 {
291     PolicyParam params = GetParam();
292     ActiveDeviceType deviceType = params.actDeviceType;
293     bool active = params.active;
294 
295     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetDeviceActive(deviceType, active));
296 }
297 
298 INSTANTIATE_TEST_CASE_P(
299     SetDeviceActive,
300     AudioPolicySetDeviceActiveTest,
301     ValuesIn(ACTIVE_DEVICE_PARAMS));
302 
303 /*
304  * Is Device Active
305  *
306  */
307 class AudioPolicyIsDeviceActiveTest : public AudioPolicyTest {};
308 
309 HWTEST_P(AudioPolicyIsDeviceActiveTest, IsDeviceActive, TestSize.Level1)
310 {
311     PolicyParam params = GetParam();
312     ActiveDeviceType deviceType = params.actDeviceType;
313     bool active = params.active;
314 
315     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetDeviceActive(deviceType, active));
316     EXPECT_EQ(active, AudioSystemManager::GetInstance()->IsDeviceActive(deviceType));
317 }
318 
319 INSTANTIATE_TEST_CASE_P(
320     IsDeviceActive,
321     AudioPolicyIsDeviceActiveTest,
322     ValuesIn(ACTIVE_DEVICE_PARAMS));
323 
324 /*
325  * Set Ringer Mode
326  *
327  */
328 class AudioPolicySetRingerModeTest : public AudioPolicyTest {};
329 
330 HWTEST_P(AudioPolicySetRingerModeTest, SetRingerMode, TestSize.Level1)
331 {
332     PolicyParam params = GetParam();
333     AudioRingerMode ringerMode = params.ringerMode;
334 
335     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetRingerMode(ringerMode));
336 }
337 
338 
339 INSTANTIATE_TEST_CASE_P(
340     SetRingerMode,
341     AudioPolicySetRingerModeTest,
342     ValuesIn(RINGER_MODE_PARAMS));
343 
344 /*
345  * Get Ringer Mode
346  *
347  */
348 class AudioPolicyGetRingerModeTest : public AudioPolicyTest {};
349 
350 HWTEST_P(AudioPolicyGetRingerModeTest, GetRingerMode, TestSize.Level1)
351 {
352     PolicyParam params = GetParam();
353     AudioRingerMode ringerMode = params.ringerMode;
354 
355     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetRingerMode(ringerMode));
356     EXPECT_EQ(ringerMode, AudioSystemManager::GetInstance()->GetRingerMode());
357 }
358 
359 INSTANTIATE_TEST_CASE_P(
360     GetRingerMode,
361     AudioPolicyGetRingerModeTest,
362     ValuesIn(RINGER_MODE_PARAMS));
363 
364 /*
365  * Check ringer mode callback
366  *
367  */
368 class AudioPolicySetRingerModeCallbackTest : public AudioPolicyTest {};
369 
370 HWTEST_P(AudioPolicySetRingerModeCallbackTest, SetRingerModeCallback, TestSize.Level1)
371 {
372     int32_t ret = -1;
373     PolicyParam params = GetParam();
374     AudioRingerMode ringerMode = params.ringerMode;
375 
376     AudioSystemManager *audioSystemMgr = AudioSystemManager::GetInstance();
377 
378     shared_ptr<AudioRingerModeCallbackTest> ringerModeCB = std::make_shared<AudioRingerModeCallbackTest>();
379     ret = audioSystemMgr->SetRingerModeCallback(1, ringerModeCB);
380     EXPECT_EQ(SUCCESS, ret);
381 
382     audioSystemMgr->SetRingerMode(ringerMode);
383     sleep(1);
384     EXPECT_EQ(ringerModeCB->ringerMode_, ringerMode);
385 
386     ret = audioSystemMgr->UnsetRingerModeCallback(1);
387     EXPECT_EQ(SUCCESS, ret);
388 }
389 
390 INSTANTIATE_TEST_CASE_P(
391     SetRingerModeCallback,
392     AudioPolicySetRingerModeCallbackTest,
393     ValuesIn(RINGER_MODE_PARAMS));
394 
395 /*
396  * Set microphone mute
397  *
398  */
399 class AudioPolicySetMicrophoneMuteTest : public AudioPolicyTest {};
400 
401 HWTEST_P(AudioPolicySetMicrophoneMuteTest, SetMicrophoneMute, TestSize.Level1)
402 {
403     PolicyParam params = GetParam();
404     bool mute = params.mute;
405 
406     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetMicrophoneMute(mute));
407 }
408 
409 INSTANTIATE_TEST_CASE_P(
410     SetMicrophoneMute,
411     AudioPolicySetMicrophoneMuteTest,
412     ValuesIn(MIC_MUTE_PARAMS));
413 
414 /*
415  * Is Microphone Mute
416  *
417  */
418 class AudioPolicyGetMicrophoneMuteTest : public AudioPolicyTest {};
419 
420 HWTEST_P(AudioPolicyGetMicrophoneMuteTest, IsMicrophoneMute, TestSize.Level1)
421 {
422     PolicyParam params = GetParam();
423     bool mute = params.mute;
424 
425     EXPECT_EQ(MEDIA_OK, AudioSystemManager::GetInstance()->SetMicrophoneMute(mute));
426     EXPECT_EQ(mute, AudioSystemManager::GetInstance()->IsMicrophoneMute());
427 }
428 
429 INSTANTIATE_TEST_CASE_P(
430     IsMicrophoneMute,
431     AudioPolicyGetMicrophoneMuteTest,
432     ValuesIn(MIC_MUTE_PARAMS));
433 
434 /*
435  * Check volume range
436  *
437  */
438 class AudioPolicyVolumeRangeTest : public AudioPolicyTest {};
439 
440 HWTEST_P(AudioPolicyVolumeRangeTest, GetMaxVolume, TestSize.Level1)
441 {
442     PolicyParam params = GetParam();
443     AudioSystemManager::AudioVolumeType volumeType
444         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
445     EXPECT_EQ(15, AudioSystemManager::GetInstance()->GetMaxVolume(volumeType));
446 }
447 
448 HWTEST_P(AudioPolicyVolumeRangeTest, GetMinVolume, TestSize.Level1)
449 {
450     PolicyParam params = GetParam();
451     AudioSystemManager::AudioVolumeType volumeType
452         = static_cast<AudioSystemManager::AudioVolumeType>(params.streamType);
453     EXPECT_EQ(0, AudioSystemManager::GetInstance()->GetMinVolume(volumeType));
454 }
455 
456 INSTANTIATE_TEST_CASE_P(
457     GetMaxVolume,
458     AudioPolicyVolumeRangeTest,
459     ValuesIn(VOLUME_RANGE_PARAMS));
460 
461 INSTANTIATE_TEST_CASE_P(
462     GetMinVolume,
463     AudioPolicyVolumeRangeTest,
464     ValuesIn(VOLUME_RANGE_PARAMS));
465 
466 /*
467  * Check volume range
468  *
469  */
470 class AudioPolicyAudioParameterTest : public AudioPolicyTest {};
471 
472 HWTEST_P(AudioPolicyAudioParameterTest, SetAudioParameter, TestSize.Level1)
473 {
474     PolicyParam params = GetParam();
475     AudioSystemManager::GetInstance()->SetAudioParameter(params.key, params.value);
476     EXPECT_EQ(params.value, AudioSystemManager::GetInstance()->GetAudioParameter(params.key));
477 }
478 
479 INSTANTIATE_TEST_CASE_P(
480     SetAudioParameter,
481     AudioPolicyAudioParameterTest,
482     ValuesIn(AUDIO_PARAMS));
483 
484 HWTEST_P(AudioPolicyAudioParameterTest, GetAudioParameter, TestSize.Level1)
485 {
486     PolicyParam params = GetParam();
487     AudioSystemManager::GetInstance()->SetAudioParameter(params.key, params.value);
488     EXPECT_EQ(params.value, AudioSystemManager::GetInstance()->GetAudioParameter(params.key));
489 }
490 
491 INSTANTIATE_TEST_CASE_P(
492     GetAudioParameter,
493     AudioPolicyAudioParameterTest,
494     ValuesIn(AUDIO_PARAMS));
495 
496 /*
497  * Check volume range
498  *
499  */
500 class AudioPolicyGetDevicesTest : public AudioPolicyTest {};
501 
502 HWTEST_P(AudioPolicyGetDevicesTest, GetDevices, TestSize.Level1)
503 {
504     PolicyParam params = GetParam();
505     DeviceFlag deviceFlag = params.deviceFlag;
506     DeviceType deviceType = params.deviceType;
507     DeviceRole deviceRole = params.deviceRole;
508     vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors
509         = AudioSystemManager::GetInstance()->GetDevices(deviceFlag);
510     sptr<AudioDeviceDescriptor> audioDeviceDescriptor = audioDeviceDescriptors[0];
511     EXPECT_EQ(deviceType, audioDeviceDescriptor->deviceType_);
512     EXPECT_EQ(deviceRole, audioDeviceDescriptor->deviceRole_);
513 }
514 
515 INSTANTIATE_TEST_CASE_P(
516     GetDevices,
517     AudioPolicyGetDevicesTest,
518     ValuesIn(DEVICES_PARAMS));
519 
520 /*
521  * Check set audio scene
522  *
523  */
524 class AudioPolicySetAudioSceneTest : public AudioPolicyTest {};
525 
526 HWTEST_P(AudioPolicySetAudioSceneTest, SetAudioScene, TestSize.Level1)
527 {
528     PolicyParam params = GetParam();
529     AudioScene scene = params.audioScene;
530     int32_t ret = AudioSystemManager::GetInstance()->SetAudioScene(scene);
531     EXPECT_EQ(SUCCESS, ret);
532     ret = AudioSystemManager::GetInstance()->SetAudioScene(AUDIO_SCENE_DEFAULT);
533     EXPECT_EQ(SUCCESS, ret);
534 }
535 
536 INSTANTIATE_TEST_CASE_P(
537     SetAudioScene,
538     AudioPolicySetAudioSceneTest,
539     ValuesIn(AUDIO_SCENE_PARAMS));
540 
541 /*
542  * Check get audio scene
543  *
544  */
545 class AudioPolicyGetAudioSceneTest : public AudioPolicyTest {};
546 
547 HWTEST_P(AudioPolicyGetAudioSceneTest, GetAudioScene, TestSize.Level1)
548 {
549     PolicyParam params = GetParam();
550     AudioScene scene = params.audioScene;
551     EXPECT_EQ(AudioSystemManager::GetInstance()->GetAudioScene(), AUDIO_SCENE_DEFAULT);
552 
553     int32_t ret = AudioSystemManager::GetInstance()->SetAudioScene(scene);
554     EXPECT_EQ(SUCCESS, ret);
555 
556     EXPECT_EQ(AudioSystemManager::GetInstance()->GetAudioScene(), scene);
557 
558     ret = AudioSystemManager::GetInstance()->SetAudioScene(AUDIO_SCENE_DEFAULT);
559     EXPECT_EQ(SUCCESS, ret);
560 }
561 
562 INSTANTIATE_TEST_CASE_P(
563     GetAudioScene,
564     AudioPolicyGetAudioSceneTest,
565     ValuesIn(AUDIO_SCENE_PARAMS));
566 } // namespace V1_0
567 } // namespace AudioStandard
568 } // namespace OHOS
569