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