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