1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "gtest/gtest.h" 17 18 #include "softbus_ble_utils.h" 19 #include "softbus_adapter_mem.h" 20 #include "softbus_broadcast_type.h" 21 #include "softbus_broadcast_utils.h" 22 #include "softbus_error_code.h" 23 #include <cstring> 24 25 using namespace testing::ext; 26 27 namespace OHOS { 28 29 /** 30 * @tc.name: SoftbusBleUtilsTest_BtStatusToSoftBus 31 * @tc.desc: test bt status convert to softbus status 32 * @tc.type: FUNC 33 * @tc.require: 1 34 */ 35 HWTEST(SoftbusBleUtilsTest, BtStatusToSoftBus, TestSize.Level3) 36 { 37 int32_t status = BtStatusToSoftBus(OHOS_BT_STATUS_SUCCESS); 38 EXPECT_EQ(status, SOFTBUS_BC_STATUS_SUCCESS); 39 40 status = BtStatusToSoftBus(OHOS_BT_STATUS_FAIL); 41 EXPECT_EQ(status, SOFTBUS_BC_STATUS_FAIL); 42 43 status = BtStatusToSoftBus(OHOS_BT_STATUS_NOT_READY); 44 EXPECT_EQ(status, SOFTBUS_BC_STATUS_NOT_READY); 45 46 status = BtStatusToSoftBus(OHOS_BT_STATUS_NOMEM); 47 EXPECT_EQ(status, SOFTBUS_BC_STATUS_NOMEM); 48 49 status = BtStatusToSoftBus(OHOS_BT_STATUS_BUSY); 50 EXPECT_EQ(status, SOFTBUS_BC_STATUS_BUSY); 51 52 status = BtStatusToSoftBus(OHOS_BT_STATUS_DONE); 53 EXPECT_EQ(status, SOFTBUS_BC_STATUS_DONE); 54 55 status = BtStatusToSoftBus(OHOS_BT_STATUS_UNSUPPORTED); 56 EXPECT_EQ(status, SOFTBUS_BC_STATUS_UNSUPPORTED); 57 58 status = BtStatusToSoftBus(OHOS_BT_STATUS_PARM_INVALID); 59 EXPECT_EQ(status, SOFTBUS_BC_STATUS_PARM_INVALID); 60 61 status = BtStatusToSoftBus(OHOS_BT_STATUS_UNHANDLED); 62 EXPECT_EQ(status, SOFTBUS_BC_STATUS_UNHANDLED); 63 64 status = BtStatusToSoftBus(OHOS_BT_STATUS_AUTH_FAILURE); 65 EXPECT_EQ(status, SOFTBUS_BC_STATUS_AUTH_FAILURE); 66 67 status = BtStatusToSoftBus(OHOS_BT_STATUS_RMT_DEV_DOWN); 68 EXPECT_EQ(status, SOFTBUS_BC_STATUS_RMT_DEV_DOWN); 69 70 status = BtStatusToSoftBus(OHOS_BT_STATUS_AUTH_REJECTED); 71 EXPECT_EQ(status, SOFTBUS_BC_STATUS_AUTH_REJECTED); 72 } 73 74 /** 75 * @tc.name: SoftbusBleUtilsTest_SoftbusAdvParamToBt 76 * @tc.desc: test softbus adv param convert to bt adv params 77 * @tc.type: FUNC 78 * @tc.require: 1 79 */ 80 HWTEST(SoftbusBleUtilsTest, SoftbusAdvParamToBt, TestSize.Level3) 81 { 82 SoftbusBroadcastParam softbusAdvParam = {}; 83 softbusAdvParam.minInterval = 1; 84 softbusAdvParam.maxInterval = 1; 85 softbusAdvParam.advType = 1; 86 softbusAdvParam.advFilterPolicy = 1; 87 softbusAdvParam.ownAddrType = 1; 88 softbusAdvParam.peerAddrType = 1; 89 softbusAdvParam.channelMap = 1; 90 softbusAdvParam.duration = 1; 91 softbusAdvParam.txPower = 1; 92 93 BleAdvParams bleAdvParams = {}; 94 SoftbusAdvParamToBt(&softbusAdvParam, &bleAdvParams); 95 96 EXPECT_EQ(bleAdvParams.minInterval, softbusAdvParam.minInterval); 97 EXPECT_EQ(bleAdvParams.maxInterval, softbusAdvParam.maxInterval); 98 EXPECT_EQ(bleAdvParams.advType, softbusAdvParam.advType); 99 EXPECT_EQ(bleAdvParams.advFilterPolicy, softbusAdvParam.advFilterPolicy); 100 EXPECT_EQ(bleAdvParams.ownAddrType, softbusAdvParam.ownAddrType); 101 EXPECT_EQ(bleAdvParams.peerAddrType, softbusAdvParam.peerAddrType); 102 EXPECT_EQ(bleAdvParams.channelMap, softbusAdvParam.channelMap); 103 EXPECT_EQ(bleAdvParams.duration, softbusAdvParam.duration); 104 EXPECT_EQ(bleAdvParams.txPower, softbusAdvParam.txPower); 105 } 106 107 /** 108 * @tc.name: SoftbusBleUtilsTest_BtScanResultToSoftbus 109 * @tc.desc: test bt scan result convert to softbus scan result 110 * @tc.type: FUNC 111 * @tc.require: 1 112 */ 113 HWTEST(SoftbusBleUtilsTest, BtScanResultToSoftbus, TestSize.Level3) 114 { 115 BtScanResultData btScanResult = {}; 116 btScanResult.eventType = 1; 117 btScanResult.dataStatus = 1; 118 btScanResult.addrType = 1; 119 btScanResult.primaryPhy = 1; 120 btScanResult.secondaryPhy = 1; 121 btScanResult.advSid = 1; 122 btScanResult.txPower = 1; 123 btScanResult.rssi = 1; 124 125 SoftBusBcScanResult softbusScanResult = {}; 126 BtScanResultToSoftbus(&btScanResult, &softbusScanResult); 127 128 EXPECT_EQ(softbusScanResult.eventType, btScanResult.eventType); 129 EXPECT_EQ(softbusScanResult.dataStatus, btScanResult.dataStatus); 130 EXPECT_EQ(softbusScanResult.addrType, btScanResult.addrType); 131 EXPECT_EQ(softbusScanResult.primaryPhy, btScanResult.primaryPhy); 132 EXPECT_EQ(softbusScanResult.secondaryPhy, btScanResult.secondaryPhy); 133 EXPECT_EQ(softbusScanResult.advSid, btScanResult.advSid); 134 EXPECT_EQ(softbusScanResult.txPower, btScanResult.txPower); 135 EXPECT_EQ(softbusScanResult.rssi, btScanResult.rssi); 136 } 137 138 /** 139 * @tc.name: SoftbusBleUtilsTest_SoftbusFilterToBt 140 * @tc.desc: test softbus scan filter convert to bt scan filter 141 * @tc.type: FUNC 142 * @tc.require: 1 143 */ 144 HWTEST(SoftbusBleUtilsTest, SoftbusFilterToBt, TestSize.Level3) 145 { 146 SoftBusBcScanFilter softBusBcScanFilter = {}; 147 softBusBcScanFilter.address = (int8_t *)"address"; 148 softBusBcScanFilter.deviceName = (int8_t *)"deviceName"; 149 softBusBcScanFilter.serviceUuid = 1; 150 softBusBcScanFilter.serviceDataLength = 1; 151 softBusBcScanFilter.manufactureId = 1; 152 softBusBcScanFilter.manufactureDataLength = 1; 153 154 BleScanNativeFilter bleScanNativeFilter = {}; 155 SoftbusFilterToBt(&bleScanNativeFilter, &softBusBcScanFilter, 1); 156 SoftBusFree(bleScanNativeFilter.serviceData); 157 SoftBusFree(bleScanNativeFilter.serviceDataMask); 158 159 EXPECT_EQ(bleScanNativeFilter.address, (char *)softBusBcScanFilter.address); 160 EXPECT_EQ(bleScanNativeFilter.deviceName, (char *)softBusBcScanFilter.deviceName); 161 EXPECT_EQ(bleScanNativeFilter.manufactureId, softBusBcScanFilter.manufactureId); 162 EXPECT_EQ(bleScanNativeFilter.manufactureDataLength, softBusBcScanFilter.manufactureDataLength); 163 } 164 165 /** 166 * @tc.name: SoftbusBleUtilsTest_FreeBtFilter 167 * @tc.desc: test free bt scan filter 168 * @tc.type: FUNC 169 * @tc.require: 1 170 */ 171 HWTEST(SoftbusBleUtilsTest, FreeBtFilter, TestSize.Level3) 172 { 173 BleScanNativeFilter *bleScanNativeFilter = (BleScanNativeFilter *)calloc(1, sizeof(BleScanNativeFilter)); 174 FreeBtFilter(bleScanNativeFilter, 1); 175 } 176 177 /** 178 * @tc.name: SoftbusBleUtilsTest_DumpBleScanFilter 179 * @tc.desc: test dump scan filter 180 * @tc.type: FUNC 181 * @tc.require: 1 182 */ 183 HWTEST(SoftbusBleUtilsTest, DumpBleScanFilter, TestSize.Level3) 184 { 185 BleScanNativeFilter *bleScanNativeFilter = (BleScanNativeFilter *)calloc(1, sizeof(BleScanNativeFilter)); 186 DumpBleScanFilter(bleScanNativeFilter, 1); 187 free(bleScanNativeFilter); 188 } 189 190 /** 191 * @tc.name: SoftbusBleUtilsTest_GetBtScanMode 192 * @tc.desc: test get bt scan mode 193 * @tc.type: FUNC 194 * @tc.require: 1 195 */ 196 HWTEST(SoftbusBleUtilsTest, GetBtScanMode, TestSize.Level3) 197 { 198 int scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P2, SOFTBUS_BC_SCAN_WINDOW_P2); 199 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_OP_P2_60_3000); 200 201 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P10, SOFTBUS_BC_SCAN_WINDOW_P10); 202 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_OP_P10_30_300); 203 204 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P25, SOFTBUS_BC_SCAN_WINDOW_P25); 205 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_OP_P25_60_240); 206 207 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P100, SOFTBUS_BC_SCAN_WINDOW_P100); 208 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_OP_P100_1000_1000); 209 210 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P2, SOFTBUS_BC_SCAN_WINDOW_P100); 211 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_LOW_POWER); 212 213 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P2_FAST, SOFTBUS_BC_SCAN_WINDOW_P2_FAST); 214 EXPECT_EQ(scanMode, OHOS_BLE_SCAN_MODE_OP_P2_30_1500); 215 216 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P2_FAST, SOFTBUS_BC_SCAN_WINDOW_P100); 217 EXPECT_NE(scanMode, OHOS_BLE_SCAN_MODE_OP_P2_30_1500); 218 219 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P10, SOFTBUS_BC_SCAN_WINDOW_P100); 220 EXPECT_NE(scanMode, OHOS_BLE_SCAN_MODE_OP_P10_30_300); 221 222 scanMode = GetBtScanMode(SOFTBUS_BC_SCAN_INTERVAL_P25, SOFTBUS_BC_SCAN_WINDOW_P100); 223 EXPECT_NE(scanMode, OHOS_BLE_SCAN_MODE_OP_P25_60_240); 224 } 225 226 /** 227 * @tc.name: SoftbusBleUtilsTest_AssembleAdvData 228 * @tc.desc: test assemble ble adv data 229 * @tc.type: FUNC 230 * @tc.require: 1 231 */ 232 HWTEST(SoftbusBleUtilsTest, AssembleAdvData, TestSize.Level3) 233 { 234 SoftbusBroadcastData *data = (SoftbusBroadcastData *)calloc(1, sizeof(SoftbusBroadcastData)); 235 data->isSupportFlag = true; 236 data->flag = 1; 237 SoftbusBroadcastPayload bcData; 238 bcData.type = BROADCAST_DATA_TYPE_SERVICE; 239 bcData.id = 1; 240 uint8_t *payload = (uint8_t *)"00112233445566"; 241 bcData.payloadLen = 15; 242 bcData.payload = payload; 243 data->bcData = bcData; 244 uint16_t dataLen = 0; 245 uint8_t *advData = AssembleAdvData(data, &dataLen); 246 uint16_t expectedDataLen = (data->isSupportFlag) ? 247 bcData.payloadLen + BC_HEAD_LEN : bcData.payloadLen + BC_HEAD_LEN - BC_FLAG_LEN; 248 EXPECT_EQ(dataLen, expectedDataLen); 249 EXPECT_NE(advData, nullptr); 250 251 SoftBusFree(advData); 252 free(data); 253 } 254 255 /** 256 * @tc.name: SoftbusBleUtilsTest_AssembleRspData 257 * @tc.desc: test assemble ble rsp data 258 * @tc.type: FUNC 259 * @tc.require: 1 260 */ 261 HWTEST(SoftbusBleUtilsTest, AssembleRspData, TestSize.Level3) 262 { 263 SoftbusBroadcastPayload rspData = {}; 264 rspData.type = BROADCAST_DATA_TYPE_SERVICE; 265 rspData.id = 1; 266 uint8_t *payload = (uint8_t *)"00112233445566"; 267 rspData.payloadLen = 15; 268 rspData.payload = payload; 269 uint16_t dataLen = 0; 270 271 uint8_t *data = AssembleRspData(&rspData, &dataLen); 272 EXPECT_NE(data, NULL); 273 uint16_t expectedDataLen = rspData.payloadLen + RSP_HEAD_LEN; 274 EXPECT_EQ(dataLen, expectedDataLen); 275 SoftBusFree(data); 276 } 277 278 /** 279 * @tc.name: SoftbusBleUtilsTest_ParseScanResult 280 * @tc.desc: test parse ble scan result as softbus scan result 281 * @tc.type: FUNC 282 * @tc.require: 1 283 */ 284 HWTEST(SoftbusBleUtilsTest, ParseScanResult, TestSize.Level3) 285 { 286 uint8_t *advData = (uint8_t *)"00112233445566"; 287 uint8_t advLen = 23; 288 SoftBusBcScanResult softBusBcScanResult = {}; 289 int32_t ret = ParseScanResult(advData, advLen, &softBusBcScanResult); 290 EXPECT_EQ(ret, SOFTBUS_OK); 291 SoftBusFree(softBusBcScanResult.data.bcData.payload); 292 SoftBusFree(softBusBcScanResult.data.rspData.payload); 293 294 EXPECT_EQ(softBusBcScanResult.data.isSupportFlag, false); 295 EXPECT_EQ(softBusBcScanResult.data.bcData.type, BROADCAST_DATA_TYPE_SERVICE); 296 } 297 298 } // namespace OHOS 299