• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
214 /**
215  * @tc.name: SoftbusBleUtilsTest_AssembleAdvData
216  * @tc.desc: test assemble ble adv data
217  * @tc.type: FUNC
218  * @tc.require: 1
219  */
220 HWTEST(SoftbusBleUtilsTest, AssembleAdvData, TestSize.Level3)
221 {
222     SoftbusBroadcastData *data =  (SoftbusBroadcastData *)calloc(1, sizeof(SoftbusBroadcastData));
223     data->isSupportFlag = true;
224     data->flag = 1;
225     SoftbusBroadcastPayload bcData;
226     bcData.type = BROADCAST_DATA_TYPE_SERVICE;
227     bcData.id = 1;
228     uint8_t *payload = (uint8_t *)"00112233445566";
229     bcData.payloadLen = 15;
230     bcData.payload = payload;
231     data->bcData = bcData;
232     uint16_t dataLen = 0;
233     uint8_t *advData = AssembleAdvData(data, &dataLen);
234     uint16_t expectedDataLen = (data->isSupportFlag) ?
235         bcData.payloadLen + BC_HEAD_LEN : bcData.payloadLen + BC_HEAD_LEN - BC_FLAG_LEN;
236     EXPECT_EQ(dataLen, expectedDataLen);
237     EXPECT_NE(advData, nullptr);
238 
239     SoftBusFree(advData);
240     free(data);
241 }
242 
243 /**
244  * @tc.name: SoftbusBleUtilsTest_AssembleRspData
245  * @tc.desc: test assemble ble rsp data
246  * @tc.type: FUNC
247  * @tc.require: 1
248  */
249 HWTEST(SoftbusBleUtilsTest, AssembleRspData, TestSize.Level3)
250 {
251     SoftbusBroadcastPayload rspData = {};
252     rspData.type = BROADCAST_DATA_TYPE_SERVICE;
253     rspData.id = 1;
254     uint8_t *payload = (uint8_t *)"00112233445566";
255     rspData.payloadLen = 15;
256     rspData.payload = payload;
257     uint16_t dataLen = 0;
258 
259     uint8_t *data = AssembleRspData(&rspData, &dataLen);
260     EXPECT_NE(data, NULL);
261     uint16_t expectedDataLen = rspData.payloadLen + RSP_HEAD_LEN;
262     EXPECT_EQ(dataLen, expectedDataLen);
263     SoftBusFree(data);
264 }
265 
266 /**
267  * @tc.name: SoftbusBleUtilsTest_ParseScanResult
268  * @tc.desc: test parse ble scan result as softbus scan result
269  * @tc.type: FUNC
270  * @tc.require: 1
271  */
272 HWTEST(SoftbusBleUtilsTest, ParseScanResult, TestSize.Level3)
273 {
274     uint8_t *advData = (uint8_t *)"00112233445566";
275     uint8_t advLen = 23;
276     SoftBusBcScanResult softBusBcScanResult = {};
277     int32_t ret = ParseScanResult(advData, advLen, &softBusBcScanResult);
278     EXPECT_EQ(ret, SOFTBUS_OK);
279     SoftBusFree(softBusBcScanResult.data.bcData.payload);
280     SoftBusFree(softBusBcScanResult.data.rspData.payload);
281 
282     EXPECT_EQ(softBusBcScanResult.data.isSupportFlag, false);
283     EXPECT_EQ(softBusBcScanResult.data.bcData.type, BROADCAST_DATA_TYPE_SERVICE);
284 }
285 
286 } // namespace OHOS
287