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#include <cmath> 17#include <cstdio> 18#include <unistd.h> 19#include <gtest/gtest.h> 20#include <securec.h> 21#include "hdf_base.h" 22#include "osal_time.h" 23#include "bluetooth_audio_session_service.h" 24#include "bluetooth_hci_callback_impl.h" 25 26using namespace OHOS::HDI::Bluetooth::A2dp::V1_0; 27using IHciInterfaceSession = OHOS::HDI::Bluetooth::A2dp::V1_0::IBluetoothAudioSession; 28using IHciInterfaceType = OHOS::HDI::Bluetooth::A2dp::V1_0::BluetoothAudioStatus; 29using OHOS::HDI::Bluetooth::A2dp::V1_0::IBluetoothAudioCallback; 30using namespace testing::ext; 31 32extern "C" IBluetoothAudioSession *BluetoothAudioSessionImplGetInstance(void) 33{ 34 return new (std::nothrow) BluetoothAudioSessionService(); 35} 36 37namespace { 38 OHOS::sptr<IHciInterfaceSession> g_iBtHci = nullptr; 39 // OHOS::sptr<IBluetoothAudioCallback> g_hciCallbacks = nullptr; 40 sptr<SeClientCallback> g_hciCallbacks = nullptr; 41 42} 43 44class HdfBluetoothHdiTest : public testing::Test { 45public: 46 static void SetUpTestCase(); 47 static void TearDownTestCase(); 48 void SetUp(); 49 void TearDown(); 50}; 51void HdfBluetoothHdiTest::SetUpTestCase() 52{ 53 g_iBtHci = IBluetoothAudioSession::Get(true); 54} 55void HdfBluetoothHdiTest::TearDownTestCase() 56{ 57} 58void HdfBluetoothHdiTest::SetUp() 59{ 60} 61void HdfBluetoothHdiTest::TearDown() 62{ 63} 64 65/** 66 * @tc.name: A2dpBluetoothSession_0100 67 * @tc.desc: the bluetooth a2dp api StartSession test 68 * @tc.type: FUNC 69 */ 70HWTEST_F(HdfBluetoothHdiTest, SUB_DriverSystem_A2dpBluetoothSession_0100, TestSize.Level2) 71{ 72 g_hciCallbacks = new (std::nothrow) SeClientCallback(); 73 ASSERT_NE(nullptr, g_hciCallbacks); 74 std::cout << "g_hciCallbacks = " << g_hciCallbacks << std::endl; 75 ASSERT_NE(nullptr, g_iBtHci); 76 std::cout << "g_iBtHci0100 = " << g_iBtHci << std::endl; 77 SessionType sessionType = SessionType::SOFTWARE_ENCODING; 78 std::shared_ptr<SharedMemQueue<uint8_t>> queue = nullptr; 79 int32_t ret = g_iBtHci->StartSession(sessionType, g_hciCallbacks, queue); 80 std::cout << "A2dpBluetoothSession_0100_ret = " << ret << std::endl; 81 EXPECT_EQ(HDF_SUCCESS, ret); 82} 83 84/** 85 * @tc.name: A2dpBluetoothSession_0600 86 * @tc.desc: the bluetooth a2dp api StopSession test 87 * @tc.type: FUNC 88 */ 89HWTEST_F(HdfBluetoothHdiTest, SUB_DriverSystem_A2dpBluetoothSession_0600, TestSize.Level2) 90{ 91 ASSERT_NE(nullptr, g_iBtHci); 92 SessionType sessionType = SessionType::UNKNOWN_TYPE; 93 int32_t ret = g_iBtHci->StopSession(sessionType); 94 std::cout << "A2dpBluetoothSession_0600_ret = " << ret << std::endl; 95 EXPECT_EQ(HDF_SUCCESS, ret); 96} 97 98/** 99 * @tc.name: A2dpBluetoothSession_1100 100 * @tc.desc: the bluetooth a2dp api RenderOperationResult test 101 * @tc.type: FUNC 102 */ 103 104HWTEST_F(HdfBluetoothHdiTest, SUB_DriverSystem_A2dpBluetoothSession_1100, TestSize.Level2) 105{ 106 ASSERT_NE(nullptr, g_iBtHci); 107 Operation operation_render = Operation::SUSPEND_RENDER; 108 Status statusSuss = Status::SUCCESS; 109 int32_t ret = g_iBtHci->RenderOperationResult(operation_render, statusSuss); 110 std::cout << "A2dpBluetoothSession_1100_ret = " << ret << std::endl; 111 EXPECT_EQ(HDF_FAILURE, ret); 112} 113 114/** 115 * @tc.name: A2dpBluetoothSession_1600 116 * @tc.desc: the bluetooth a2dp enum types test 117 * @tc.type: FUNC 118 */ 119 120HWTEST_F(HdfBluetoothHdiTest, SUB_DriverSystem_A2dpBluetoothSession_1600, TestSize.Level2) 121{ 122 Operation operation_suspend = Operation::SUSPEND_RENDER; 123 std::cout << "Operation SUSPEND_RENDER = " << operation_suspend << std::endl; 124 EXPECT_EQ(operation_suspend, 0); 125 126 Operation operation_start = Operation::START_RENDER; 127 std::cout << "Operation START_RENDER = " << operation_start << std::endl; 128 EXPECT_EQ(operation_start, 1); 129 130 Status staus_success = Status::SUCCESS; 131 std::cout << "Status SUCCESS = " << staus_success << std::endl; 132 EXPECT_EQ(staus_success, 0); 133 134 Status staus_failure = Status::FAILURE; 135 std::cout << "Status FAILURE = " << staus_failure << std::endl; 136 EXPECT_EQ(staus_failure, 1); 137 138 SessionType sessionType_unknownType = SessionType::UNKNOWN_TYPE; 139 std::cout << "SessionType UNKNOWN_TYPE = " << sessionType_unknownType << std::endl; 140 141 SessionType sessionType_softwareEncoding = SessionType::SOFTWARE_ENCODING; 142 std::cout << "SessionType SOFTWARE_ENCODING = " << sessionType_softwareEncoding << std::endl; 143 144 SessionType sessionType_hardwareEncoding = SessionType::HARDWARE_ENCODING; 145 std::cout << "SessionType HARDWARE_ENCODING = " << sessionType_hardwareEncoding << std::endl; 146}