1 /*
2 * Copyright (c) 2025 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 "media_errors.h"
17 #include "cachebuffer_unittest.h"
18
19 namespace OHOS {
20 namespace Media {
21 using namespace std;
22 using namespace testing;
23 using namespace testing::ext;
24
SetUpTestCase(void)25 void SoundPoolCacheBufferUnitTest::SetUpTestCase(void)
26 {
27 }
28
TearDownTestCase(void)29 void SoundPoolCacheBufferUnitTest::TearDownTestCase(void)
30 {
31 }
32
SetUp(void)33 void SoundPoolCacheBufferUnitTest::SetUp(void)
34 {
35 Format trackFormat;
36 int32_t soundID = 1;
37 int32_t streamID = 10;
38 std::shared_ptr<ThreadPool> cacheBufferStopThreadPool;
39 cacheBuffer_ = std::make_shared<CacheBuffer>(trackFormat, soundID, streamID, cacheBufferStopThreadPool);
40 }
41
TearDown(void)42 void SoundPoolCacheBufferUnitTest::TearDown(void)
43 {
44 cacheBuffer_ = nullptr;
45 }
46
47
48 // @tc.name Test DealPlayParamsBeforePlay API
49 // @tc.number CacheBuferDealPlayParamsBeforePlayUnittest_001
50 HWTEST_F(SoundPoolCacheBufferUnitTest, CacheBuferDealPlayParamsBeforePlayUnittest_001, TestSize.Level0)
51 {
52 ASSERT_NE(cacheBuffer_, nullptr);
53 auto audioRenderer = std::make_unique<MockAudioRender>();
54 EXPECT_CALL(*(audioRenderer), SetRenderRate(_)).Times(1).WillRepeatedly(testing::Return(0));
55 EXPECT_CALL(*(audioRenderer), SetVolume(_)).Times(1).WillRepeatedly(testing::Return(0));
56 EXPECT_CALL(*(audioRenderer), SetOffloadAllowed(_)).Times(1).WillRepeatedly(testing::Return(0));
57 EXPECT_CALL(*(audioRenderer), SetParallelPlayFlag(_)).Times(1).WillRepeatedly(testing::Return(0));
58 EXPECT_CALL(*(audioRenderer), SetAudioHapticsSyncId(_)).Times(1).WillRepeatedly(testing::Return());
59 cacheBuffer_->audioRenderer_ = std::move(audioRenderer);
60 int32_t audioHapticsSyncId = 1;
61 struct PlayParams playParameters;
62 playParameters.loop = -1;
63 playParameters.rate = 0;
64 playParameters.leftVolume = 0.5;
65 playParameters.rightVolume = 0.3;
66 playParameters.priority = 1;
67 playParameters.parallelPlayFlag = true;
68 playParameters.audioHapticsSyncId = audioHapticsSyncId;
69 cacheBuffer_->DealPlayParamsBeforePlay(playParameters);
70 ASSERT_EQ(cacheBuffer_->loop_, playParameters.loop);
71 ASSERT_EQ(cacheBuffer_->priority_, playParameters.priority);
72 }
73
74 /**
75 * @tc.name : Test CreateAudioRenderer
76 * @tc.number: CreateAudioRenderer_001
77 * @tc.desc : Test returns NORMAL_PLAY_RENDERER_FLAGS
78 */
79 HWTEST_F(SoundPoolCacheBufferUnitTest, CreateAudioRenderer_001, TestSize.Level0)
80 {
81 ASSERT_NE(cacheBuffer_, nullptr);
82 AudioStandard::AudioRendererInfo info;
83 PlayParams playParams;
84 cacheBuffer_->rendererFlags_ = AudioStandard::AUDIO_FLAG_VKB_FAST;
85
86 cacheBuffer_->CreateAudioRenderer(info, playParams);
87
88 EXPECT_EQ(cacheBuffer_->rendererFlags_, CacheBuffer::NORMAL_PLAY_RENDERER_FLAGS);
89 }
90
91 /**
92 * @tc.name : Test CreateAudioRenderer
93 * @tc.number: CreateAudioRenderer_002
94 * @tc.desc : Test returns NORMAL_PLAY_RENDERER_FLAGS
95 */
96 HWTEST_F(SoundPoolCacheBufferUnitTest, CreateAudioRenderer_002, TestSize.Level0)
97 {
98 ASSERT_NE(cacheBuffer_, nullptr);
99 AudioStandard::AudioRendererInfo info;
100 PlayParams playParams;
101 cacheBuffer_->rendererFlags_ = AudioStandard::AUDIO_FLAG_VKB_NORMAL;
102
103 cacheBuffer_->CreateAudioRenderer(info, playParams);
104
105 EXPECT_EQ(cacheBuffer_->rendererFlags_, CacheBuffer::NORMAL_PLAY_RENDERER_FLAGS);
106 }
107
108 /**
109 * @tc.name : Test CreateAudioRenderer
110 * @tc.number: CreateAudioRenderer_003
111 * @tc.desc : Test returns NORMAL_PLAY_RENDERER_FLAGS
112 */
113 HWTEST_F(SoundPoolCacheBufferUnitTest, CreateAudioRenderer_003, TestSize.Level0)
114 {
115 ASSERT_NE(cacheBuffer_, nullptr);
116 AudioStandard::AudioRendererInfo info;
117 PlayParams playParams;
118
119 cacheBuffer_->CreateAudioRenderer(info, playParams);
120
121 EXPECT_EQ(cacheBuffer_->rendererFlags_, CacheBuffer::NORMAL_PLAY_RENDERER_FLAGS);
122 }
123 } // namespace Media
124 } // namespace OHOS
125