• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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