• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "hdi_service_common.h"
18 
19 using namespace std;
20 using namespace testing::ext;
21 using namespace OHOS::Audio;
22 
23 namespace {
24 class AudioIdlHdiRenderSceneTest : public testing::Test {
25 public:
26     static void SetUpTestCase(void);
27     static void TearDownTestCase(void);
28     void SetUp();
29     void TearDown();
30     struct IAudioRender *render = nullptr;
31     static TestAudioManager *manager;
32     struct IAudioAdapter *adapter = nullptr;
33     uint32_t renderId_ = 0;
34 };
35 
36 TestAudioManager *AudioIdlHdiRenderSceneTest::manager = nullptr;
37 
SetUpTestCase(void)38 void AudioIdlHdiRenderSceneTest::SetUpTestCase(void)
39 {
40     manager = IAudioManagerGet(IS_STUB);
41     ASSERT_NE(nullptr, manager);
42 }
43 
TearDownTestCase(void)44 void AudioIdlHdiRenderSceneTest::TearDownTestCase(void)
45 {
46     if (manager != nullptr) {
47         (void)IAudioManagerRelease(manager, IS_STUB);
48     }
49 }
50 
SetUp(void)51 void AudioIdlHdiRenderSceneTest::SetUp(void)
52 {
53     ASSERT_NE(nullptr, manager);
54     int32_t ret = AudioCreateRender(manager, PIN_OUT_SPEAKER, ADAPTER_NAME, &adapter, &render, &renderId_);
55     ASSERT_EQ(HDF_SUCCESS, ret);
56 }
57 
TearDown(void)58 void AudioIdlHdiRenderSceneTest::TearDown(void)
59 {
60     int32_t ret = ReleaseRenderSource(manager, adapter, render, renderId_);
61     ASSERT_EQ(HDF_SUCCESS, ret);
62 }
63 
64 /**
65 * @tc.name  AudioRenderCheckSceneCapability_001
66 * @tc.desc    Test AudioRenderCheckSceneCapability interface,return 0 if check scene's capability successful.
67 * @tc.type: FUNC
68 */
69 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderCheckSceneCapability_001, TestSize.Level0)
70 {
71     int32_t ret = -1;
72     bool supported = false;
73     struct AudioSceneDescriptor scenes = {};
74     scenes.scene.id = 0;
75     scenes.desc.pins = PIN_OUT_SPEAKER;
76     scenes.desc.desc = strdup("mic");
77 
78     ASSERT_NE(nullptr, render);
79     ret = render->CheckSceneCapability(render, &scenes, &supported);
80     EXPECT_EQ(HDF_SUCCESS, ret);
81     EXPECT_TRUE(supported);
82     free(scenes.desc.desc);
83 }
84 /**
85 * @tc.name  AudioRenderCheckSceneCapability_002
86 * @tc.desc    Test RenderCheckSceneCapability interface,return -1 if the scene is not configed in the josn.
87 * @tc.type: FUNC
88 */
89 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderCheckSceneCapability_002, TestSize.Level0)
90 {
91     int32_t ret = -1;
92     bool supported = true;
93     struct AudioSceneDescriptor scenes = {};
94     scenes.scene.id = 5;
95     scenes.desc.pins = PIN_OUT_SPEAKER;
96     scenes.desc.desc = strdup("mic");
97 
98     ASSERT_NE(nullptr, render);
99     ret = render->CheckSceneCapability(render, &scenes, &supported);
100     ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_SUCCESS);
101     free(scenes.desc.desc);
102 }
103 /**
104 * @tc.name  AudioRenderCheckSceneCapabilityNull_003
105 * @tc.desc    Test AudioRenderCheckSceneCapability,return -3/-4 if the render is nullptr.
106 * @tc.type: FUNC
107 */
108 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderCheckSceneCapabilityNull_003, TestSize.Level1)
109 {
110     int32_t ret = -1;
111     bool supported = true;
112     struct AudioSceneDescriptor scenes = {};
113     struct IAudioRender *renderNull = nullptr;
114     scenes.scene.id = 0;
115     scenes.desc.pins = PIN_OUT_SPEAKER;
116     scenes.desc.desc = strdup("mic");
117 
118     ASSERT_NE(nullptr, render);
119     ret = render->CheckSceneCapability(renderNull, &scenes, &supported);
120     ASSERT_TRUE(ret == HDF_ERR_INVALID_PARAM || ret == HDF_ERR_INVALID_OBJECT);
121     free(scenes.desc.desc);
122 }
123 /**
124 * @tc.name  AudioRenderCheckSceneCapabilityNull_004
125 * @tc.desc    Test AudioRenderCheckSceneCapability interface,return -3 if the scene is nullptr.
126 * @tc.type: FUNC
127 */
128 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderCheckSceneCapabilityNull_004, TestSize.Level1)
129 {
130     int32_t ret = -1;
131     bool supported = true;
132     struct AudioSceneDescriptor *scenes = nullptr;
133     ASSERT_NE(nullptr, render);
134 
135     ret = render->CheckSceneCapability(render, scenes, &supported);
136     EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
137 }
138 #ifdef AUDIO_ADM_PASSTHROUGH
139 /**
140 * @tc.name  AudioRenderCheckSceneCapabilityNull_005
141 * @tc.desc    Test AudioRenderCheckSceneCapability interface,return -3 if the supported is nullptr.
142 * @tc.type: FUNC
143 */
144 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderCheckSceneCapabilityNull_005, TestSize.Level1)
145 {
146     int32_t ret = -1;
147     struct AudioSceneDescriptor scenes = {};
148     scenes.scene.id = 0;
149     scenes.desc.pins = PIN_OUT_SPEAKER;
150     scenes.desc.desc = strdup("mic");
151 
152     ASSERT_NE(nullptr, render);
153     ret = render->CheckSceneCapability(render, &scenes, nullptr);
154     EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
155     free(scenes.desc.desc);
156 }
157 #endif
158 /**
159 * @tc.name  AudioRenderSelectScene_001
160 * @tc.desc    Test RenderSelectScene interface,return 0 if select Render's scene successful.
161 * @tc.type: FUNC
162 */
163 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderSelectScene_001, TestSize.Level0)
164 {
165     int32_t ret = -1;
166     struct AudioSceneDescriptor scenes = {};
167     scenes.scene.id = 0;
168     scenes.desc.pins = PIN_OUT_SPEAKER;
169     scenes.desc.desc = strdup("mic");
170 
171     ASSERT_NE(nullptr, render);
172     ret = render->SelectScene(render, &scenes);
173     EXPECT_EQ(HDF_SUCCESS, ret);
174 
175     ret = AudioRenderStartAndOneFrame(render);
176     EXPECT_EQ(HDF_SUCCESS, ret);
177     ret = render->Stop(render);
178     EXPECT_EQ(HDF_SUCCESS, ret);
179     free(scenes.desc.desc);
180 }
181 /**
182 * @tc.name  AudioRenderSelectScene_002
183 * @tc.desc    Test RenderSelectScene, return 0 if select Render's scene successful after Render start.
184 * @tc.type: FUNC
185 */
186 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderSelectScene_002, TestSize.Level0)
187 {
188     int32_t ret = -1;
189     struct AudioSceneDescriptor scenes = {};
190     scenes.scene.id = 0;
191     scenes.desc.pins = PIN_OUT_SPEAKER;
192     scenes.desc.desc = strdup("mic");
193 
194     ASSERT_NE(nullptr, render);
195     ret = AudioRenderStartAndOneFrame(render);
196     EXPECT_EQ(HDF_SUCCESS, ret);
197 
198     ret = render->SelectScene(render, &scenes);
199     EXPECT_EQ(HDF_SUCCESS, ret);
200     ret = render->Stop(render);
201     EXPECT_EQ(HDF_SUCCESS, ret);
202     free(scenes.desc.desc);
203 }
204 /**
205 * @tc.name  AudioRenderSelectSceneNull_003
206 * @tc.desc    Test RenderSelectScene, return -3/-4 if the parameter handle is nullptr.
207 * @tc.type: FUNC
208 */
209 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderSelectSceneNull_003, TestSize.Level1)
210 {
211     int32_t ret = -1;
212     ASSERT_NE(nullptr, render);
213     struct AudioSceneDescriptor scenes = {};
214     scenes.scene.id = 0;
215     scenes.desc.pins = PIN_IN_MIC;
216     struct IAudioRender *renderNull = nullptr;
217     scenes.desc.desc = strdup("mic");
218 
219     ret = render->SelectScene(renderNull, &scenes);
220     ASSERT_TRUE(ret == HDF_ERR_INVALID_PARAM || ret == HDF_ERR_INVALID_OBJECT);
221     free(scenes.desc.desc);
222 }
223 /**
224 * @tc.name  AudioRenderSelectSceneNull_004
225 * @tc.desc    Test RenderSelectScene, return -3 if the parameter scene is nullptr.
226 * @tc.type: FUNC
227 */
228 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioRenderSelectSceneNull_004, TestSize.Level1)
229 {
230     int32_t ret = -1;
231     struct AudioSceneDescriptor *scenes = nullptr;
232     ASSERT_NE(nullptr, render);
233 
234     ret = render->SelectScene(render, scenes);
235     EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
236 }
237 /**
238 * @tc.name  AudioAudioRenderSelectScene_005
239 * @tc.desc    Test AudioRenderSelectScene, return -1 if the scene is not configed in the josn.
240 * @tc.type: FUNC
241 */
242 HWTEST_F(AudioIdlHdiRenderSceneTest, AudioAudioRenderSelectScene_005, TestSize.Level1)
243 {
244     int32_t ret = -1;
245     struct AudioSceneDescriptor scenes = {};
246     scenes.scene.id = 99;
247     scenes.desc.pins = PIN_OUT_HDMI;
248     scenes.desc.desc = strdup("mic");
249 
250     ASSERT_NE(nullptr, render);
251     ret = render->SelectScene(render, &scenes);
252     ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT);
253     free(scenes.desc.desc);
254 }
255 }
256