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 #include "audio_info.h"
18 #include "audio_adapter.h"
19 #include "avsession_log.h"
20 #include "avsession_errors.h"
21 #include "focus_session_strategy.h"
22
23 using namespace OHOS;
24 using namespace OHOS::AVSession;
25 using OHOS::AudioStandard::AudioRendererChangeInfo;
26 using OHOS::AudioStandard::RendererState;
27
28 class FocusSessionStrategyTest : public testing::Test {
29 public:
30 static void SetUpTestCase(void);
31 static void TearDownTestCase(void);
32 void SetUp();
33 void TearDown();
34 };
35
SetUpTestCase()36 void FocusSessionStrategyTest::SetUpTestCase()
37 {}
38
TearDownTestCase()39 void FocusSessionStrategyTest::TearDownTestCase()
40 {}
41
SetUp()42 void FocusSessionStrategyTest::SetUp()
43 {}
44
TearDown()45 void FocusSessionStrategyTest::TearDown()
46 {}
47
48 /**
49 * @tc.name: HandleAudioRenderStateChangeEvent001
50 * @tc.desc: Test IsCommandSendEnable
51 * @tc.type: FUNC
52 */
HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent001, testing::ext::TestSize.Level1)53 static HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent001, testing::ext::TestSize.Level1)
54 {
55 SLOGD("HandleAudioRenderStateChangeEvent001 begin!");
56 FocusSessionStrategy focusSessionStrategy;
57 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
58 info->clientUID = 1;
59 info->sessionId = 2;
60 info->rendererState = RendererState::RENDERER_RELEASED;
61 AudioRendererChangeInfos infos;
62 infos.push_back(std::move(info));
63
64 focusSessionStrategy.HandleAudioRenderStateChangeEvent(infos);
65 SLOGD("HandleAudioRenderStateChangeEvent001 end!");
66 }
67
68 /**
69 * @tc.name: HandleAudioRenderStateChangeEvent002
70 * @tc.desc: Test IsCommandSendEnable
71 * @tc.type: FUNC
72 */
HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent002, testing::ext::TestSize.Level1)73 static HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent002, testing::ext::TestSize.Level1)
74 {
75 SLOGD("HandleAudioRenderStateChangeEvent002 begin!");
76 FocusSessionStrategy focusSessionStrategy;
77 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
78 info->clientUID = 1;
79 info->sessionId = 2;
80 info->rendererState = RendererState::RENDERER_RELEASED;
81 AudioRendererChangeInfos infos;
82 infos.push_back(std::move(info));
83
84 auto func = [](const FocusSessionStrategy::FocusSessionChangeInfo&) {};
85 focusSessionStrategy.RegisterFocusSessionChangeCallback(func);
86 focusSessionStrategy.HandleAudioRenderStateChangeEvent(infos);
87 SLOGD("HandleAudioRenderStateChangeEvent002 end!");
88 }
89
90 /**
91 * @tc.name: HandleAudioRenderStateChangeEvent003
92 * @tc.desc: Test IsCommandSendEnable
93 * @tc.type: FUNC
94 */
HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent003, testing::ext::TestSize.Level1)95 static HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent003, testing::ext::TestSize.Level1)
96 {
97 SLOGD("HandleAudioRenderStateChangeEvent003 begin!");
98 FocusSessionStrategy focusSessionStrategy;
99 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
100 info->clientUID = 1;
101 info->sessionId = 2;
102 info->rendererState = RendererState::RENDERER_RUNNING;
103 AudioRendererChangeInfos infos;
104 infos.push_back(std::move(info));
105
106 focusSessionStrategy.HandleAudioRenderStateChangeEvent(infos);
107 SLOGD("HandleAudioRenderStateChangeEvent003 end!");
108 }
109
110 /**
111 * @tc.name: HandleAudioRenderStateChangeEvent004
112 * @tc.desc: Test IsCommandSendEnable
113 * @tc.type: FUNC
114 */
HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent004, testing::ext::TestSize.Level1)115 static HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent004, testing::ext::TestSize.Level1)
116 {
117 SLOGD("HandleAudioRenderStateChangeEvent004 begin!");
118 FocusSessionStrategy focusSessionStrategy;
119 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
120 info->clientUID = 1;
121 info->sessionId = 2;
122 info->rendererState = RendererState::RENDERER_RUNNING;
123 AudioRendererChangeInfos infos;
124 infos.push_back(std::move(info));
125
126 auto func = [](const FocusSessionStrategy::FocusSessionChangeInfo&) {};
127 focusSessionStrategy.RegisterFocusSessionChangeCallback(func);
128 focusSessionStrategy.HandleAudioRenderStateChangeEvent(infos);
129 SLOGD("HandleAudioRenderStateChangeEvent004 end!");
130 }
131
132 /**
133 * @tc.name: HandleAudioRenderStateChangeEvent005
134 * @tc.desc: Test IsCommandSendEnable
135 * @tc.type: FUNC
136 */
HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent005, testing::ext::TestSize.Level1)137 static HWTEST_F(FocusSessionStrategyTest, HandleAudioRenderStateChangeEvent005, testing::ext::TestSize.Level1)
138 {
139 SLOGD("HandleAudioRenderStateChangeEvent005 begin!");
140 FocusSessionStrategy focusSessionStrategy;
141 std::shared_ptr<AudioRendererChangeInfo> info1 = std::make_shared<AudioRendererChangeInfo>();
142 info1->clientUID = 1;
143 info1->sessionId = 2;
144 info1->rendererState = RendererState::RENDERER_RELEASED;
145
146 std::shared_ptr<AudioRendererChangeInfo> info2 = std::make_shared<AudioRendererChangeInfo>();
147 info2->clientUID = 3;
148 info2->sessionId = 4;
149 info2->rendererState = RendererState::RENDERER_RUNNING;
150
151 AudioRendererChangeInfos infos;
152 infos.push_back(std::move(info1));
153 infos.push_back(std::move(info2));
154
155 auto func = [](const FocusSessionStrategy::FocusSessionChangeInfo&) {};
156 focusSessionStrategy.RegisterFocusSessionChangeCallback(func);
157 focusSessionStrategy.HandleAudioRenderStateChangeEvent(infos);
158 SLOGD("HandleAudioRenderStateChangeEvent005 end!");
159 }
160
161 /**
162 * @tc.name: IsFocusSession001
163 * @tc.desc: Test IsFocusSession
164 * @tc.type: FUNC
165 */
HWTEST_F(FocusSessionStrategyTest, IsFocusSession001, testing::ext::TestSize.Level1)166 static HWTEST_F(FocusSessionStrategyTest, IsFocusSession001, testing::ext::TestSize.Level1)
167 {
168 SLOGD("IsFocusSession001 begin!");
169 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
170 info->clientUID = 1;
171 info->sessionId = 2;
172 info->rendererState = RendererState::RENDERER_RELEASED;
173 AudioRendererChangeInfos infos;
174 infos.push_back(std::move(info));
175 FocusSessionStrategy focusSessionStrategy;
176 auto func = [](const OHOS::AVSession::FocusSessionStrategy::FocusSessionChangeInfo&) {
177 return false;
178 };
179 focusSessionStrategy.RegisterFocusSessionSelector(func);
180 FocusSessionStrategy::FocusSessionChangeInfo sessionInfo;
181 bool ret = focusSessionStrategy.SelectFocusSession(infos, sessionInfo);
182 EXPECT_EQ(ret, false);
183 AudioRendererChangeInfo audioRendererChangeInfo;
184 audioRendererChangeInfo.clientUID = 1;
185 audioRendererChangeInfo.sessionId = 2;
186 audioRendererChangeInfo.rendererState = RendererState::RENDERER_RELEASED;
187 ret = focusSessionStrategy.IsFocusSession(audioRendererChangeInfo);
188 EXPECT_EQ(ret, false);
189 SLOGD("IsFocusSession001 end!");
190 }
191
192 /**
193 * @tc.name: IsFocusSession002
194 * @tc.desc: Test IsFocusSession
195 * @tc.type: FUNC
196 */
HWTEST_F(FocusSessionStrategyTest, IsFocusSession002, testing::ext::TestSize.Level1)197 static HWTEST_F(FocusSessionStrategyTest, IsFocusSession002, testing::ext::TestSize.Level1)
198 {
199 SLOGD("IsFocusSession002 begin!");
200
201 std::shared_ptr<AudioRendererChangeInfo> info = std::make_shared<AudioRendererChangeInfo>();
202 info->clientUID = 1;
203 info->sessionId = 2;
204 info->rendererState = RendererState::RENDERER_RELEASED;
205 AudioRendererChangeInfos infos;
206 infos.push_back(std::move(info));
207 FocusSessionStrategy focusSessionStrategy;
208 auto func = [](const OHOS::AVSession::FocusSessionStrategy::FocusSessionChangeInfo&) {
209 return true;
210 };
211 focusSessionStrategy.RegisterFocusSessionSelector(func);
212 FocusSessionStrategy::FocusSessionChangeInfo sessionInfo;
213 bool ret = focusSessionStrategy.SelectFocusSession(infos, sessionInfo);
214 EXPECT_EQ(ret, false);
215 AudioRendererChangeInfo audioRendererChangeInfo;
216 audioRendererChangeInfo.clientUID = 1;
217 audioRendererChangeInfo.sessionId = 2;
218 audioRendererChangeInfo.rendererState = RendererState::RENDERER_RUNNING;
219 ret = focusSessionStrategy.IsFocusSession(audioRendererChangeInfo);
220 EXPECT_EQ(ret, true);
221 SLOGD("IsFocusSession002 end!");
222 }