• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 /**
17  * @addtogroup Audio
18  * @{
19  *
20  * @brief Test audio-related APIs, including custom data types and functions for loading drivers,
21  * accessing a driver adapter.
22  *
23  * @since 1.0
24  * @version 1.0
25  */
26 
27 /**
28  * @file audio_hdi_common.h
29  *
30  * @brief Declares APIs for operations related to the audio adapter.
31  *
32  * @since 1.0
33  * @version 1.0
34  */
35 
36 #include "audio_hdi_common.h"
37 #include "audio_hdiadapter_test.h"
38 
39 using namespace std;
40 using namespace testing::ext;
41 using namespace OHOS::Audio;
42 
43 namespace {
44 class AudioHdiAdapterTest : public testing::Test {
45 public:
46     static void SetUpTestCase(void);
47     static void TearDownTestCase(void);
48     void SetUp();
49     void TearDown();
50 };
SetUpTestCase(void)51 void AudioHdiAdapterTest::SetUpTestCase(void) {}
52 
TearDownTestCase(void)53 void AudioHdiAdapterTest::TearDownTestCase(void) {}
54 
SetUp(void)55 void AudioHdiAdapterTest::SetUp(void) {}
56 
TearDown(void)57 void AudioHdiAdapterTest::TearDown(void) {}
58 
59 /**
60 * @tc.name  Test GetAllAdapters API via legal input
61 * @tc.number  SUB_Audio_HDI_GetAllAdapters_0001
62 * @tc.desc   Test the GetAllAdapters API, and check if 0 is returned when the list of adapters is obtained successfully
63 */
64 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_GetAllAdapters_0001, Function | MediumTest | Level1)
65 {
66     int32_t ret = -1;
67     int size = 0;
68     struct AudioAdapterDescriptor *descs = nullptr;
69 
70 
71     TestAudioManager *manager = GetAudioManagerFuncs();
72     ASSERT_NE(nullptr, manager);
73     ret = manager->GetAllAdapters(manager, &descs, &size);
74     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
75     EXPECT_EQ(AUDIO_ADAPTER_MAX_NUM, size);
76 }
77 
78 /**
79 * @tc.name  Test GetAllAdapters API via setting the incoming parameter manager is nullptr
80 * @tc.number  SUB_Audio_HDI_GetAllAdapters_0002
81 * @tc.desc  Test the GetAllAdapters API, and check if -1 is returned when the input parameter manager is nullptr
82 */
83 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_GetAllAdapters_0002, Function | MediumTest | Level1)
84 {
85     int32_t ret = -1;
86     int size = 0;
87     struct AudioAdapterDescriptor *descs = nullptr;
88     TestAudioManager *manager1 = nullptr;
89 
90 
91     TestAudioManager *manager = GetAudioManagerFuncs();
92     ASSERT_NE(nullptr, manager);
93     ret = manager->GetAllAdapters(manager1, &descs, &size);
94     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
95 }
96 
97 /**
98 * @tc.name  Test GetAllAdapters API via setting the incoming parameter descs is nullptr
99 * @tc.number  SUB_Audio_HDI_GetAllAdapters_0003
100 * @tc.desc  Test the GetAllAdapters API, and check if -1 is returned when the input parameter descs is nullptr
101 */
102 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_GetAllAdapters_0003, Function | MediumTest | Level1)
103 {
104     int32_t ret = -1;
105     int size = 0;
106     struct AudioAdapterDescriptor **descs = nullptr;
107 
108 
109     TestAudioManager *manager = GetAudioManagerFuncs();
110     ASSERT_NE(nullptr, manager);
111     ret = manager->GetAllAdapters(manager, descs, &size);
112     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
113 }
114 
115 /**
116 * @tc.name  Test GetAllAdapters API via setting the incoming parameter size is nullptr
117 * @tc.number  SUB_Audio_HDI_GetAllAdapters_0004
118 * @tc.desc  Test the GetAllAdapters API, and check if -1 is returned when the input parameter size is nullptr
119 */
120 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_GetAllAdapters_0004, Function | MediumTest | Level1)
121 {
122     int32_t ret = -1;
123     int *size = nullptr;
124     struct AudioAdapterDescriptor *descs = nullptr;
125 
126 
127     TestAudioManager *manager = GetAudioManagerFuncs();
128     ASSERT_NE(nullptr, manager);
129     ret = manager->GetAllAdapters(manager, &descs, size);
130     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
131 }
132 /**
133 * @tc.name  Test GetAllAdapters API in server module via setting the incoming manager is illagal
134 * @tc.number  SUB_Audio_HDI_GetAllAdapters_0005
135 * @tc.desc  test GetAllAdapters interface,Returns -3 if the incoming parameter manager is illagal
136 */
137 #ifdef AUDIO_ADM_SERVICE
138 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_GetAllAdapters_0005, Function | MediumTest | Level1)
139 {
140     int32_t ret = -1;
141     int *size = nullptr;
142     struct AudioAdapterDescriptor *descs = nullptr;
143 
144 
145     TestAudioManager *manager = GetAudioManagerFuncs();
146     ASSERT_NE(nullptr, manager);
147 
148     TestAudioManager errorManager;
149     ret = manager->GetAllAdapters(&errorManager, &descs, size);
150     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
151 }
152 #endif
153 /**
154 * @tc.name  Test LoadAdapter API via legal input
155 * @tc.number  SUB_Audio_HDI_LoadAdapter_0001
156 * @tc.desc  Test the LoadAdapter API, and check if -1 is returned when driver is loaded successfully
157 */
158 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0001, Function | MediumTest | Level1)
159 {
160     int32_t ret = -1;
161     int size = 0;
162     struct AudioAdapterDescriptor *descs = nullptr;
163 
164 
165     TestAudioManager* manager = GetAudioManagerFuncs();
166     ret = GetAdapters(manager, &descs, size);
167     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
168     struct AudioAdapterDescriptor *desc = &descs[0];
169     ASSERT_TRUE(desc != nullptr);
170     struct AudioAdapter *adapter = nullptr;
171     ret = manager->LoadAdapter(manager, desc, &adapter);
172     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
173     ret = -1;
174     if (adapter != nullptr) {
175         if (adapter->InitAllPorts != nullptr && adapter->CreateRender != nullptr &&
176             adapter->DestroyRender != nullptr && adapter->CreateCapture != nullptr &&
177             adapter->DestroyCapture != nullptr && adapter->GetPortCapability != nullptr &&
178             adapter->SetPassthroughMode != nullptr && adapter->GetPassthroughMode != nullptr) {
179             ret = 0;
180         }
181     }
182     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
183     manager->UnloadAdapter(manager, adapter);
184 }
185 
186 /**
187 * @tc.name  Test LoadAdapter API via changing the adapterName of incoming parameter desc
188 * @tc.number  SUB_Audio_HDI_LoadAdapter_0002
189 * @tc.desc Test the LoadAdapter API, and check if -1 is returned when adapterName of the input parameter desc is not supported
190 */
191 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0002, Function | MediumTest | Level1)
192 {
193     int32_t ret = -1;
194     int size = 0;
195     struct AudioAdapterDescriptor *descs = nullptr;
196 
197 
198     TestAudioManager* manager = GetAudioManagerFuncs();
199     ret = GetAdapters(manager, &descs, size);
200     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
201     struct AudioAdapterDescriptor *desc = &descs[0];
202     desc->adapterName = "illegal";
203     ASSERT_TRUE(desc != nullptr);
204     struct AudioAdapter *adapter = nullptr;
205 
206     ret = manager->LoadAdapter(manager, desc, &adapter);
207     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
208     desc->adapterName = "primary";
209     ret = manager->LoadAdapter(manager, desc, &adapter);
210     manager->UnloadAdapter(manager, adapter);
211 }
212 
213 /**
214 * @tc.name  Test LoadAdapter API via setting the adapterName of incoming parameter desc  is illegal
215 * @tc.number  SUB_Audio_HDI_LoadAdapter_0003
216 * @tc.desc   Test the LoadAdapter API, and check if -1 is returned when adapterName of the input parameter desc is illegal
217 */
218 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0003, Function | MediumTest | Level1)
219 {
220     int32_t ret = -1;
221     struct AudioAdapter *adapter = nullptr;
222     struct AudioAdapterDescriptor desc = {
223         .adapterName = "illegal",
224         .portNum = 2,
225         .ports = nullptr,
226     };
227 
228 
229     TestAudioManager *manager = GetAudioManagerFuncs();
230     ASSERT_NE(nullptr, manager);
231     ret = manager->LoadAdapter(manager, &desc, &adapter);
232     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
233     manager->UnloadAdapter(manager, adapter);
234 }
235 
236 /**
237 * @tc.name  Test LoadAdapter API via setting the adapterName of incoming parameter manager is nullptr
238 * @tc.number  SUB_Audio_HDI_LoadAdapter_0004
239 * @tc.desc  Test the LoadAdapter API, and check if -1 is returned when the input parameter manager is nullptr
240 */
241 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0004, Function | MediumTest | Level1)
242 {
243     int32_t ret = -1;
244     int size = 0;
245     struct AudioAdapterDescriptor *descs = nullptr;
246     TestAudioManager *managerNull = nullptr;
247 
248 
249     TestAudioManager* manager = GetAudioManagerFuncs();
250     ret = GetAdapters(manager, &descs, size);
251     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
252     struct AudioAdapterDescriptor *desc = &descs[0];
253     ASSERT_TRUE(desc != nullptr);
254     struct AudioAdapter *adapter = nullptr;
255 
256     ret = manager->LoadAdapter(managerNull, desc, &adapter);
257     ASSERT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
258     manager->UnloadAdapter(manager, adapter);
259 }
260 
261 /**
262 * @tc.name  Test LoadAdapter API via setting the adapterName of incoming parameter desc is nullptr
263 * @tc.number  SUB_Audio_HDI_LoadAdapter_0005
264 * @tc.desc   Test the LoadAdapter API, and check if -1 is returned when the input parameter desc is nullptr
265 */
266 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0005, Function | MediumTest | Level1)
267 {
268     int32_t ret = -1;
269     struct AudioAdapterDescriptor *desc = nullptr;
270     struct AudioAdapter *adapter = nullptr;
271 
272 
273     TestAudioManager *manager = GetAudioManagerFuncs();
274     ASSERT_NE(nullptr, manager);
275     ret = manager->LoadAdapter(manager, desc, &adapter);
276     ASSERT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
277     manager->UnloadAdapter(manager, adapter);
278 }
279 
280 /**
281 * @tc.name  Test LoadAdapter API via setting the adapterName of incoming parameter adapter is nullptr
282 * @tc.number  SUB_Audio_HDI_LoadAdapter_0006
283 * @tc.desc  Test the LoadAdapter API, and check if -1 is returned when the input parameter adapter is nullptr            i
284 */
285 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0006, Function | MediumTest | Level1)
286 {
287     int32_t ret = -1;
288     int size = 0;
289     struct AudioAdapterDescriptor *descs = nullptr;
290     struct AudioAdapter **adapter = nullptr;
291 
292 
293     TestAudioManager* manager = GetAudioManagerFuncs();
294     ret = GetAdapters(manager, &descs, size);
295     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
296     struct AudioAdapterDescriptor *desc = &descs[0];
297     ASSERT_TRUE(desc != nullptr);
298 
299     ret = manager->LoadAdapter(manager, desc, adapter);
300     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
301 }
302 /**
303 * @tc.name  Test LoadAdapter API in server model via setting the adapterName of incoming parameter manager is illagal
304 * @tc.number  SUB_Audio_HDI_LoadAdapter_0007
305 * @tc.desc  test LoadAdapter interface,Returns -3 if setting the adapterName of incoming parameter manager is illagal
306 */
307 #ifdef AUDIO_ADM_SERVICE
308 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_LoadAdapter_0007, Function | MediumTest | Level1)
309 {
310     int32_t ret = -1;
311     int size = 0;
312     struct AudioAdapterDescriptor *descs = nullptr;
313 
314 
315     TestAudioManager* manager = GetAudioManagerFuncs();
316     ret = GetAdapters(manager, &descs, size);
317     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
318 
319     struct AudioAdapterDescriptor *desc = &descs[0];
320     ASSERT_TRUE(desc != nullptr);
321     struct AudioAdapter *adapter = nullptr;
322     TestAudioManager errorManager;
323     ret = manager->LoadAdapter(&errorManager, desc, &adapter);
324     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
325     manager->UnloadAdapter(manager, adapter);
326 }
327 #endif
328 /**
329 * @tc.name  Test AudioAdapterInitAllPorts API via legal input.
330 * @tc.number  SUB_Audio_HDI_AdapterInitAllPorts_0001
331 * @tc.desc  Test the AudioAdapterInitAllPorts API, and check if 0 is returned when then ports are initialized successfully.
332 */
333 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterInitAllPorts_0001, Function | MediumTest | Level1)
334 {
335     int32_t ret = -1;
336     struct AudioAdapter *adapter = nullptr;
337     struct AudioPort* renderPort = nullptr;
338 
339     TestAudioManager* manager = GetAudioManagerFuncs();
340 
341     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, renderPort);
342     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
343     ASSERT_NE(nullptr, adapter);
344     ret = adapter->InitAllPorts(adapter);
345     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
346     manager->UnloadAdapter(manager, adapter);
347 }
348 
349 /**
350 * @tc.name  Test AudioAdapterInitAllPorts API when the parameter adapter is empty.
351 * @tc.number  SUB_Audio_HDI_AdapterInitAllPorts_0003
352 * @tc.desc  Test the AudioAdapterInitAllPorts API, and check if -1 is returned when the parameter adapter is empty.
353 */
354 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterInitAllPorts_0003, Function | MediumTest | Level1)
355 {
356     int32_t ret = -1;
357     struct AudioPort* audioPort = nullptr;
358     struct AudioAdapter *adapter = nullptr;
359     struct AudioAdapter *adapterNull = nullptr;
360 
361     TestAudioManager* manager = GetAudioManagerFuncs();
362 
363     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
364     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
365     ASSERT_NE(nullptr, adapter);
366     ret = adapter->InitAllPorts(adapterNull);
367     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
368     manager->UnloadAdapter(manager, adapter);
369 }
370 
371 /**
372 * @tc.name  Test AudioAdapterGetPortCapability API when the PortType is PORT_OUT.
373 * @tc.number  SUB_Audio_HDI_AdapterGetPortCapability_0001
374 * @tc.desc  Test the AudioAdapterGetPortCapability API,and check if 0 is returned when PortType is PORT_OUT.
375 */
376 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPortCapability_0001, Function | MediumTest | Level1)
377 {
378     int32_t ret = -1;
379     struct AudioPort* audioPort = nullptr;
380     struct AudioAdapter *adapter = {};
381 
382     TestAudioManager* manager = GetAudioManagerFuncs();
383     struct AudioPortCapability capability = {};
384 
385     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
386     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
387     ASSERT_NE(nullptr, adapter);
388     ret = adapter->InitAllPorts(adapter);
389     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
390     ret = adapter->GetPortCapability(adapter, audioPort, &capability);
391     if (ret < 0 || capability.formats == nullptr || capability.subPorts == nullptr) {
392         manager->UnloadAdapter(manager, adapter);
393         ASSERT_NE(AUDIO_HAL_SUCCESS, ret);
394         ASSERT_NE(nullptr, capability.formats);
395         ASSERT_NE(nullptr, capability.subPorts);
396     }
397     if (capability.subPorts->desc == nullptr) {
398         manager->UnloadAdapter(manager, adapter);
399         ASSERT_NE(nullptr, capability.subPorts->desc);
400     }
401     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
402     manager->UnloadAdapter(manager, adapter);
403 }
404 
405 /**
406 * @tc.name  Test AudioAdapterGetPortCapability API when the PortType is PORT_IN.
407 * @tc.number  SUB_Audio_HDI_AdapterGetPortCapability_0002
408 * @tc.desc  Test the AudioAdapterGetPortCapability API,and check if 0 is returned when  PortType is PORT_IN.
409 */
410 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPortCapability_0002, Function | MediumTest | Level1)
411 {
412     int32_t ret = -1;
413     struct AudioPort* audioPort = nullptr;
414     struct AudioAdapter *adapter = {};
415 
416     TestAudioManager* manager = GetAudioManagerFuncs();
417     struct AudioPortCapability capability = {};
418 
419     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, audioPort);
420     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
421     ASSERT_NE(nullptr, adapter);
422     ret = adapter->InitAllPorts(adapter);
423     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
424     ret = adapter->GetPortCapability(adapter, audioPort, &capability);
425     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
426 
427     manager->UnloadAdapter(manager, adapter);
428 }
429 /**
430 * @tc.name  Test AudioAdapterGetPortCapability API, when the parameter adapter is empty.
431 * @tc.number  SUB_Audio_HDI_AdapterGetPortCapability_0004
432 * @tc.desc   Test the AudioAdapterGetPortCapability API,and check if -1 is returned when  the parameter adapter is empty.
433 */
434 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPortCapability_0004, Function | MediumTest | Level1)
435 {
436     int32_t ret = -1;
437     struct AudioPort* audioPort = nullptr;
438     struct AudioAdapter *adapter = nullptr;
439     struct AudioAdapter *adapterNull = nullptr;
440     struct AudioPortCapability capability = {};
441 
442     TestAudioManager* manager = GetAudioManagerFuncs();
443 
444     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
445     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
446     ASSERT_NE(nullptr, adapter);
447     ret = adapter->InitAllPorts(adapter);
448     ret = adapter->GetPortCapability(adapterNull, audioPort, &capability);
449     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
450 
451     manager->UnloadAdapter(manager, adapter);
452 }
453 
454 /**
455 * @tc.name  Test AudioAdapterGetPortCapability API when the audioPort is nullptr or not supported.
456 * @tc.number  SUB_Audio_HDI_AdapterGetPortCapability_0005
457 * @tc.desc  Test the AudioAdapterGetPortCapability API,and check if -1 is returned when the audioPort is nullptr or not supported.
458 */
459 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPortCapability_0005, Function | MediumTest | Level1)
460 {
461     int32_t ret = -1;
462     struct AudioPort *audioPortNull = nullptr;
463     struct AudioAdapter *adapter = nullptr;
464     struct AudioPortCapability capability = {};
465 
466     TestAudioManager* manager = GetAudioManagerFuncs();
467     struct AudioPort* audioPort = nullptr;
468     struct AudioPort audioPortError = { .dir = PORT_OUT, .portId = 9, .portName = "AIP" };
469 
470     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
471     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
472     ASSERT_NE(nullptr, adapter);
473     ret = adapter->InitAllPorts(adapter);
474     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
475     ret = adapter->GetPortCapability(adapter, audioPortNull, &capability);
476     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
477 
478     ret = adapter->GetPortCapability(adapter, &audioPortError, &capability);
479     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
480     manager->UnloadAdapter(manager, adapter);
481 }
482 
483 /**
484 * @tc.name  Test AudioAdapterGetPortCapability API when the capability is nullptr.
485 * @tc.number  SUB_Audio_HDI_AdapterGetPortCapability_0006
486 * @tc.desc Test the AudioAdapterGetPortCapability API,and check if -1 is returned when capability is nullptr.
487 */
488 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPortCapability_0006, Function | MediumTest | Level1)
489 {
490     int32_t ret = -1;
491     struct AudioPort* audioPort = nullptr;
492     struct AudioAdapter *adapter = nullptr;
493     struct AudioPortCapability *capabilityNull = nullptr;
494 
495     TestAudioManager* manager = GetAudioManagerFuncs();
496 
497     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
498     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
499     ASSERT_NE(nullptr, adapter);
500     ret = adapter->InitAllPorts(adapter);
501     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
502     ret = adapter->GetPortCapability(adapter, audioPort, capabilityNull);
503     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
504 
505     manager->UnloadAdapter(manager, adapter);
506 }
507 
508 /**
509 * @tc.name  Test AdapterSetPassthroughMode API when the PortType is PORT_OUT.
510 * @tc.number  SUB_Audio_HDI_AdapterSetPassthroughMode_0001
511 * @tc.desc  Test the AdapterSetPassthroughMode API, and check if 0 is returned when PortType is PORT_OUT.
512 */
513 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterSetPassthroughMode_0001, Function | MediumTest | Level1)
514 {
515     int32_t ret = -1;
516     struct AudioPort* audioPort = nullptr;
517     struct AudioAdapter *adapter = nullptr;
518 
519     TestAudioManager* manager = GetAudioManagerFuncs();
520     enum AudioPortPassthroughMode modeLpcm = PORT_PASSTHROUGH_AUTO;
521 
522     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
523     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
524     ASSERT_NE(nullptr, adapter);
525     ret = adapter->InitAllPorts(adapter);
526     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
527     ret = adapter->SetPassthroughMode(adapter, audioPort, PORT_PASSTHROUGH_LPCM);
528     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
529     ret = adapter->GetPassthroughMode(adapter, audioPort, &modeLpcm);
530     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
531     EXPECT_EQ(PORT_PASSTHROUGH_LPCM, modeLpcm);
532 
533     manager->UnloadAdapter(manager, adapter);
534 }
535 
536 /**
537 * @tc.name Test AdapterSetPassthroughMode API when the PortType is PORT_IN.
538 * @tc.number  SUB_Audio_HDI_AdapterSetPassthroughMode_0002
539 * @tc.desc Test the AdapterSetPassthroughMode API, and check if -1 is returned when PortType is PORT_IN.
540 */
541 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterSetPassthroughMode_0002, Function | MediumTest | Level1)
542 {
543     int32_t ret = -1;
544     struct AudioAdapter *adapter = nullptr;
545     struct AudioPort* audioPort = nullptr;
546 
547     TestAudioManager* manager = GetAudioManagerFuncs();
548 
549     ret = GetLoadAdapter(manager, PORT_IN, ADAPTER_NAME, &adapter, audioPort);
550     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
551     ASSERT_NE(nullptr, adapter);
552     ret = adapter->InitAllPorts(adapter);
553     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
554     ret = adapter->SetPassthroughMode(adapter, audioPort, PORT_PASSTHROUGH_LPCM);
555     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
556 
557     manager->UnloadAdapter(manager, adapter);
558 }
559 
560 /**
561 * @tc.name  Test AdapterSetPassthroughMode API when the parameter adapter is nullptr.
562 * @tc.number  SUB_Audio_HDI_AdapterSetPassthroughMode_0003
563 * @tc.desc  Test the AdapterSetPassthroughMode API, and check if -1 is returned when the parameter adapter is empty.
564 */
565 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterSetPassthroughMode_0003, Function | MediumTest | Level1)
566 {
567     int32_t ret = -1;
568     struct AudioPort* audioPort = nullptr;
569     struct AudioAdapter *adapter = nullptr;
570     struct AudioAdapter *adapterNull = nullptr;
571 
572     TestAudioManager* manager = GetAudioManagerFuncs();
573 
574     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
575     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
576     ASSERT_NE(nullptr, adapter);
577     ret = adapter->SetPassthroughMode(adapterNull, audioPort, PORT_PASSTHROUGH_LPCM);
578     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
579     manager->UnloadAdapter(manager, adapter);
580 }
581 
582 /**
583 * @tc.name  Test AdapterSetPassthroughMode API when the parameter audioPort is nullptr or not supported.
584 * @tc.number  SUB_Audio_HDI_AdapterSetPassthroughMode_0004
585 * @tc.desc  Test the AdapterSetPassthroughMode API, and check if -1 is returned when the audioPort is nullptr or not supported.
586 */
587 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterSetPassthroughMode_0004, Function | MediumTest | Level1)
588 {
589     int32_t ret = -1;
590     struct AudioPort* audioPort = nullptr;
591     struct AudioPort *audioPortNull = nullptr;
592     enum AudioPortPassthroughMode mode = PORT_PASSTHROUGH_LPCM;
593     struct AudioAdapter *adapter = nullptr;
594 
595     TestAudioManager* manager = GetAudioManagerFuncs();
596     struct AudioPort audioPortError = { .dir = PORT_OUT, .portId = 8, .portName = "AIP1" };
597     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
598     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
599     ASSERT_NE(nullptr, adapter);
600     ret = adapter->InitAllPorts(adapter);
601     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
602     ret = adapter->SetPassthroughMode(adapter, audioPortNull, mode);
603     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
604 
605     ret = adapter->SetPassthroughMode(adapter, &audioPortError, mode);
606     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
607     manager->UnloadAdapter(manager, adapter);
608 }
609 
610 /**
611 * @tc.name  Test AdapterSetPassthroughMode API when the not supported mode.
612 * @tc.number  SUB_Audio_HDI_AdapterSetPassthroughMode_0005
613 * @tc.desc  Test the AdapterSetPassthroughMode API, and check if -1 is returned when  the mode is not supported
614 */
615 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterSetPassthroughMode_0005, Function | MediumTest | Level1)
616 {
617     int32_t ret = -1;
618     struct AudioPort* audioPort = nullptr;
619     struct AudioAdapter *adapter = nullptr;
620 
621     TestAudioManager* manager = GetAudioManagerFuncs();
622 
623     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
624     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
625     ASSERT_NE(nullptr, adapter);
626     ret = adapter->InitAllPorts(adapter);
627     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
628     ret = adapter->SetPassthroughMode(adapter, audioPort, PORT_PASSTHROUGH_RAW);
629     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
630 
631     manager->UnloadAdapter(manager, adapter);
632 }
633 
634 /**
635 * @tc.name  Test AdapterGetPassthroughMode API via legal input
636 * @tc.number  SUB_Audio_HDI_AdapterGetPassthroughMode_0001
637 * @tc.desc  Test the AdapterGetPassthroughMode API, and check if 0 is returned when then mode is obtained successfully.
638 */
639 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPassthroughMode_0001, Function | MediumTest | Level1)
640 {
641     int32_t ret = -1;
642     struct AudioPort* audioPort = nullptr;
643     enum AudioPortPassthroughMode mode = PORT_PASSTHROUGH_AUTO;
644     struct AudioAdapter *adapter = nullptr;
645 
646     TestAudioManager* manager = GetAudioManagerFuncs();
647 
648     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
649     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
650     ASSERT_NE(nullptr, adapter);
651     ret = adapter->InitAllPorts(adapter);
652     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
653 
654     ret = adapter->SetPassthroughMode(adapter, audioPort, PORT_PASSTHROUGH_LPCM);
655     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
656 
657     ret = adapter->GetPassthroughMode(adapter, audioPort, &mode);
658     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
659     EXPECT_EQ(PORT_PASSTHROUGH_LPCM, mode);
660 
661     manager->UnloadAdapter(manager, adapter);
662 }
663 
664 /**
665 * @tc.name  Test AdapterGetPassthroughMode API  when the parameter adapter is nullptr.
666 * @tc.number  SUB_Audio_HDI_AdapterGetPassthroughMode_0002
667 * @tc.desc  Test the AdapterGetPassthroughMode API, and check if 0 is returned when the parameter adapter is empty.
668 */
669 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPassthroughMode_0002, Function | MediumTest | Level1)
670 {
671     int32_t ret = -1;
672     struct AudioPort* audioPort = nullptr;
673     enum AudioPortPassthroughMode mode = PORT_PASSTHROUGH_LPCM;
674     struct AudioAdapter *adapter = nullptr;
675     struct AudioAdapter *adapterNull = nullptr;
676 
677     TestAudioManager* manager = GetAudioManagerFuncs();
678 
679     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
680     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
681     ASSERT_NE(nullptr, adapter);
682     ret = adapter->InitAllPorts(adapter);
683     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
684     ret = adapter->GetPassthroughMode(adapterNull, audioPort, &mode);
685     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
686 
687     manager->UnloadAdapter(manager, adapter);
688 }
689 
690 /**
691 * @tc.name   Test AdapterGetPassthroughMode API when the parameter audioPort is nullptr or not supported.
692 * @tc.number  SUB_Audio_HDI_AdapterGetPassthroughMode_0003
693 * @tc.desc  Test the AdapterGetPassthroughMode API, and check if 0 is returned when the audioPort is nullptr or not supported.
694 */
695 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPassthroughMode_0003, Function | MediumTest | Level1)
696 {
697     int32_t ret = -1;
698     struct AudioPort* audioPort = nullptr;
699     struct AudioPort *audioPortNull = nullptr;
700     enum AudioPortPassthroughMode mode = PORT_PASSTHROUGH_LPCM;
701     struct AudioAdapter *adapter = nullptr;
702 
703     TestAudioManager* manager = GetAudioManagerFuncs();
704     struct AudioPort audioPortError = { .dir = PORT_OUT, .portId = 8, .portName = "AIP" };
705     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
706     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
707     ASSERT_NE(nullptr, adapter);
708     ret = adapter->InitAllPorts(adapter);
709     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
710     ret = adapter->GetPassthroughMode(adapter, audioPortNull, &mode);
711     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
712 
713     ret = adapter->GetPassthroughMode(adapter, &audioPortError, &mode);
714     EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
715     manager->UnloadAdapter(manager, adapter);
716 }
717 
718 /**
719 * @tc.name  Test AdapterGetPassthroughMode API  when the parameter mode is nullptr.
720 * @tc.number  SUB_Audio_HDI_AdapterGetPassthroughMode_0004
721 * @tc.desc  Test the AdapterGetPassthroughMode API, and check if 0 is returned when the parameter mode is empty.
722 */
723 HWTEST_F(AudioHdiAdapterTest, SUB_Audio_HDI_AdapterGetPassthroughMode_0004, Function | MediumTest | Level1)
724 {
725     int32_t ret = -1;
726     struct AudioPort* audioPort = nullptr;
727     enum AudioPortPassthroughMode *modeNull = nullptr;
728     struct AudioAdapter *adapter = nullptr;
729 
730     TestAudioManager* manager = GetAudioManagerFuncs();
731 
732     ret = GetLoadAdapter(manager, PORT_OUT, ADAPTER_NAME, &adapter, audioPort);
733     ASSERT_EQ(AUDIO_HAL_SUCCESS, ret);
734     ASSERT_NE(nullptr, adapter);
735     ret = adapter->InitAllPorts(adapter);
736     EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
737     ret = adapter->GetPassthroughMode(adapter, audioPort, modeNull);
738     EXPECT_EQ(AUDIO_HAL_ERR_INVALID_PARAM, ret);
739 
740     manager->UnloadAdapter(manager, adapter);
741 }
742 }
743