* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ble_send_manager_test.h"
#include <atomic>
#include <cstring>
#include <thread>
#include "connect/mc_connect_manager.h"
#include "mechbody_controller_service.h"
using namespace OHOS::Bluetooth;
namespace OHOS {
namespace MechBodyController {
void BleSendManagerTest::SetUpTestCase() {}
void BleSendManagerTest::TearDownTestCase() {}
void BleSendManagerTest::SetUp()
{
bleSendManager_ = std::make_shared<BleSendManager>();
}
void BleSendManagerTest::TearDown()
{
bleSendManager_ = nullptr;
}
void BleGattClientCallbackTest::SetUpTestCase() {}
void BleGattClientCallbackTest::TearDownTestCase() {}
void BleGattClientCallbackTest::SetUp()
{
bleGattClientCallback_ = std::make_shared<BleGattClientCallback>();
}
void BleGattClientCallbackTest::TearDown()
{
bleGattClientCallback_ = nullptr;
}
void RemoteDeviceObserverTest::SetUpTestCase() {}
void RemoteDeviceObserverTest::TearDownTestCase() {}
void RemoteDeviceObserverTest::SetUp()
{
remoteDeviceObserver_ = std::make_shared<RemoteDeviceObserver>();
}
void RemoteDeviceObserverTest::TearDown()
{
remoteDeviceObserver_ = nullptr;
}
void HostObserverTest::SetUpTestCase() {}
void HostObserverTest::TearDownTestCase() {}
void HostObserverTest::SetUp()
{
hostObserver_ = std::make_shared<HostObserver>();
}
void HostObserverTest::TearDown()
{
hostObserver_ = nullptr;
}
void HidObserverTest::SetUpTestCase() {}
void HidObserverTest::TearDownTestCase() {}
void HidObserverTest::SetUp()
{
hidObserver_ = std::make_shared<HidObserver>();
}
void HidObserverTest::TearDown()
{
hidObserver_ = nullptr;
}
void BluetoothServiceStatusChangeListenerTest::SetUpTestCase() {}
void BluetoothServiceStatusChangeListenerTest::TearDownTestCase() {}
void BluetoothServiceStatusChangeListenerTest::SetUp()
{
bluetoothServiceStatusChangeListener_ = std::make_shared<BluetoothServiceStatusChangeListener>();
}
void BluetoothServiceStatusChangeListenerTest::TearDown()
{
bluetoothServiceStatusChangeListener_ = nullptr;
}
* @tc.name: OnServicesDiscovered_001
* @tc.desc: Test OnServicesDiscovered with status != GATT_SUCCESS
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_001, testing::ext::TestSize.Level3) {
int status = 1;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
}
* @tc.name: OnServicesDiscovered_002
* @tc.desc: Test OnServicesDiscovered with GATT_SUCCESS but gattClient_ is nullptr
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_002, testing::ext::TestSize.Level3) {
int status = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
}
* @tc.name: OnServicesDiscovered_003
* @tc.desc: Test OnServicesDiscovered with GATT_SUCCESS and valid gattClient_ but GetService fails
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_003, testing::ext::TestSize.Level3) {
int status = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager.gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
bleSendManager.gattClient_.reset();
bleSendManager.gattClient_ = nullptr;
}
* @tc.name: OnServicesDiscovered_004
* @tc.desc: Test OnServicesDiscovered with GATT_SUCCESS and gattClient_ initialized
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_004, testing::ext::TestSize.Level3) {
int status = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager.gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
bleSendManager.gattClient_.reset();
bleSendManager.gattClient_ = nullptr;
}
* @tc.name: OnServicesDiscovered_005
* @tc.desc: Test OnServicesDiscovered with GATT_FAILURE (status = 1)
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_005, testing::ext::TestSize.Level3) {
int status = 1;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
}
* @tc.name: OnServicesDiscovered_006
* @tc.desc: Test OnServicesDiscovered with GATT_SUCCESS and valid gattClient_ but notifyCharacteristic is nullptr
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_006, testing::ext::TestSize.Level3) {
int status = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager.gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
bleSendManager.gattClient_.reset();
bleSendManager.gattClient_ = nullptr;
}
* @tc.name: OnServicesDiscovered_007
* @tc.desc: Test OnServicesDiscovered with GATT_SUCCESS and valid gattClient_ but writeCharacteristic is nullptr
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnServicesDiscovered_007, testing::ext::TestSize.Level3) {
int status = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager.gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
uint16_t originalHandle = bleSendManager.handle_;
int32_t originalPermissions = bleSendManager.permissions_;
int32_t originalProperties = bleSendManager.properties_;
bleGattClientCallback_->OnServicesDiscovered(status);
ASSERT_EQ(bleSendManager.handle_, originalHandle);
ASSERT_EQ(bleSendManager.permissions_, originalPermissions);
ASSERT_EQ(bleSendManager.properties_, originalProperties);
bleSendManager.gattClient_.reset();
bleSendManager.gattClient_ = nullptr;
}
* @tc.name: OnSetNotifyCharacteristic_001
* @tc.desc: Test OnSetNotifyCharacteristic with GetMechInfo failed
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnSetNotifyCharacteristic_001, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnSetNotifyCharacteristic(characteristic, 1);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnSetNotifyCharacteristic_002
* @tc.desc: Test OnSetNotifyCharacteristic with GetMechInfo success
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnSetNotifyCharacteristic_002, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnSetNotifyCharacteristic(characteristic, 1);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnCharacteristicWriteResult_001
* @tc.desc: Test OnCharacteristicWriteResult with GATT_SUCCESS and empty value
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnCharacteristicWriteResult_001, testing::ext::TestSize.Level3) {
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnCharacteristicWriteResult(characteristic, 0);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnCharacteristicWriteResult_002
* @tc.desc: Test OnCharacteristicWriteResult with GATT_FAILURE
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnCharacteristicWriteResult_002, testing::ext::TestSize.Level3) {
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnCharacteristicWriteResult(characteristic, 1);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnCharacteristicWriteResult_003
* @tc.desc: Test OnCharacteristicWriteResult with WRITE_NOT_PERMITTED
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnCharacteristicWriteResult_003, testing::ext::TestSize.Level3) {
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnCharacteristicWriteResult(characteristic, 2);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnCharacteristicWriteResult_004
* @tc.desc: Test OnCharacteristicWriteResult with GATT_FAILURE and valid data
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnCharacteristicWriteResult_004, testing::ext::TestSize.Level3) {
uint8_t testData[] = {0x01, 0x02, 0x03, 0x04};
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
characteristic.SetValue(testData, sizeof(testData));
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnCharacteristicWriteResult(characteristic, 1);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnCharacteristicWriteResult_005
* @tc.desc: Test OnCharacteristicWriteResult with WRITE_NOT_PERMITTED and valid data
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnCharacteristicWriteResult_005, testing::ext::TestSize.Level3) {
uint8_t testData[] = {0x01, 0x02, 0x03, 0x04};
GattCharacteristic characteristic(UUID::FromString("0000fff0-0000-1000-8000-00805f9b34fb"), 1, 0, 0);
characteristic.SetValue(testData, sizeof(testData));
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnCharacteristicWriteResult(characteristic, 2);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: getMac_001
* @tc.desc: Test getMac with valid MAC address
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, getMac_001, testing::ext::TestSize.Level3) {
std::string testMac = "AA:BB:CC:DD:EE:FF";
bleGattClientCallback_->setMac(testMac);
ASSERT_EQ(bleGattClientCallback_->getMac(), testMac);
}
* @tc.name: getMac_002
* @tc.desc: Test getMac with empty MAC address
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, getMac_002, testing::ext::TestSize.Level3) {
std::string emptyMac = "";
bleGattClientCallback_->setMac(emptyMac);
ASSERT_EQ(bleGattClientCallback_->getMac(), emptyMac);
}
* @tc.name: OnConnectionStateChanged_001
* @tc.desc: Test OnConnectionStateChanged with CONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_001, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_002
* @tc.desc: Test OnConnectionStateChanged with DISCONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_002, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
int connectionState = static_cast<int>(Bluetooth::BTConnectState::DISCONNECTED);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_003
* @tc.desc: Test OnConnectionStateChanged with CONNECTING state
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_003, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTING);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_004
* @tc.desc: Test OnConnectionStateChanged with DISCONNECTING state
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_004, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
int connectionState = static_cast<int>(Bluetooth::BTConnectState::DISCONNECTING);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_005
* @tc.desc: Test OnConnectionStateChanged with valid MAC address
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_005, testing::ext::TestSize.Level3) {
std::string validMac = "AA:BB:CC:DD:EE:FF";
bleGattClientCallback_->setMac(validMac);
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
ASSERT_EQ(bleGattClientCallback_->getMac(), validMac);
}
* @tc.name: OnConnectionStateChanged_006
* @tc.desc: Test OnConnectionStateChanged with invalid MAC address
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_006, testing::ext::TestSize.Level3) {
std::string invalidMac = "INVALID_MAC_ADDRESS";
bleGattClientCallback_->setMac(invalidMac);
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_007
* @tc.desc: Test OnConnectionStateChanged with empty MAC address
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_007, testing::ext::TestSize.Level3) {
std::string emptyMac = "";
bleGattClientCallback_->setMac(emptyMac);
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 0;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnConnectionStateChanged_008
* @tc.desc: Test OnConnectionStateChanged with different return values
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnConnectionStateChanged_008, testing::ext::TestSize.Level3) {
bleGattClientCallback_->setMac("AA:BB:CC:DD:EE:FF");
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 1;
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bool originalIsGattReady = bleSendManager.isGattReady_;
bleGattClientCallback_->OnConnectionStateChanged(connectionState, ret);
ASSERT_EQ(bleSendManager.isGattReady_, originalIsGattReady);
}
* @tc.name: OnReceive_001
* @tc.desc: Test OnReceive with nullptr data
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnReceive_001, testing::ext::TestSize.Level3) {
uint8_t *data = nullptr;
size_t size = 10;
int32_t ret = bleSendManager_->OnReceive(data, size);
ASSERT_EQ(ret, -10002);
}
* @tc.name: OnReceive_002
* @tc.desc: Test OnReceive with zero size
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnReceive_002, testing::ext::TestSize.Level3) {
uint8_t data[] = {0x01, 0x02};
size_t size = 0;
int32_t ret = bleSendManager_->OnReceive(data, size);
ASSERT_EQ(ret, -10002);
}
* @tc.name: OnReceive_003
* @tc.desc: Test OnReceive with size exceeding maximum
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnReceive_003, testing::ext::TestSize.Level3) {
uint8_t data[10];
size_t size = 1024 * 1024 + 1;
int32_t ret = bleSendManager_->OnReceive(data, size);
ASSERT_EQ(ret, -10004);
}
* @tc.name: OnReceive_004
* @tc.desc: Test OnReceive with no listeners
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnReceive_004, testing::ext::TestSize.Level3) {
uint8_t data[] = {0x01, 0x02};
size_t size = 10;
int32_t ret = bleSendManager_->OnReceive(data, size);
ASSERT_EQ(ret, -10001);
}
* @tc.name: OnReceive_005
* @tc.desc: Test OnReceive with valid data and listeners
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnReceive_005, testing::ext::TestSize.Level3) {
uint8_t data[] = {0x01, 0x02, 0x03, 0x04};
size_t size = sizeof(data);
int32_t ret = bleSendManager_->OnReceive(data, size);
ASSERT_EQ(ret, -10001);
}
* @tc.name : OnReceive_006
* @tc.number: OnReceive_006
* @tc.desc : Test OnReceive with nullptr listener in bleReceviceListeners_ returns ERROR_NO_LISTENERS.
*/
HWTEST_F(BleSendManagerTest, OnReceive_006, testing::ext::TestSize.Level1)
{
bleSendManager_->bleReceviceListeners_.push_back(nullptr);
uint8_t data[] = {0x01, 0x02};
size_t size = sizeof(data);
int32_t ret = bleSendManager_->OnReceive(data, size);
EXPECT_EQ(ret, -10001);
bleSendManager_->bleReceviceListeners_.clear();
}
* @tc.name : OnReceive_007
* @tc.number: OnReceive_007
* @tc.desc : Test OnReceive with valid listener calls listener->OnReceive and returns ERR_OK.
*/
HWTEST_F(BleSendManagerTest, OnReceive_007, testing::ext::TestSize.Level1)
{
class MockListener : public BleReceviceListener {
public:
virtual ~MockListener() = default;
int32_t OnReceive(const uint8_t *data, uint32_t dataLen) override
{
receivedData_.assign(data, data + dataLen);
callCount_++;
return 0;
}
std::vector<uint8_t> receivedData_;
int callCount_ = 0;
};
auto mockListener = std::make_shared<MockListener>();
bleSendManager_->bleReceviceListeners_.push_back(mockListener);
uint8_t data[] = {0x01, 0x02, 0x03};
size_t size = sizeof(data);
int32_t ret = bleSendManager_->OnReceive(data, size);
EXPECT_EQ(ret, 0);
EXPECT_EQ(mockListener->callCount_, 1);
EXPECT_EQ(mockListener->receivedData_.size(), size);
bleSendManager_->bleReceviceListeners_.clear();
}
* @tc.name : OnReceive_008
* @tc.number: OnReceive_008
* @tc.desc : Test OnReceive with multiple valid listeners all receive data and returns ERR_OK.
*/
HWTEST_F(BleSendManagerTest, OnReceive_008, testing::ext::TestSize.Level1)
{
class MockListener : public BleReceviceListener {
public:
virtual ~MockListener() = default;
int32_t OnReceive(const uint8_t *data, uint32_t dataLen) override
{
callCount_++;
return 0;
}
int callCount_ = 0;
};
auto mockListener1 = std::make_shared<MockListener>();
auto mockListener2 = std::make_shared<MockListener>();
bleSendManager_->bleReceviceListeners_.push_back(mockListener1);
bleSendManager_->bleReceviceListeners_.push_back(mockListener2);
uint8_t data[] = {0x01, 0x02};
size_t size = sizeof(data);
int32_t ret = bleSendManager_->OnReceive(data, size);
EXPECT_EQ(ret, 0);
EXPECT_EQ(mockListener1->callCount_, 1);
EXPECT_EQ(mockListener2->callCount_, 1);
bleSendManager_->bleReceviceListeners_.clear();
}
* @tc.name: RegisterTransportSendAdapter_001
* @tc.desc: Test RegisterTransportSendAdapter with nullptr listener
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, RegisterTransportSendAdapter_001, testing::ext::TestSize.Level3) {
std::shared_ptr<BleReceviceListener> listener = nullptr;
int32_t ret = bleSendManager_->RegisterTransportSendAdapter(listener);
ASSERT_EQ(ret, -10001);
}
* @tc.name: UnRegisterTransportSendAdapter_001
* @tc.desc: Test UnRegisterTransportSendAdapter with empty listeners
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, UnRegisterTransportSendAdapter_001, testing::ext::TestSize.Level3) {
std::shared_ptr<BleReceviceListener> listener = nullptr;
int32_t ret = bleSendManager_->UnRegisterTransportSendAdapter(listener);
ASSERT_EQ(ret, -10001);
}
* @tc.name: OnPairStateChanged_001
* @tc.desc: Test OnPairStateChanged with PAIR_PAIRED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnPairStateChanged_001, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
mechInfo.mechId = 1;
std::string originalMac = mechInfo.mac;
int32_t originalMechId = mechInfo.mechId;
bleSendManager_->OnPairStateChanged(1, 0, mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
ASSERT_EQ(mechInfo.mechId, originalMechId);
}
* @tc.name: OnPairStateChanged_002
* @tc.desc: Test OnPairStateChanged with non-PAIRED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnPairStateChanged_002, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
mechInfo.mechId = 1;
std::string originalMac = mechInfo.mac;
int32_t originalMechId = mechInfo.mechId;
bleSendManager_->OnPairStateChanged(0, 0, mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
ASSERT_EQ(mechInfo.mechId, originalMechId);
}
* @tc.name: OnHidStateChanged_001
* @tc.desc: Test OnHidStateChanged with DISCONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnHidStateChanged_001, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
std::string originalMac = mechInfo.mac;
bleSendManager_->OnHidStateChanged(0, 0, mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
}
* @tc.name: OnHidStateChanged_002
* @tc.desc: Test OnHidStateChanged with CONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnHidStateChanged_002, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
std::string originalMac = mechInfo.mac;
bleSendManager_->OnHidStateChanged(2, 0, mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
}
* @tc.name: MechbodyGattcWriteCharacteristic_001
* @tc.desc: Test MechbodyGattcWriteCharacteristic with nullptr data
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcWriteCharacteristic_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
uint8_t *data = nullptr;
uint32_t dataLen = 10;
int32_t ret = bleSendManager_->MechbodyGattcWriteCharacteristic(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: MechbodyGattcWriteCharacteristic_002
* @tc.desc: Test MechbodyGattcWriteCharacteristic with dataLen <= BUF_MIN_LEN
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcWriteCharacteristic_002, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
uint8_t data[10];
uint32_t dataLen = 7;
int32_t ret = bleSendManager_->MechbodyGattcWriteCharacteristic(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: SendData_001
* @tc.desc: Test SendData with nullptr data
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, SendData_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
uint8_t *data = nullptr;
uint32_t dataLen = 10;
int32_t ret = bleSendManager_->SendData(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: SendData_002
* @tc.desc: Test SendData with dataLen < BUF_MIN_LEN
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, SendData_002, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
uint8_t data[10];
uint32_t dataLen = 7;
int32_t ret = bleSendManager_->SendData(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: SendData_003
* @tc.desc: Test SendData with dataLen > BUF_MAX_LEN
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, SendData_003, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
uint8_t data[300];
uint32_t dataLen = 252;
int32_t ret = bleSendManager_->SendData(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: SendData_004
* @tc.desc: Test SendData with valid data
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, SendData_004, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
uint8_t data[10];
uint32_t dataLen = 10;
int32_t ret = bleSendManager_->SendData(data, dataLen);
ASSERT_EQ(ret, -10003);
}
* @tc.name: UnInit_001
* @tc.desc: Test UnInit with nullptr gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, UnInit_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
bleSendManager_->UnInit();
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
}
* @tc.name: GetRealName_001
* @tc.desc: Test GetRealName
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, GetRealName_001, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
mechInfo.mechId = 1;
std::string originalMac = mechInfo.mac;
int32_t originalMechId = mechInfo.mechId;
bleSendManager_->GetRealName(mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
ASSERT_EQ(mechInfo.mechId, originalMechId);
}
* @tc.name: StartScan_001
* @tc.desc: Test StartScan with nullptr bleCentralManager_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, StartScan_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->bleCentralManager_, nullptr);
bleSendManager_->StartScan();
ASSERT_EQ(bleSendManager_->bleCentralManager_, nullptr);
}
* @tc.name: MechbodyConnect_001
* @tc.desc: Test MechbodyConnect with nullptr eventHandler_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyConnect_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->eventHandler_, nullptr);
int32_t ret = bleSendManager_->MechbodyConnect("AA:BB:CC:DD:EE:FF", "TestDevice", 1);
ASSERT_EQ(ret, 96469016);
}
* @tc.name: MechbodyGattcConnect_001
* @tc.desc: Test MechbodyGattcConnect
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcConnect_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
int32_t ret = bleSendManager_->MechbodyGattcConnect("AA:BB:CC:DD:EE:FF", "TestDevice");
ASSERT_EQ(ret, 1);
ASSERT_EQ(bleSendManager_->address_, "AA:BB:CC:DD:EE:FF");
ASSERT_EQ(bleSendManager_->deviceName_, "TestDevice");
}
* @tc.name: MechbodyPair_001
* @tc.desc: Test MechbodyPair with valid parameters
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyPair_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
std::string mac = "AA:BB:CC:DD:EE:FF";
std::string deviceName = "TestDevice";
int32_t ret = bleSendManager_->MechbodyPair(mac, deviceName);
ASSERT_EQ(ret, 96469016);
}
* @tc.name: MechbodyHidConnect_001
* @tc.desc: Test MechbodyHidConnect with valid parameters
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyHidConnect_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
std::string mac = "AA:BB:CC:DD:EE:FF";
std::string deviceName = "TestDevice";
int32_t ret = bleSendManager_->MechbodyHidConnect(mac, deviceName);
ASSERT_EQ(ret, 96469016);
}
* @tc.name: MechbodyDisConnect_001
* @tc.desc: Test MechbodyDisConnect with nullptr eventHandler_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyDisConnect_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->eventHandler_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyDisConnect(mechInfo);
ASSERT_EQ(ret, 0);
}
* @tc.name: MechbodyDisConnectSync_001
* @tc.desc: Test MechbodyDisConnectSync with nullptr gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyDisConnectSync_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyDisConnectSync(mechInfo);
ASSERT_EQ(ret, -10003);
}
* @tc.name: MechbodyPair_002
* @tc.desc: Test MechbodyPair with invalid mac format
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyPair_002, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
std::string mac = "INVALID_MAC";
std::string deviceName = "TestDevice";
int32_t ret = bleSendManager_->MechbodyPair(mac, deviceName);
ASSERT_EQ(ret, 96469016);
}
* @tc.name: MechbodyHidConnect_002
* @tc.desc: Test MechbodyHidConnect with invalid mac format
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyHidConnect_002, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
std::string mac = "INVALID_MAC";
std::string deviceName = "TestDevice";
int32_t ret = bleSendManager_->MechbodyHidConnect(mac, deviceName);
ASSERT_EQ(ret, 96469016);
}
* @tc.name: MechbodyGattcDisconnect_001
* @tc.desc: Test MechbodyGattcDisconnect with nullptr gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcDisconnect_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyGattcDisconnect(mechInfo);
ASSERT_EQ(ret, -10003);
}
* @tc.name: MechbodyHidDisconnect_001
* @tc.desc: Test MechbodyHidDisconnect with valid parameters
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyHidDisconnect_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyHidDisconnect(mechInfo);
ASSERT_EQ(ret, 96469017);
}
* @tc.name: MechbodyDisConnectForMechbotyStart_001
* @tc.desc: Test MechbodyDisConnectForMechbotyStart with nullptr eventHandler_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyDisConnectForMechbotyStart_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->eventHandler_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyDisConnectForMechbotyStart(mechInfo);
ASSERT_EQ(ret, 0);
}
* @tc.name: MechbodyDisConnectSyncForMechbotyStart_001
* @tc.desc: Test MechbodyDisConnectSyncForMechbotyStart with nullptr gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyDisConnectSyncForMechbotyStart_001, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyDisConnectSyncForMechbotyStart(mechInfo);
ASSERT_EQ(ret, 96469014);
}
* @tc.name: MechbodyGattcDisconnectForMechbotyStart_001
* @tc.desc: Test MechbodyGattcDisconnectForMechbotyStart with GetMechInfo failed
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcDisconnectForMechbotyStart_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyGattcDisconnectForMechbotyStart(mechInfo);
ASSERT_EQ(ret, 96469014);
}
* @tc.name: MechbodyGattcDisconnectForMechbotyStart_002
* @tc.desc: Test MechbodyGattcDisconnectForMechbotyStart with nullptr gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyGattcDisconnectForMechbotyStart_002, testing::ext::TestSize.Level3) {
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
MechConnectManager::GetInstance().AddMechInfo(mechInfo);
int32_t ret = bleSendManager_->MechbodyGattcDisconnectForMechbotyStart(mechInfo);
ASSERT_EQ(ret, 96469022);
MechConnectManager::GetInstance().RemoveMechInfoByMac(mechInfo.mac);
}
* @tc.name: MechbodyHidDisconnectForMechbotyStart_001
* @tc.desc: Test MechbodyHidDisconnectForMechbotyStart with GetMechInfo failed
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, MechbodyHidDisconnectForMechbotyStart_001, testing::ext::TestSize.Level3) {
ASSERT_NE(bleSendManager_, nullptr);
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->MechbodyHidDisconnectForMechbotyStart(mechInfo);
ASSERT_EQ(ret, 96469014);
}
* @tc.name: UnInit_002
* @tc.desc: Test UnInit with valid gattClient_
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, UnInit_002, testing::ext::TestSize.Level3) {
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager_->gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
bleSendManager_->UnInit();
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
}
* @tc.name: OnConnectionStateChanged_001
* @tc.desc: Test OnConnectionStateChanged with CONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnConnectionStateChanged_001, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTED);
int ret = 0;
bool originalConnectFailed = bleSendManager_->connectFailed_.load();
bleSendManager_->OnConnectionStateChanged(connectionState, ret, mechInfo);
ASSERT_EQ(bleSendManager_->connectFailed_.load(), originalConnectFailed);
}
* @tc.name: OnConnectionStateChanged_002
* @tc.desc: Test OnConnectionStateChanged with DISCONNECTED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnConnectionStateChanged_002, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int connectionState = static_cast<int>(Bluetooth::BTConnectState::DISCONNECTED);
int ret = 0;
bleSendManager_->connectFailed_.store(false);
bleSendManager_->OnConnectionStateChanged(connectionState, ret, mechInfo);
ASSERT_TRUE(bleSendManager_->connectFailed_.load());
}
* @tc.name: OnConnectionStateChanged_003
* @tc.desc: Test OnConnectionStateChanged with CONNECTING state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnConnectionStateChanged_003, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int connectionState = static_cast<int>(Bluetooth::BTConnectState::CONNECTING);
int ret = 0;
bool originalConnectFailed = bleSendManager_->connectFailed_.load();
bleSendManager_->OnConnectionStateChanged(connectionState, ret, mechInfo);
ASSERT_EQ(bleSendManager_->connectFailed_.load(), originalConnectFailed);
}
* @tc.name: OnPairStateChanged_003
* @tc.desc: Test OnPairStateChanged with PAIR_PAIRED state
* @tc.type: FUNC
*/
HWTEST_F(BleSendManagerTest, OnPairStateChanged_003, testing::ext::TestSize.Level3) {
MechInfo mechInfo;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
mechInfo.mechId = 1;
mechInfo.mechName = "TestDevice";
std::string originalMac = mechInfo.mac;
std::string originalName = mechInfo.mechName;
bleSendManager_->OnPairStateChanged(Bluetooth::PAIR_PAIRED, 0, mechInfo);
ASSERT_EQ(mechInfo.mac, originalMac);
ASSERT_EQ(mechInfo.mechName, originalName);
}
* @tc.name: OnMtuUpdate_001
* @tc.desc: Test OnMtuUpdate with valid MTU size
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnMtuUpdate_001, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.isMtuUpdated_ = false;
int mtu = 512;
int ret = 0;
bleGattClientCallback_->OnMtuUpdate(mtu, ret);
ASSERT_TRUE(bleSendManager.isMtuUpdated_);
}
* @tc.name: OnMtuUpdate_002
* @tc.desc: Test OnMtuUpdate with error return code
* @tc.type: FUNC
*/
HWTEST_F(BleGattClientCallbackTest, OnMtuUpdate_002, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.isMtuUpdated_ = false;
int mtu = 23;
int ret = -1;
bleGattClientCallback_->OnMtuUpdate(mtu, ret);
ASSERT_TRUE(bleSendManager.isMtuUpdated_);
}
* @tc.name: OnStateChanged_001
* @tc.desc: Test HostObserver::OnStateChanged with STATE_TURN_ON status
* @tc.type: FUNC
*/
HWTEST_F(HostObserverTest, OnStateChanged_001, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.SetBluetoothServiceStoped(true);
bool originalBluetoothStopped = bleSendManager.HasBluetoothServiceStoped();
int transport = 1;
int status = static_cast<int>(Bluetooth::BTStateID::STATE_TURN_ON);
hostObserver_->OnStateChanged(transport, status);
ASSERT_TRUE(originalBluetoothStopped);
}
* @tc.name: OnStateChanged_002
* @tc.desc: Test HostObserver::OnStateChanged with non-STATE_TURN_ON status
* @tc.type: FUNC
*/
HWTEST_F(HostObserverTest, OnStateChanged_002, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.SetBluetoothServiceStoped(true);
bool originalBluetoothStopped = bleSendManager.HasBluetoothServiceStoped();
int transport = 1;
int status = static_cast<int>(Bluetooth::BTStateID::STATE_TURN_OFF);
hostObserver_->OnStateChanged(transport, status);
ASSERT_EQ(bleSendManager.HasBluetoothServiceStoped(), originalBluetoothStopped);
}
* @tc.name: OnRemoveSystemAbility_001
* @tc.desc: Test BluetoothServiceStatusChangeListener::OnRemoveSystemAbility with BLUETOOTH_SERVICE_SERVICE_SA_ID
* @tc.type: FUNC
*/
HWTEST_F(BluetoothServiceStatusChangeListenerTest, OnRemoveSystemAbility_001, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.SetBluetoothServiceStoped(false);
int32_t systemAbilityId = 2901;
std::string deviceId = "test_device";
bluetoothServiceStatusChangeListener_->OnRemoveSystemAbility(systemAbilityId, deviceId);
ASSERT_FALSE(bleSendManager.HasBluetoothServiceStoped());
}
* @tc.name: OnRemoveSystemAbility_002
* @tc.desc: Test BluetoothServiceStatusChangeListener::OnRemoveSystemAbility with non-BLUETOOTH_SERVICE_SERVICE_SA_ID
* @tc.type: FUNC
*/
HWTEST_F(BluetoothServiceStatusChangeListenerTest, OnRemoveSystemAbility_002, testing::ext::TestSize.Level3) {
BleSendManager& bleSendManager = BleSendManager::GetInstance();
bleSendManager.SetBluetoothServiceStoped(false);
bool originalBluetoothStopped = bleSendManager.HasBluetoothServiceStoped();
int32_t systemAbilityId = 1001;
std::string deviceId = "test_device";
bluetoothServiceStatusChangeListener_->OnRemoveSystemAbility(systemAbilityId, deviceId);
ASSERT_EQ(bleSendManager.HasBluetoothServiceStoped(), originalBluetoothStopped);
}
* @tc.name : OnGattReady_001
* @tc.number: OnGattReady_001
* @tc.desc : Test OnGattReady when MTU update timeout returns MECH_CONNECT_FAILED.
*/
HWTEST_F(BleSendManagerTest, OnGattReady_001, testing::ext::TestSize.Level1)
{
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager_->gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
bleSendManager_->isMtuUpdated_ = false;
MechInfo mechInfo;
mechInfo.mechId = 9001;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
int32_t ret = bleSendManager_->OnGattReady(mechInfo);
EXPECT_EQ(ret, MECH_CONNECT_FAILED);
bleSendManager_->gattClient_.reset();
bleSendManager_->gattClient_ = nullptr;
}
* @tc.name : OnGattReady_002
* @tc.number: OnGattReady_002
* @tc.desc : Test OnGattReady when MTU update succeeds and NotifyMechConnect returns ERR_OK.
*/
HWTEST_F(BleSendManagerTest, OnGattReady_002, testing::ext::TestSize.Level1)
{
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager_->gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
bleSendManager_->isMtuUpdated_ = true;
MechInfo mechInfo;
mechInfo.mechId = 9002;
mechInfo.mac = "AA:BB:CC:DD:EE:FF";
MechBodyControllerService::GetInstance().CleanMotionManagers();
auto motionMgr = std::make_shared<MotionManager>(nullptr, mechInfo.mechId, false, 0);
motionMgr->deviceBaseInfo_.devType = static_cast<uint8_t>(MechType::PORTABLE_GIMBAL);
MechBodyControllerService::GetInstance().motionManagers_[mechInfo.mechId] = motionMgr;
int32_t ret = bleSendManager_->OnGattReady(mechInfo);
EXPECT_EQ(ret, ERR_OK);
EXPECT_FALSE(bleSendManager_->isMtuUpdated_);
MechBodyControllerService::GetInstance().CleanMotionManagers();
bleSendManager_->gattClient_.reset();
bleSendManager_->gattClient_ = nullptr;
}
* @tc.name : OnGattReady_003
* @tc.number: OnGattReady_003
* @tc.desc : Test OnGattReady when MTU update succeeds but NotifyMechConnect returns MECH_CONNECT_FAILED.
*/
HWTEST_F(BleSendManagerTest, OnGattReady_003, testing::ext::TestSize.Level1)
{
BluetoothRemoteDevice device("AA:BB:CC:DD:EE:FF", 1);
bleSendManager_->gattClient_ = std::make_shared<OHOS::Bluetooth::GattClient>(device);
bleSendManager_->isMtuUpdated_ = true;
MechInfo mechInfo;
mechInfo.mechId = 9003;
mechInfo.mac = "AA:BB:CC:DD:EE:11";
MechBodyControllerService::GetInstance().CleanMotionManagers();
MechConnectManager::GetInstance().CleanMechInfo();
int32_t ret = bleSendManager_->OnGattReady(mechInfo);
EXPECT_EQ(ret, MECH_CONNECT_FAILED);
MechBodyControllerService::GetInstance().CleanMotionManagers();
bleSendManager_->gattClient_.reset();
bleSendManager_->gattClient_ = nullptr;
}
* @tc.name : DisConnectOldDevice_001
* @tc.number: DisConnectOldDevice_001
* @tc.desc : Test DisConnectOldDevice when GetConnectMechList returns false (empty list).
*/
HWTEST_F(BleSendManagerTest, DisConnectOldDevice_001, testing::ext::TestSize.Level1)
{
MechConnectManager::GetInstance().CleanMechInfo();
int32_t ret = bleSendManager_->DisConnectOldDevice();
EXPECT_EQ(ret, ERR_OK);
}
* @tc.name : DisConnectOldDevice_002
* @tc.number: DisConnectOldDevice_002
* @tc.desc : Test DisConnectOldDevice with device whose gattCoonectState is false skips disconnect.
*/
HWTEST_F(BleSendManagerTest, DisConnectOldDevice_002, testing::ext::TestSize.Level1)
{
MechConnectManager::GetInstance().CleanMechInfo();
MechInfo mechInfo;
mechInfo.mechId = 8001;
mechInfo.mac = "AA:BB:CC:DD:EE:01";
mechInfo.gattCoonectState = false;
MechConnectManager::GetInstance().AddMechInfo(mechInfo);
int32_t ret = bleSendManager_->DisConnectOldDevice();
EXPECT_EQ(ret, ERR_OK);
MechConnectManager::GetInstance().CleanMechInfo();
}
* @tc.name : DisConnectOldDevice_003
* @tc.number: DisConnectOldDevice_003
* @tc.desc : Test DisConnectOldDevice with device whose gattCoonectState is true calls MechbodyDisConnectSync.
*/
HWTEST_F(BleSendManagerTest, DisConnectOldDevice_003, testing::ext::TestSize.Level1)
{
MechConnectManager::GetInstance().CleanMechInfo();
ASSERT_EQ(bleSendManager_->gattClient_, nullptr);
MechInfo mechInfo;
mechInfo.mechId = 8002;
mechInfo.mac = "AA:BB:CC:DD:EE:02";
mechInfo.gattCoonectState = true;
MechConnectManager::GetInstance().AddMechInfo(mechInfo);
int32_t ret = bleSendManager_->DisConnectOldDevice();
EXPECT_EQ(ret, -10003);
MechConnectManager::GetInstance().CleanMechInfo();
}
}
}