• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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