1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #include "audio_service_log.h"
19 #include "audio_errors.h"
20 #include "audio_volume.h"
21 #include "audio_utils.h"
22
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace AudioStandard {
27 const int32_t STREAM_MUSIC_TEST = STREAM_MUSIC;
28 const int32_t STREAM_VOICE_TEST = STREAM_VOICE_CALL;
29 const int32_t STREAM_USAGE_MEDIA_TEST = 1;
30
31 class AudioVolumeUnitTest : public testing::Test {
32 public:
33 static void SetUpTestCase(void);
34 static void TearDownTestCase(void);
35 void SetUp();
36 void TearDown();
37 };
38
SetUpTestCase(void)39 void AudioVolumeUnitTest::SetUpTestCase(void)
40 {
41 }
42
TearDownTestCase(void)43 void AudioVolumeUnitTest::TearDownTestCase(void)
44 {
45 }
46
SetUp(void)47 void AudioVolumeUnitTest::SetUp(void)
48 {
49 uint32_t sessionId = 1;
50 int32_t streamType = STREAM_MUSIC_TEST;
51 int32_t streamUsage = STREAM_USAGE_MEDIA_TEST;
52 int32_t uid = 1000;
53 int32_t pid = 1000;
54 int32_t mode = 1;
55 AudioVolume::GetInstance()->AddStreamVolume(sessionId, streamType, streamUsage, uid, pid, false, mode);
56 }
57
TearDown(void)58 void AudioVolumeUnitTest::TearDown(void)
59 {
60 uint32_t sessionId = 1;
61 AudioVolume::GetInstance()->RemoveStreamVolume(sessionId);
62 }
63
64 /**
65 * @tc.name : Test AudioVolume API
66 * @tc.type : FUNC
67 * @tc.number: GetVolume_001
68 * @tc.desc : Test AudioVolume interface.
69 */
70 HWTEST_F(AudioVolumeUnitTest, GetVolume_001, TestSize.Level1)
71 {
72 uint32_t sessionId = 1;
73 int32_t volumeType = STREAM_MUSIC_TEST;
74 std::string deviceClass = "speaker";
75 float volume = AudioVolume::GetInstance()->GetVolume(sessionId, volumeType, deviceClass);
76 EXPECT_EQ(volume, 1.0f);
77 }
78
79 /**
80 * @tc.name : Test AudioVolume API
81 * @tc.type : FUNC
82 * @tc.number: GetVolume_002
83 * @tc.desc : Test AudioVolume interface.
84 */
85 HWTEST_F(AudioVolumeUnitTest, GetVolume_002, TestSize.Level1)
86 {
87 uint32_t sessionId = 1;
88 int32_t volumeType = STREAM_VOICE_TEST;
89 std::string deviceClass = "speaker";
90 AudioVolume::GetInstance()->SetVgsVolumeSupported(true);
91 float volume = AudioVolume::GetInstance()->GetVolume(sessionId, volumeType, deviceClass);
92 EXPECT_EQ(volume, 1.0f);
93 }
94
95 /**
96 * @tc.name : Test AudioVolume API
97 * @tc.type : FUNC
98 * @tc.number: GetHistoryVolume_001
99 * @tc.desc : Test AudioVolume interface.
100 */
101 HWTEST_F(AudioVolumeUnitTest, GetHistoryVolume_001, TestSize.Level1)
102 {
103 uint32_t sessionId = 1;
104 float volume = AudioVolume::GetInstance()->GetHistoryVolume(sessionId);
105 EXPECT_EQ(volume, 0.0f);
106 }
107
108 /**
109 * @tc.name : Test AudioVolume API
110 * @tc.type : FUNC
111 * @tc.number: GetHistoryVolume_001
112 * @tc.desc : Test AudioVolume interface.
113 */
114 HWTEST_F(AudioVolumeUnitTest, SetHistoryVolume_001, TestSize.Level1)
115 {
116 uint32_t sessionId = 1;
117 float volume = 0.5f;
118 AudioVolume::GetInstance()->SetHistoryVolume(sessionId, volume);
119 float getVolume = AudioVolume::GetInstance()->GetHistoryVolume(sessionId);
120 EXPECT_EQ(getVolume, volume);
121 }
122
123 /**
124 * @tc.name : Test AudioVolume API
125 * @tc.type : FUNC
126 * @tc.number: SetStreamVolume_001
127 * @tc.desc : Test AudioVolume interface.
128 */
129 HWTEST_F(AudioVolumeUnitTest, SetStreamVolume_001, TestSize.Level1)
130 {
131 uint32_t sessionId = 1;
132 float volume = 0.5f;
133 AudioVolume::GetInstance()->SetStreamVolume(sessionId, volume);
134 float retVolume = AudioVolume::GetInstance()->GetStreamVolume(sessionId);
135 EXPECT_EQ(retVolume, volume);
136 }
137
138 /**
139 * @tc.name : Test AudioVolume API
140 * @tc.type : FUNC
141 * @tc.number: SetStreamVolume_002
142 * @tc.desc : Test AudioVolume interface.
143 */
144 HWTEST_F(AudioVolumeUnitTest, SetStreamVolume_002, TestSize.Level1)
145 {
146 uint32_t sessionId = 1;
147 AudioVolume::GetInstance()->streamVolume_.clear();
148 AudioVolume::GetInstance()->SetStreamVolume(sessionId, 1.0f);
149 auto it = AudioVolume::GetInstance()->streamVolume_.find(sessionId);
150 EXPECT_EQ(it == AudioVolume::GetInstance()->streamVolume_.end(), true);
151 }
152
153 /**
154 * @tc.name : Test AudioVolume API
155 * @tc.type : FUNC
156 * @tc.number: SetStreamVolumeDuckFactor_001
157 * @tc.desc : Test AudioVolume interface.
158 */
159 HWTEST_F(AudioVolumeUnitTest, SetStreamVolumeDuckFactor_001, TestSize.Level1)
160 {
161 uint32_t sessionId = 1;
162 float duckFactor = 0.5f;
163 AudioVolume::GetInstance()->SetStreamVolumeDuckFactor(sessionId, duckFactor);
164 float retVolume = AudioVolume::GetInstance()->GetStreamVolume(sessionId);
165 EXPECT_EQ(retVolume, duckFactor);
166 }
167
168 /**
169 * @tc.name : Test AudioVolume API
170 * @tc.type : FUNC
171 * @tc.number: SetStreamVolumeLowPowerFactor_001
172 * @tc.desc : Test AudioVolume interface.
173 */
174 HWTEST_F(AudioVolumeUnitTest, SetStreamVolumeLowPowerFactor_001, TestSize.Level1)
175 {
176 uint32_t sessionId = 1;
177 float lowPowerFactor = 0.5f;
178 AudioVolume::GetInstance()->SetStreamVolumeLowPowerFactor(sessionId, lowPowerFactor);
179 float retVolume = AudioVolume::GetInstance()->GetStreamVolume(sessionId);
180 EXPECT_EQ(retVolume, lowPowerFactor);
181 }
182
183 /**
184 * @tc.name : Test AudioVolume API
185 * @tc.type : FUNC
186 * @tc.number: SetStreamVolumeMute_001
187 * @tc.desc : Test AudioVolume interface.
188 */
189 HWTEST_F(AudioVolumeUnitTest, SetStreamVolumeMute_001, TestSize.Level1)
190 {
191 uint32_t sessionId = 1;
192 bool isMuted = true;
193 AudioVolume::GetInstance()->SetStreamVolumeMute(sessionId, isMuted);
194 float retVolume = AudioVolume::GetInstance()->GetStreamVolume(sessionId);
195 EXPECT_EQ(retVolume, 0);
196 }
197
198 /**
199 * @tc.name : Test AudioVolume API
200 * @tc.type : FUNC
201 * @tc.number: SetSystemVolume_001
202 * @tc.desc : Test AudioVolume interface.
203 */
204 HWTEST_F(AudioVolumeUnitTest, SetSystemVolume_001, TestSize.Level1)
205 {
206 SystemVolume systemVolume(STREAM_MUSIC_TEST, "speaker", 0.5f, 5, false);
207 AudioVolume::GetInstance()->SetSystemVolume(systemVolume);
208 auto it = AudioVolume::GetInstance()->systemVolume_.find("1speaker");
209 EXPECT_TRUE(it != AudioVolume::GetInstance()->systemVolume_.end());
210 }
211
212 /**
213 * @tc.name : Test AudioVolume API
214 * @tc.type : FUNC
215 * @tc.number: SetSystemVolume_002
216 * @tc.desc : Test AudioVolume interface.
217 */
218 HWTEST_F(AudioVolumeUnitTest, SetSystemVolume_002, TestSize.Level1)
219 {
220 SystemVolume systemVolume(STREAM_MUSIC_TEST, "speaker", 0.5f, 5, false);
221 AudioVolume::GetInstance()->SetSystemVolume(systemVolume);
222 SystemVolume systemVolume2(STREAM_MUSIC_TEST, "speaker", 1.0f, 5, false);
223 AudioVolume::GetInstance()->SetSystemVolume(systemVolume2);
224 auto it = AudioVolume::GetInstance()->systemVolume_.find("1speaker");
225 EXPECT_EQ(it->second.volume_, 1.0f);
226 }
227
228 /**
229 * @tc.name : Test AudioVolume API
230 * @tc.type : FUNC
231 * @tc.number: SetSystemVolume_003
232 * @tc.desc : Test AudioVolume interface.
233 */
234 HWTEST_F(AudioVolumeUnitTest, SetSystemVolume_003, TestSize.Level1)
235 {
236 AudioVolume::GetInstance()->SetSystemVolume(STREAM_MUSIC_TEST, "speaker", 0.5f, 5);
237 auto it = AudioVolume::GetInstance()->systemVolume_.find("1speaker");
238 EXPECT_TRUE(it != AudioVolume::GetInstance()->systemVolume_.end());
239 }
240
241 /**
242 * @tc.name : Test AudioVolume API
243 * @tc.type : FUNC
244 * @tc.number: SetSystemVolume_004
245 * @tc.desc : Test AudioVolume interface.
246 */
247 HWTEST_F(AudioVolumeUnitTest, SetSystemVolume_004, TestSize.Level1)
248 {
249 AudioVolume::GetInstance()->SetSystemVolume(STREAM_MUSIC_TEST, "speaker", 0.5f, 5);
250 AudioVolume::GetInstance()->SetSystemVolume(STREAM_MUSIC_TEST, "speaker", 1.0f, 5);
251 auto it = AudioVolume::GetInstance()->systemVolume_.find("1speaker");
252 EXPECT_EQ(it->second.volume_, 1.0f);
253 }
254 /**
255 * @tc.name : Test AudioVolume API
256 * @tc.type : FUNC
257 * @tc.number: SetSystemVolumeMute_001
258 * @tc.desc : Test AudioVolume interface.
259 */
260 HWTEST_F(AudioVolumeUnitTest, SetSystemVolumeMute_001, TestSize.Level1)
261 {
262 int32_t volumeType = STREAM_MUSIC_TEST;
263 std::string deviceClass = "speaker";
264 bool isMuted = true;
265 AudioVolume::GetInstance()->SetSystemVolumeMute(volumeType, deviceClass, isMuted);
266 auto it = AudioVolume::GetInstance()->systemVolume_.find("1speaker");
267 EXPECT_TRUE(it != AudioVolume::GetInstance()->systemVolume_.end());
268 }
269
270 /**
271 * @tc.name : Test AudioVolume API
272 * @tc.type : FUNC
273 * @tc.number: SetSystemVolumeMute_002
274 * @tc.desc : Test AudioVolume interface.
275 */
276 HWTEST_F(AudioVolumeUnitTest, SetSystemVolumeMute_002, TestSize.Level1)
277 {
278 int32_t volumeType = STREAM_MUSIC_TEST;
279 std::string deviceClass = "test";
280 bool isMuted = true;
281 AudioVolume::GetInstance()->SetSystemVolumeMute(volumeType, deviceClass, isMuted);
282 auto it = AudioVolume::GetInstance()->systemVolume_.find("1test");
283 EXPECT_TRUE(it != AudioVolume::GetInstance()->systemVolume_.end());
284 }
285
286 /**
287 * @tc.name : Test AudioVolume API
288 * @tc.type : FUNC
289 * @tc.number: GetStreamVolumeFade_001
290 * @tc.desc : Test AudioVolume interface.
291 */
292 HWTEST_F(AudioVolumeUnitTest, GetStreamVolumeFade_001, TestSize.Level1)
293 {
294 uint32_t sessionId = 1;
295 float fadeBegin = 0.5f;
296 float fadeEnd = 1.0f;
297 AudioVolume::GetInstance()->SetStreamVolumeFade(sessionId, fadeBegin, fadeEnd);
298 std::pair<float, float> getFade;
299 getFade=AudioVolume::GetInstance()->GetStreamVolumeFade(sessionId);
300 EXPECT_EQ(getFade.first, fadeBegin);
301 EXPECT_EQ(getFade.second, fadeEnd);
302 }
303
304 /**
305 * @tc.name : Test AudioVolume API
306 * @tc.type : FUNC
307 * @tc.number: SetStreamVolumeFade_001
308 * @tc.desc : Test AudioVolume interface.
309 */
310 HWTEST_F(AudioVolumeUnitTest, SetStreamVolumeFade_001, TestSize.Level1)
311 {
312 uint32_t sessionId = 1;
313 float fadeBegin = 0.5f;
314 float fadeEnd = 1.0f;
315 AudioVolume::GetInstance()->streamVolume_.clear();
316 AudioVolume::GetInstance()->SetStreamVolumeFade(sessionId, fadeBegin, fadeEnd);
317 std::pair<float, float> getFade = AudioVolume::GetInstance()->GetStreamVolumeFade(sessionId);
318 EXPECT_EQ(getFade.first, 1.0f);
319 EXPECT_EQ(getFade.second, 1.0f);
320 }
321
322 /**
323 * @tc.name : Test AudioVolume API
324 * @tc.type : FUNC
325 * @tc.number: SetFadeoutState_001
326 * @tc.desc : Test AudioVolume interface.
327 */
328 HWTEST_F(AudioVolumeUnitTest, SetFadeoutState_001, TestSize.Level1)
329 {
330 uint32_t streamIndex = 1;
331 uint32_t fadeoutState = DO_FADE;
332 AudioVolume::GetInstance()->SetFadeoutState(streamIndex, fadeoutState);
333 uint32_t getFadeoutState = AudioVolume::GetInstance()->GetFadeoutState(streamIndex);
334 EXPECT_EQ(getFadeoutState, fadeoutState);
335 }
336
337 /**
338 * @tc.name : Test AudioVolume API
339 * @tc.type : FUNC
340 * @tc.number: SetFadeoutState_002
341 * @tc.desc : Test AudioVolume interface.
342 */
343 HWTEST_F(AudioVolumeUnitTest, SetFadeoutState_002, TestSize.Level1)
344 {
345 uint32_t streamIndex = 1;
346 AudioVolume::GetInstance()->fadeoutState_.clear();
347 uint32_t ret = AudioVolume::GetInstance()->GetFadeoutState(streamIndex);
348 EXPECT_EQ(ret, INVALID_STATE);
349 }
350 /**
351 * @tc.name : Test AudioVolume API
352 * @tc.type : FUNC
353 * @tc.number: GetStreamVolume_001
354 * @tc.desc : Test AudioVolume interface.
355 */
356 HWTEST_F(AudioVolumeUnitTest, GetStreamVolume_001, TestSize.Level1)
357 {
358 float volumeStream = AudioVolume::GetInstance()->GetStreamVolume(1);
359 EXPECT_EQ(volumeStream, 1.0f);
360 }
361
362 /**
363 * @tc.name : Test AudioVolume API
364 * @tc.type : FUNC
365 * @tc.number: AddStreamVolume_001
366 * @tc.desc : Test AudioVolume interface.
367 */
368 HWTEST_F(AudioVolumeUnitTest, AddStreamVolume_001, TestSize.Level1)
369 {
370 uint32_t sessionId = 1;
371 int32_t sample = AudioVolume::GetInstance()->streamVolume_.size();
372 int32_t streamType = STREAM_MUSIC_TEST;
373 int32_t streamUsage = STREAM_USAGE_MEDIA_TEST;
374 int32_t uid = 1000;
375 int32_t pid = 1000;
376 int32_t mode = 1;
377 AudioVolume::GetInstance()->AddStreamVolume(sessionId, streamType, streamUsage, uid, pid, false, mode);
378 int32_t ret = AudioVolume::GetInstance()->streamVolume_.size();
379 EXPECT_EQ(ret, sample);
380 }
381
382 /**
383 * @tc.name : Test AudioVolume API
384 * @tc.type : FUNC
385 * @tc.number: ConvertStreamTypeStrToInt_001
386 * @tc.desc : Test AudioVolume interface.
387 */
388 HWTEST_F(AudioVolumeUnitTest, ConvertStreamTypeStrToInt_001, TestSize.Level1)
389 {
390 std::string streamType ="ring";
391 int32_t ret = AudioVolume::GetInstance()->ConvertStreamTypeStrToInt(streamType);
392 EXPECT_EQ(ret, 2);
393 }
394
395 /**
396 * @tc.name : Test AudioVolume API
397 * @tc.type : FUNC
398 * @tc.number: ConvertStreamTypeStrToInt_002
399 * @tc.desc : Test AudioVolume interface.
400 */
401 HWTEST_F(AudioVolumeUnitTest, ConvertStreamTypeStrToInt_002, TestSize.Level1)
402 {
403 std::string streamType ="test";
404 int32_t ret = AudioVolume::GetInstance()->ConvertStreamTypeStrToInt(streamType);
405 EXPECT_EQ(ret, 1);
406 }
407
408 } // namespace OHOS::AudioStandard
409 } // namespace OHOS
410