• 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 <thread>
17 #include <gtest/gtest.h>
18 #include "audio_utils.h"
19 #include "parameter.h"
20 #include "audio_channel_blend.h"
21 #include "volume_ramp.h"
22 #include "audio_speed.h"
23 #include "audio_errors.h"
24 #include "audio_performance_monitor.h"
25 #include "audio_stream_info.h"
26 #include "audio_performance_monitor_c.h"
27 
28 using namespace testing::ext;
29 using namespace std;
30 namespace OHOS {
31 namespace AudioStandard {
32 
33 class AudioUtilsPlusUnitTest : public testing::Test {
34 public:
35     static void SetUpTestCase(void);
36     static void TearDownTestCase(void);
37     void SetUp();
38     void TearDown();
39 };
40 
SetUpTestCase(void)41 void AudioUtilsPlusUnitTest::SetUpTestCase(void)
42 {
43     // input testsuit setup step,setup invoked before all testcases
44 }
45 
TearDownTestCase(void)46 void AudioUtilsPlusUnitTest::TearDownTestCase(void)
47 {
48     // input testsuit teardown step,teardown invoked after all testcases
49 }
50 
SetUp(void)51 void AudioUtilsPlusUnitTest::SetUp(void)
52 {
53     // input testcase setup step,setup invoked before each testcases
54 }
55 
TearDown(void)56 void AudioUtilsPlusUnitTest::TearDown(void)
57 {
58     // input testcase teardown step,teardown invoked after each testcases
59 }
60 
61 /**
62 * @tc.name  : Test AudioUtilsUnitTest API
63 * @tc.type  : FUNC
64 * @tc.number: AudioUtilsPlusUnitTest_001
65 * @tc.desc  : Test UpdateMaxAmplitude
66 */
67 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_001, TestSize.Level1)
68 {
69     ConvertHdiFormat adapterFormat = SAMPLE_U8_C;
70     char frame[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
71     uint64_t replyBytes = 10;
72     float result = UpdateMaxAmplitude(adapterFormat, frame, replyBytes);
73 
74     EXPECT_NEAR(result, 0, 0.9);
75 }
76 
77 /**
78 * @tc.name  : Test AudioUtilsUnitTest API
79 * @tc.type  : FUNC
80 * @tc.number: AudioUtilsPlusUnitTest_002
81 * @tc.desc  : Test UpdateMaxAmplitude
82 */
83 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_002, TestSize.Level1)
84 {
85     ConvertHdiFormat adapterFormat = SAMPLE_S16_C;
86     char frame[20] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9};
87     uint64_t replyBytes = 10;
88     float result = UpdateMaxAmplitude(adapterFormat, frame, replyBytes);
89 
90     EXPECT_NEAR(result, 0, 0.9);
91 }
92 
93 /**
94 * @tc.name  : Test AudioUtilsUnitTest API
95 * @tc.type  : FUNC
96 * @tc.number: AudioUtilsPlusUnitTest_003
97 * @tc.desc  : Test UpdateMaxAmplitude
98 */
99 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_003, TestSize.Level1)
100 {
101     ConvertHdiFormat adapterFormat = SAMPLE_S24_C;
102     char frame[30] = {0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4,
103         5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9};
104     uint64_t replyBytes = 10;
105     float result = UpdateMaxAmplitude(adapterFormat, frame, replyBytes);
106 
107     EXPECT_NEAR(result, 0, 0.9);
108 }
109 
110 /**
111 * @tc.name  : Test AudioUtilsUnitTest API
112 * @tc.type  : FUNC
113 * @tc.number: AudioUtilsPlusUnitTest_004
114 * @tc.desc  : Test UpdateMaxAmplitude
115 */
116 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_004, TestSize.Level1)
117 {
118     ConvertHdiFormat adapterFormat = SAMPLE_S32_C;
119     char frame[40] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,
120                     5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9};
121     uint64_t replyBytes = 10;
122     float result = UpdateMaxAmplitude(adapterFormat, frame, replyBytes);
123 
124     EXPECT_NEAR(result, 0, 0.9);
125 }
126 
127 /**
128 * @tc.name  : Test AudioUtilsUnitTest API
129 * @tc.type  : FUNC
130 * @tc.number: AudioUtilsPlusUnitTest_006
131 * @tc.desc  : Test CalculateMaxAmplitudeForPCM8Bit
132 */
133 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_006, TestSize.Level1)
134 {
135     int8_t frame[2] = {3, -1};
136     uint64_t nSamples = 2;
137     auto result = CalculateMaxAmplitudeForPCM8Bit(frame, nSamples);
138 
139     EXPECT_NEAR(result, 0, 0.9);
140 }
141 
142 /**
143 * @tc.name  : Test AudioUtilsUnitTest API
144 * @tc.type  : FUNC
145 * @tc.number: AudioUtilsPlusUnitTest_007
146 * @tc.desc  : Test CalculateMaxAmplitudeForPCM16Bit
147 */
148 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_007, TestSize.Level1)
149 {
150     int16_t frame[2] = {3, -1};
151     uint64_t nSamples = 2;
152     auto result = CalculateMaxAmplitudeForPCM16Bit(frame, nSamples);
153 
154     EXPECT_NEAR(result, 0, 0.9);
155 }
156 
157 /**
158 * @tc.name  : Test AudioUtilsUnitTest API
159 * @tc.type  : FUNC
160 * @tc.number: AudioUtilsPlusUnitTest_008
161 * @tc.desc  : Test CalculateMaxAmplitudeForPCM24Bit
162 */
163 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_008, TestSize.Level1)
164 {
165     char frame[3] = {0xFF, 0xFF, 0xFF};
166     uint64_t nSamples = 1;
167     auto result = CalculateMaxAmplitudeForPCM24Bit(frame, nSamples);
168 
169     EXPECT_NEAR(result, 0, 2.5);
170 }
171 
172 /**
173 * @tc.name  : Test AudioUtilsUnitTest API
174 * @tc.type  : FUNC
175 * @tc.number: AudioUtilsPlusUnitTest_009
176 * @tc.desc  : Test CalculateMaxAmplitudeForPCM24Bit
177 */
178 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_009, TestSize.Level1)
179 {
180     char frame[3] = {0x00, 0x00, 0x00};
181     uint64_t nSamples = 1;
182     auto result = CalculateMaxAmplitudeForPCM24Bit(frame, nSamples);
183 
184     EXPECT_NEAR(result, 0, 0.9);
185 }
186 
187 /**
188 * @tc.name  : Test AudioUtilsUnitTest API
189 * @tc.type  : FUNC
190 * @tc.number: AudioUtilsPlusUnitTest_010
191 * @tc.desc  : Test CalculateMaxAmplitudeForPCM32Bit
192 */
193 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_010, TestSize.Level1)
194 {
195     int32_t frame[2] = {3, -1};
196     uint64_t nSamples = 1;
197     auto result = CalculateMaxAmplitudeForPCM32Bit(frame, nSamples);
198 
199     EXPECT_NEAR(result, 0, 0.9);
200 }
201 
202 /**
203 * @tc.name  : Test AudioUtilsUnitTest API
204 * @tc.type  : FUNC
205 * @tc.number: AudioUtilsPlusUnitTest_011
206 * @tc.desc  : Test GetFormatByteSize
207 */
208 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_011, TestSize.Level1)
209 {
210     int32_t format = SAMPLE_S16LE;
211     auto result = GetFormatByteSize(format);
212 
213     EXPECT_EQ(result, 2);
214 }
215 
216 /**
217 * @tc.name  : Test AudioUtilsUnitTest API
218 * @tc.type  : FUNC
219 * @tc.number: AudioUtilsPlusUnitTest_012
220 * @tc.desc  : Test GetFormatByteSize
221 */
222 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_012, TestSize.Level1)
223 {
224     int32_t format = SAMPLE_S24LE;
225     auto result = GetFormatByteSize(format);
226 
227     EXPECT_EQ(result, 3);
228 }
229 
230 /**
231 * @tc.name  : Test AudioUtilsUnitTest API
232 * @tc.type  : FUNC
233 * @tc.number: AudioUtilsPlusUnitTest_013
234 * @tc.desc  : Test GetFormatByteSize
235 */
236 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_013, TestSize.Level1)
237 {
238     int32_t format = SAMPLE_S32LE;
239     auto result = GetFormatByteSize(format);
240     EXPECT_EQ(result, 4);
241 
242     result = 0;
243     format = SAMPLE_F32LE;
244     result = GetFormatByteSize(format);
245     EXPECT_EQ(result, 4);
246 }
247 
248 /**
249 * @tc.name  : Test AudioUtilsUnitTest API
250 * @tc.type  : FUNC
251 * @tc.number: AudioUtilsPlusUnitTest_014
252 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
253 */
254 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_014, TestSize.Level1)
255 {
256     DeviceType deviceType = DeviceType::DEVICE_TYPE_EARPIECE;
257     std::string device = "EARPIECE";
258     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
259 
260     EXPECT_EQ(result, device);
261 }
262 
263 /**
264 * @tc.name  : Test AudioUtilsUnitTest API
265 * @tc.type  : FUNC
266 * @tc.number: AudioUtilsPlusUnitTest_015
267 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
268 */
269 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_015, TestSize.Level1)
270 {
271     DeviceType deviceType = DeviceType::DEVICE_TYPE_SPEAKER;
272     std::string device = "SPEAKER";
273     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
274 
275     EXPECT_EQ(result, device);
276 }
277 
278 /**
279 * @tc.name  : Test AudioUtilsUnitTest API
280 * @tc.type  : FUNC
281 * @tc.number: AudioUtilsPlusUnitTest_016
282 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
283 */
284 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_016, TestSize.Level1)
285 {
286     DeviceType deviceType = DeviceType::DEVICE_TYPE_WIRED_HEADSET;
287     std::string device = "WIRED_HEADSET";
288     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
289 
290     EXPECT_EQ(result, device);
291 }
292 
293 /**
294 * @tc.name  : Test AudioUtilsUnitTest API
295 * @tc.type  : FUNC
296 * @tc.number: AudioUtilsPlusUnitTest_017
297 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
298 */
299 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_017, TestSize.Level1)
300 {
301     DeviceType deviceType = DeviceType::DEVICE_TYPE_WIRED_HEADPHONES;
302     std::string device = "WIRED_HEADPHONES";
303     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
304 
305     EXPECT_EQ(result, device);
306 }
307 
308 /**
309 * @tc.name  : Test AudioUtilsUnitTest API
310 * @tc.type  : FUNC
311 * @tc.number: AudioUtilsPlusUnitTest_018
312 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
313 */
314 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_018, TestSize.Level1)
315 {
316     DeviceType deviceType = DeviceType::DEVICE_TYPE_BLUETOOTH_SCO;
317     std::string device = "BLUETOOTH_SCO";
318     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
319 
320     EXPECT_EQ(result, device);
321 }
322 
323 /**
324 * @tc.name  : Test AudioUtilsUnitTest API
325 * @tc.type  : FUNC
326 * @tc.number: AudioUtilsPlusUnitTest_019
327 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
328 */
329 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_019, TestSize.Level1)
330 {
331     DeviceType deviceType = DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP;
332     std::string device = "BLUETOOTH_A2DP";
333     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
334 
335     EXPECT_EQ(result, device);
336 }
337 
338 /**
339 * @tc.name  : Test AudioUtilsUnitTest API
340 * @tc.type  : FUNC
341 * @tc.number: AudioUtilsPlusUnitTest_020
342 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
343 */
344 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_020, TestSize.Level1)
345 {
346     DeviceType deviceType = DeviceType::DEVICE_TYPE_MIC;
347     std::string device = "MIC";
348     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
349 
350     EXPECT_EQ(result, device);
351 }
352 
353 /**
354 * @tc.name  : Test AudioUtilsUnitTest API
355 * @tc.type  : FUNC
356 * @tc.number: AudioUtilsPlusUnitTest_021
357 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
358 */
359 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_021, TestSize.Level1)
360 {
361     DeviceType deviceType = DeviceType::DEVICE_TYPE_WAKEUP;
362     std::string device = "WAKEUP";
363     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
364 
365     EXPECT_EQ(result, device);
366 }
367 
368 /**
369 * @tc.name  : Test AudioUtilsUnitTest API
370 * @tc.type  : FUNC
371 * @tc.number: AudioUtilsPlusUnitTest_022
372 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
373 */
374 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_022, TestSize.Level1)
375 {
376     DeviceType deviceType = DeviceType::DEVICE_TYPE_NONE;
377     std::string device = "NONE";
378     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
379 
380     EXPECT_EQ(result, device);
381 }
382 
383 /**
384 * @tc.name  : Test AudioUtilsUnitTest API
385 * @tc.type  : FUNC
386 * @tc.number: AudioUtilsPlusUnitTest_023
387 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
388 */
389 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_023, TestSize.Level1)
390 {
391     DeviceType deviceType = DeviceType::DEVICE_TYPE_INVALID;
392     std::string device = "INVALID";
393     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
394 
395     EXPECT_EQ(result, device);
396 }
397 
398 /**
399 * @tc.name  : Test AudioUtilsUnitTest API
400 * @tc.type  : FUNC
401 * @tc.number: AudioUtilsPlusUnitTest_024
402 * @tc.desc  : Test AudioInfoDumpUtils::GetDeviceTypeName
403 */
404 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_024, TestSize.Level1)
405 {
406     DeviceType deviceType = DeviceType::DEVICE_TYPE_USB_ARM_HEADSET;
407     std::string device = "UNKNOWN";
408     auto result = AudioInfoDumpUtils::GetDeviceTypeName(deviceType);
409 
410     EXPECT_EQ(result, device);
411 }
412 
413 /**
414 * @tc.name  : Test AudioUtilsUnitTest API
415 * @tc.type  : FUNC
416 * @tc.number: AudioUtilsPlusUnitTest_025
417 * @tc.desc  : Test AudioInfoDumpUtils::GetConnectTypeName
418 */
419 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_025, TestSize.Level1)
420 {
421     ConnectType connectType = OHOS::AudioStandard::CONNECT_TYPE_LOCAL;
422     std::string device = "LOCAL";
423     auto result = AudioInfoDumpUtils::GetConnectTypeName(connectType);
424 
425     EXPECT_EQ(result, device);
426 }
427 
428 /**
429 * @tc.name  : Test AudioUtilsUnitTest API
430 * @tc.type  : FUNC
431 * @tc.number: AudioUtilsPlusUnitTest_026
432 * @tc.desc  : Test AudioInfoDumpUtils::GetConnectTypeName
433 */
434 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_026, TestSize.Level1)
435 {
436     ConnectType connectType = static_cast<ConnectType>(5);
437     std::string device = "UNKNOWN";
438     auto result = AudioInfoDumpUtils::GetConnectTypeName(connectType);
439 
440     EXPECT_EQ(result, device);
441 }
442 
443 /**
444 * @tc.name  : Test AudioUtilsUnitTest API
445 * @tc.type  : FUNC
446 * @tc.number: AudioUtilsPlusUnitTest_027
447 * @tc.desc  : Test AudioInfoDumpUtils::GetConnectTypeName
448 */
449 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_027, TestSize.Level1)
450 {
451     ConnectType connectType = static_cast<ConnectType>(5);
452     std::string device = "UNKNOWN";
453     auto result = AudioInfoDumpUtils::GetConnectTypeName(connectType);
454 
455     EXPECT_EQ(result, device);
456 }
457 
458 /**
459 * @tc.name  : Test AudioUtilsUnitTest API
460 * @tc.type  : FUNC
461 * @tc.number: AudioUtilsPlusUnitTest_028
462 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
463 */
464 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_028, TestSize.Level1)
465 {
466     SourceType sourceType = SourceType::SOURCE_TYPE_INVALID;
467     std::string device = "INVALID";
468     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
469 
470     EXPECT_EQ(result, device);
471 }
472 
473 /**
474 * @tc.name  : Test AudioUtilsUnitTest API
475 * @tc.type  : FUNC
476 * @tc.number: AudioUtilsPlusUnitTest_029
477 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
478 */
479 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_029, TestSize.Level1)
480 {
481     SourceType sourceType = SourceType::SOURCE_TYPE_MIC;
482     std::string device = "MIC";
483     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
484 
485     EXPECT_EQ(result, device);
486 }
487 
488 /**
489 * @tc.name  : Test AudioUtilsUnitTest API
490 * @tc.type  : FUNC
491 * @tc.number: AudioUtilsPlusUnitTest_030
492 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
493 */
494 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_030, TestSize.Level1)
495 {
496     SourceType sourceType = SourceType::SOURCE_TYPE_CAMCORDER;
497     std::string device = "CAMCORDER";
498     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
499 
500     EXPECT_EQ(result, device);
501 }
502 
503 /**
504 * @tc.name  : Test AudioUtilsUnitTest API
505 * @tc.type  : FUNC
506 * @tc.number: AudioUtilsPlusUnitTest_031
507 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
508 */
509 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_031, TestSize.Level1)
510 {
511     SourceType sourceType = SourceType::SOURCE_TYPE_VOICE_RECOGNITION;
512     std::string device = "VOICE_RECOGNITION";
513     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
514 
515     EXPECT_EQ(result, device);
516 }
517 
518 /**
519 * @tc.name  : Test AudioUtilsUnitTest API
520 * @tc.type  : FUNC
521 * @tc.number: AudioUtilsPlusUnitTest_032
522 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
523 */
524 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_032, TestSize.Level1)
525 {
526     SourceType sourceType = SourceType::SOURCE_TYPE_ULTRASONIC;
527     std::string device = "ULTRASONIC";
528     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
529 
530     EXPECT_EQ(result, device);
531 }
532 
533 /**
534 * @tc.name  : Test AudioUtilsUnitTest API
535 * @tc.type  : FUNC
536 * @tc.number: AudioUtilsPlusUnitTest_033
537 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
538 */
539 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_033, TestSize.Level1)
540 {
541     SourceType sourceType = SourceType::SOURCE_TYPE_VOICE_COMMUNICATION;
542     std::string device = "VOICE_COMMUNICATION";
543     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
544 
545     EXPECT_EQ(result, device);
546 }
547 
548 /**
549 * @tc.name  : Test AudioUtilsUnitTest API
550 * @tc.type  : FUNC
551 * @tc.number: AudioUtilsPlusUnitTest_034
552 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
553 */
554 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_034, TestSize.Level1)
555 {
556     SourceType sourceType = SourceType::SOURCE_TYPE_WAKEUP;
557     std::string device = "WAKEUP";
558     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
559 
560     EXPECT_EQ(result, device);
561 }
562 
563 /**
564 * @tc.name  : Test AudioUtilsUnitTest API
565 * @tc.type  : FUNC
566 * @tc.number: AudioUtilsPlusUnitTest_035
567 * @tc.desc  : Test AudioInfoDumpUtils::GetSourceName
568 */
569 HWTEST(AudioUtilsPlusUnitTest, AudioUtilsPlusUnitTest_035, TestSize.Level1)
570 {
571     SourceType sourceType = SourceType::SOURCE_TYPE_MIC_REF;
572     std::string device = "UNKNOWN";
573     auto result = AudioInfoDumpUtils::GetSourceName(sourceType);
574 
575     EXPECT_EQ(result, device);
576 }
577 
578 /**
579 * @tc.name  : Test AudioUtilsUnitTest API
580 * @tc.type  : FUNC
581 * @tc.number: AudioPerformanaceMonitor_001
582 * @tc.desc  : Test AudioPerformanaceMonitor::GetInstance
583 */
584 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_001, TestSize.Level3)
585 {
586     EXPECT_NE(&AudioPerformanceMonitor::GetInstance(), nullptr);
587 }
588 
589 /**
590 * @tc.name  : Test AudioUtilsUnitTest API
591 * @tc.type  : FUNC
592 * @tc.number: AudioPerformanaceMonitor_002
593 * @tc.desc  : Test AudioPerformanaceMonitor::RecordSilenceState--record first time
594 */
595 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_002, TestSize.Level3)
596 {
597     uint32_t sessionId = 111111;
598     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.find(sessionId),
599         AudioPerformanceMonitor::GetInstance().silenceDetectMap_.end());
600     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, true, PIPE_TYPE_NORMAL_OUT, 0);
601     EXPECT_NE(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.find(sessionId),
602         AudioPerformanceMonitor::GetInstance().silenceDetectMap_.end());
603 }
604 
605 /**
606 * @tc.name  : Test AudioUtilsUnitTest API
607 * @tc.type  : FUNC
608 * @tc.number: AudioPerformanaceMonitor_003
609 * @tc.desc  : Test AudioPerformanaceMonitor::RecordSilenceState--record excceds queue size
610 */
611 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_003, TestSize.Level3)
612 {
613     uint32_t sessionId = 111111;
614     for (size_t i = 0; i < MAX_RECORD_QUEUE_SIZE + 1; ++i) {
615         AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, true, PIPE_TYPE_NORMAL_OUT, 0);
616     }
617     EXPECT_NE(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.find(sessionId),
618         AudioPerformanceMonitor::GetInstance().silenceDetectMap_.end());
619     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].historyStateDeque.size(),
620         MAX_RECORD_QUEUE_SIZE);
621 }
622 
623 /**
624 * @tc.name  : Test AudioUtilsUnitTest API
625 * @tc.type  : FUNC
626 * @tc.number: AudioPerformanaceMonitor_004
627 * @tc.desc  : Test AudioPerformanaceMonitor::StartSilenceMonitor
628 */
629 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_004, TestSize.Level3)
630 {
631     uint32_t sessionId = 111111;
632     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId, 0);
633     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].historyStateDeque.size(),
634         static_cast<size_t>(0));
635     uint32_t notExistSessionId = 111112;
636     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(notExistSessionId, 0);
637     EXPECT_NE(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.find(notExistSessionId),
638         AudioPerformanceMonitor::GetInstance().silenceDetectMap_.end());
639 }
640 
641 /**
642 * @tc.name  : Test AudioUtilsUnitTest API
643 * @tc.type  : FUNC
644 * @tc.number: AudioPerformanaceMonitor_005
645 * @tc.desc  : Test AudioPerformanaceMonitor::RecordSilenceState--record false and detect as noise event
646 */
647 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_005, TestSize.Level3)
648 {
649     uint32_t sessionId = 111111;
650     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, false, PIPE_TYPE_NORMAL_OUT, 0);
651     for (size_t i = 0; i < MIN_SILENCE_FRAME_COUNT; ++i) {
652         AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, true, PIPE_TYPE_NORMAL_OUT, 0);
653     }
654     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, false, PIPE_TYPE_NORMAL_OUT, 0);
655     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].historyStateDeque.size(),
656         static_cast<size_t>(0));
657 }
658 
659 /**
660 * @tc.name  : Test AudioUtilsUnitTest API
661 * @tc.type  : FUNC
662 * @tc.number: AudioPerformanaceMonitor_006
663 * @tc.desc  : Test AudioPerformanaceMonitor::deleteSilenceMonitor
664 */
665 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_006, TestSize.Level3)
666 {
667     uint32_t sessionId = 111111;
668     AudioPerformanceMonitor::GetInstance().DeleteSilenceMonitor(sessionId);
669     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.find(sessionId),
670         AudioPerformanceMonitor::GetInstance().silenceDetectMap_.end());
671 }
672 
673 /**
674 * @tc.name  : Test AudioUtilsUnitTest API
675 * @tc.type  : FUNC
676 * @tc.number: AudioPerformanaceMonitor_007
677 * @tc.desc  : Test AudioPerformanaceMonitor::RecordTimeStamp
678 */
679 HWTEST(AudioUtilsPlusUnitTest, AudioPerformanaceMonitor_007, TestSize.Level3)
680 {
681     AdapterType adapterType = ADAPTER_TYPE_PRIMARY;
682     AudioPerformanceMonitor::GetInstance().RecordTimeStamp(adapterType, INIT_LASTWRITTEN_TIME);
683     int64_t curTime = ClockTime::GetCurNano();
684     AudioPerformanceMonitor::GetInstance().RecordTimeStamp(adapterType, curTime);
685     int64_t exeedTime = ClockTime::GetCurNano() + 100000000; // add 100ms
686     AudioPerformanceMonitor::GetInstance().RecordTimeStamp(adapterType, exeedTime);
687     AudioPerformanceMonitor::GetInstance().DeleteOvertimeMonitor(adapterType);
688     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().overTimeDetectMap_.size(), static_cast<size_t>(0));
689 }
690 
691 /**
692 * @tc.name  : Test RecordPaSilenceState API
693 * @tc.type  : FUNC
694 * @tc.number: RecordPaSilenceState_001
695 * @tc.desc  : Test RecordPaSilenceState
696 */
697 HWTEST(AudioUtilsPlusUnitTest, RecordPaSilenceState_001, TestSize.Level3)
698 {
699     uint32_t sessionId = 111111;
700     bool isSilence = true;
701     enum PA_PIPE_TYPE paPipeType = static_cast<PA_PIPE_TYPE>(100);
702     uint32_t  uid = 1000;
703     RecordPaSilenceState(sessionId, isSilence, PA_PIPE_TYPE_NORMAL, uid);
704     RecordPaSilenceState(sessionId, isSilence, PA_PIPE_TYPE_MULTICHANNEL, uid);
705     RecordPaSilenceState(sessionId, isSilence, paPipeType, uid);
706     AudioPerformanceMonitor::GetInstance().DeleteSilenceMonitor(sessionId);
707     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_.size(), 1);
708 }
709 
710 /**
711 * @tc.name  : Test PauseSilenceMonitor API
712 * @tc.type  : FUNC
713 * @tc.number: PauseSilenceMonitor_001
714 * @tc.desc  : Test PauseSilenceMonitor
715 */
716 HWTEST(AudioUtilsPlusUnitTest, PauseSilenceMonitor_001, TestSize.Level3)
717 {
718     uint32_t sessionId = 111111;
719     AudioPerformanceMonitor::GetInstance().silenceDetectMap_ = {};
720     AudioPerformanceMonitor::GetInstance().PauseSilenceMonitor(sessionId);
721 
722     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId, 0);
723     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].isRunning, true);
724 
725     AudioPerformanceMonitor::GetInstance().PauseSilenceMonitor(sessionId);
726     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].isRunning, false);
727 }
728 
729 /**
730 * @tc.name  : Test GetRunningHapNames API
731 * @tc.type  : FUNC
732 * @tc.number: GetRunningHapNames_001
733 * @tc.desc  : Test GetRunningHapNames
734 */
735 HWTEST(AudioUtilsPlusUnitTest, GetRunningHapNames_001, TestSize.Level3)
736 {
737     uint32_t sessionId1 = 1001;
738     uint32_t tokenId1 = 100001;
739     uint32_t sessionId2 = 1002;
740     uint32_t tokenId2 = 100002;
741     uint32_t sessionId3 = 1003;
742     uint32_t tokenId3 = 100003;
743 
744     AudioPerformanceMonitor::GetInstance().silenceDetectMap_ = {};
745     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId1, tokenId1);
746     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId1, false, PIPE_TYPE_NORMAL_OUT, 0);
747     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId2, tokenId2);
748     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId2, false, PIPE_TYPE_NORMAL_OUT, 0);
749     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId3, tokenId3);
750     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId3, false, PIPE_TYPE_LOWLATENCY_OUT, 0);
751 
752     AudioPerformanceMonitor::GetInstance().GetRunningHapNames(ADAPTER_TYPE_PRIMARY);
753 
754     AudioPerformanceMonitor::GetInstance().PauseSilenceMonitor(sessionId1);
755     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId1].isRunning, false);
756 
757     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId2].isRunning, true);
758 }
759 
760 /**
761 * @tc.name  : Test JudgeNoise API
762 * @tc.type  : FUNC
763 * @tc.number: JudgeNoise_001
764 * @tc.desc  : Test JudgeNoise
765 */
766 HWTEST(AudioUtilsPlusUnitTest, JudgeNoise_001, TestSize.Level3)
767 {
768     uint32_t sessionId = 111111;
769     AudioPerformanceMonitor::GetInstance().silenceDetectMap_ = {};
770 
771     AudioPerformanceMonitor::GetInstance().StartSilenceMonitor(sessionId, 0);
772     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, false, PIPE_TYPE_NORMAL_OUT, 0);
773     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, false, PIPE_TYPE_NORMAL_OUT, 0);
774 
775     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].isRunning, true);
776 
777     AudioPerformanceMonitor::GetInstance().RecordSilenceState(sessionId, true, PIPE_TYPE_LOWLATENCY_OUT, 0);
778     AudioPerformanceMonitor::GetInstance().PauseSilenceMonitor(sessionId);
779     EXPECT_EQ(AudioPerformanceMonitor::GetInstance().silenceDetectMap_[sessionId].isRunning, false);
780 }
781 
782 /**
783 * @tc.name  : Test ReportEvent
784 * @tc.type  : FUNC
785 * @tc.number: ReportEvent_001
786 * @tc.desc  : Test ReportEvent
787 */
788 HWTEST(AudioUtilsPlusUnitTest, ReportEvent_001, TestSize.Level4)
789 {
790     AudioPerformanceMonitor::GetInstance().ReportEvent(
791 
792         static_cast<DetectEvent>(100), 1, PIPE_TYPE_UNKNOWN, ADAPTER_TYPE_UNKNOWN, 0);
793     EXPECT_NE(AudioPerformanceMonitor::GetInstance().overTimeLastReportTime_, ClockTime::GetRealNano());
794 }
795 } // namespace AudioStandard
796 } // namespace OHOS