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 <gtest/gtest.h>
17 #include "audio_spatial_channel_converter.h"
18
19 using namespace testing::ext;
20
21 namespace OHOS {
22 namespace AudioStandard {
23
24 static constexpr int32_t AVS3METADATA_SIZE = 19824;
25
26 class AudioApatialChannelCoverterUnitTest : public testing::Test {
27 public:
28 static void SetUpTestCase(void);
29 static void TearDownTestCase(void);
30 void SetUp();
31 void TearDown();
32 };
33
SetUpTestCase(void)34 void AudioApatialChannelCoverterUnitTest::SetUpTestCase(void)
35 {
36 // input testsuit setup step,setup invoked before all testcases
37 }
38
TearDownTestCase(void)39 void AudioApatialChannelCoverterUnitTest::TearDownTestCase(void)
40 {
41 // input testsuit teardown step,teardown invoked after all testcases
42 }
43
SetUp(void)44 void AudioApatialChannelCoverterUnitTest::SetUp(void)
45 {
46 // input testcase setup step,setup invoked before each testcases
47 }
48
TearDown(void)49 void AudioApatialChannelCoverterUnitTest::TearDown(void)
50 {
51 // input testcase teardown step,teardown invoked after each testcases
52 }
53
54 /**
55 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
56 * @tc.type : FUNC
57 * @tc.number: AudioApatialChannelCoverterUnitTest_001
58 * @tc.desc : Test GetPcmLength interface.
59 */
60 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_001, TestSize.Level1)
61 {
62 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
63 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
64
65 int32_t channels = 1;
66 int8_t bps = 1;
67 audioSpatialChannelConverter->encoding_ = ENCODING_PCM;
68 auto result = audioSpatialChannelConverter->GetPcmLength(channels, bps);
69 EXPECT_EQ(result, 0);
70 }
71
72 /**
73 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
74 * @tc.type : FUNC
75 * @tc.number: AudioApatialChannelCoverterUnitTest_002
76 * @tc.desc : Test GetPcmLength interface.
77 */
78 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_002, TestSize.Level1)
79 {
80 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
81 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
82
83 int32_t channels = 1;
84 int8_t bps = 1;
85 audioSpatialChannelConverter->encoding_ = ENCODING_AUDIOVIVID;
86 auto result = audioSpatialChannelConverter->GetPcmLength(channels, bps);
87 EXPECT_EQ(result, 1024);
88 }
89
90 /**
91 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
92 * @tc.type : FUNC
93 * @tc.number: AudioApatialChannelCoverterUnitTest_003
94 * @tc.desc : Test GetMetaSize interface.
95 */
96 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_003, TestSize.Level1)
97 {
98 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
99 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
100
101 audioSpatialChannelConverter->encoding_ = ENCODING_PCM;
102 auto result = audioSpatialChannelConverter->GetMetaSize();
103 EXPECT_EQ(result, 0);
104 }
105
106 /**
107 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
108 * @tc.type : FUNC
109 * @tc.number: AudioApatialChannelCoverterUnitTest_004
110 * @tc.desc : Test GetMetaSize interface.
111 */
112 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_004, TestSize.Level1)
113 {
114 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
115 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
116
117 audioSpatialChannelConverter->encoding_ = ENCODING_AUDIOVIVID;
118 auto result = audioSpatialChannelConverter->GetMetaSize();
119 EXPECT_EQ(result, AVS3METADATA_SIZE);
120 }
121
122 /**
123 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
124 * @tc.type : FUNC
125 * @tc.number: AudioApatialChannelCoverterUnitTest_005
126 * @tc.desc : Test Init interface.
127 */
128 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_005, TestSize.Level1)
129 {
130 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
131 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
132
133 AudioStreamParams info;
134 ConverterConfig cfg;
135
136 info.format = SAMPLE_U8;
137 info.channels = 1;
138 info.encoding = 1;
139 info.samplingRate = 1;
140 cfg.outChannelLayout = 1;
141
142 auto result = audioSpatialChannelConverter->Init(info, cfg);
143 EXPECT_EQ(result, true);
144 EXPECT_EQ(audioSpatialChannelConverter->outChannelLayout_, CH_LAYOUT_UNKNOWN);
145 }
146
147 /**
148 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
149 * @tc.type : FUNC
150 * @tc.number: AudioApatialChannelCoverterUnitTest_006
151 * @tc.desc : Test CheckInputValid interface.
152 */
153 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_006, TestSize.Level1)
154 {
155 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
156 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
157
158 BufferDesc bufDesc;
159 bufDesc.buffer = nullptr;
160 bufDesc.metaBuffer = nullptr;
161 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
162 EXPECT_EQ(result, false);
163 }
164
165 /**
166 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
167 * @tc.type : FUNC
168 * @tc.number: AudioApatialChannelCoverterUnitTest_007
169 * @tc.desc : Test CheckInputValid interface.
170 */
171 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_007, TestSize.Level1)
172 {
173 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
174 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
175
176 uint8_t meta = 1;
177 BufferDesc bufDesc;
178 bufDesc.buffer = nullptr;
179 bufDesc.metaBuffer = &meta;
180 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
181 EXPECT_EQ(result, false);
182 }
183
184 /**
185 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
186 * @tc.type : FUNC
187 * @tc.number: AudioApatialChannelCoverterUnitTest_008
188 * @tc.desc : Test CheckInputValid interface.
189 */
190 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_008, TestSize.Level1)
191 {
192 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
193 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
194
195 uint8_t meta = 1;
196 BufferDesc bufDesc;
197 bufDesc.buffer = &meta;
198 bufDesc.metaBuffer = nullptr;
199 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
200 EXPECT_EQ(result, false);
201 }
202
203 /**
204 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
205 * @tc.type : FUNC
206 * @tc.number: AudioApatialChannelCoverterUnitTest_009
207 * @tc.desc : Test CheckInputValid interface.
208 */
209 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_009, TestSize.Level1)
210 {
211 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
212 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
213
214 uint8_t buffer1 = 1;
215 uint8_t buffer2 = 1;
216 BufferDesc bufDesc;
217 bufDesc.buffer = &buffer1;
218 bufDesc.metaBuffer = &buffer2;
219 bufDesc.bufLength = 1;
220 audioSpatialChannelConverter->encoding_ = ENCODING_PCM;
221 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
222 EXPECT_EQ(result, false);
223 }
224
225 /**
226 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
227 * @tc.type : FUNC
228 * @tc.number: AudioApatialChannelCoverterUnitTest_010
229 * @tc.desc : Test CheckInputValid interface.
230 */
231 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_010, TestSize.Level1)
232 {
233 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
234 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
235
236 uint8_t buffer1 = 1;
237 uint8_t buffer2 = 1;
238 BufferDesc bufDesc;
239 bufDesc.buffer = &buffer1;
240 bufDesc.metaBuffer = &buffer2;
241 bufDesc.bufLength = 0;
242 bufDesc.metaLength = 1;
243 audioSpatialChannelConverter->encoding_ = ENCODING_PCM;
244 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
245 EXPECT_EQ(result, false);
246 }
247
248 /**
249 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
250 * @tc.type : FUNC
251 * @tc.number: AudioApatialChannelCoverterUnitTest_011
252 * @tc.desc : Test CheckInputValid interface.
253 */
254 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_011, TestSize.Level1)
255 {
256 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
257 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
258
259 uint8_t buffer1 = 1;
260 uint8_t buffer2 = 1;
261 BufferDesc bufDesc;
262 bufDesc.buffer = &buffer1;
263 bufDesc.metaBuffer = &buffer2;
264 bufDesc.bufLength = 0;
265 bufDesc.metaLength = 0;
266 audioSpatialChannelConverter->encoding_ = ENCODING_PCM;
267 auto result = audioSpatialChannelConverter->CheckInputValid(bufDesc);
268 EXPECT_EQ(result, true);
269 }
270
271 /**
272 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
273 * @tc.type : FUNC
274 * @tc.number: AudioApatialChannelCoverterUnitTest_012
275 * @tc.desc : Test CheckInputValid interface.
276 */
277 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_012, TestSize.Level1)
278 {
279 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
280 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
281
282 BufferDesc bufDesc;
283 audioSpatialChannelConverter->loadSuccess_ = true;
284 audioSpatialChannelConverter->CheckInputValid(bufDesc);
285 }
286
287 /**
288 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
289 * @tc.type : FUNC
290 * @tc.number: AudioApatialChannelCoverterUnitTest_013
291 * @tc.desc : Test CheckInputValid interface.
292 */
293 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_013, TestSize.Level1)
294 {
295 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
296 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
297
298 BufferDesc bufDesc;
299 audioSpatialChannelConverter->loadSuccess_ = false;
300 audioSpatialChannelConverter->CheckInputValid(bufDesc);
301 }
302
303 /**
304 * @tc.name : Test AudioApatialChannelCoverterUnitTest API
305 * @tc.type : FUNC
306 * @tc.number: AudioApatialChannelCoverterUnitTest_014
307 * @tc.desc : Test AddAlgoHandle interface.
308 */
309 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_014, TestSize.Level1)
310 {
311 auto libLoader = std::make_shared<LibLoader>();
312 ASSERT_TRUE(libLoader != nullptr);
313
314 Library library;
315 auto reslut = libLoader->AddAlgoHandle(library);
316 EXPECT_EQ(reslut, false);
317 }
318 /**
319 * @tc.name : Test process API
320 * @tc.type : FUNC
321 * @tc.number: process_013
322 * @tc.desc : Test process interface.
323 */
324 HWTEST(AudioApatialChannelCoverterUnitTest, AudioApatialChannelCoverter_015, TestSize.Level1)
325 {
326 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
327 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
328
329 BufferDesc bufDesc;
330 audioSpatialChannelConverter->loadSuccess_ = false;
331 audioSpatialChannelConverter->Process(bufDesc);
332
333 uint8_t buffer1 = 1;
334 bufDesc.buffer = &buffer1;
335 audioSpatialChannelConverter->Process(bufDesc);
336 }
337
338 /**
339 * @tc.name : Test GetInputBufferSize API
340 * @tc.type : FUNC
341 * @tc.number: GetInputBufferSize_001
342 * @tc.desc : Test GetInputBufferSize interface.
343 */
344 HWTEST(AudioApatialChannelCoverterUnitTest, GetInputBufferSize_001, TestSize.Level1)
345 {
346 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
347 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
348 size_t bufferSize = 0;
349 bool result = audioSpatialChannelConverter->GetInputBufferSize(bufferSize);
350 EXPECT_FALSE(result);
351 }
352
353 /**
354 * @tc.name : Test GetOutputBufferStream API
355 * @tc.type : FUNC
356 * @tc.number: GetOutputBufferStream_001
357 * @tc.desc : Test GetOutputBufferStream interface.
358 */
359 HWTEST(AudioApatialChannelCoverterUnitTest, GetOutputBufferStream_001, TestSize.Level1)
360 {
361 auto audioSpatialChannelConverter = std::make_shared<AudioSpatialChannelConverter>();
362 ASSERT_TRUE(audioSpatialChannelConverter != nullptr);
363 uint8_t *buffer = nullptr;
364 uint32_t bufferLen = 0;
365
366 audioSpatialChannelConverter->GetOutputBufferStream(buffer, bufferLen);
367
368 EXPECT_EQ(buffer, nullptr);
369 }
370 } // namespace AudioStandard
371 } // namespace OHOS