1 /*
2 * Copyright (C) 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 <gtest/gtest.h>
17 #include <securec.h>
18
19 #include "bluetooth_def.h"
20 #include "ohos_bt_def.h"
21 #include "ohos_bt_gatt.h"
22
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Bluetooth {
27 class GattCTest : public testing::Test {
28 public:
29 static void SetUpTestCase(void);
30 static void TearDownTestCase(void);
31 void SetUp();
32 void TearDown();
33 int scanerId;
34 };
35
SetUpTestCase(void)36 void GattCTest::SetUpTestCase(void) {}
37
TearDownTestCase(void)38 void GattCTest::TearDownTestCase(void) {}
39
SetUp()40 void GattCTest::SetUp()
41 {
42 BleScanCallbacks callbacks;
43 BleRegisterScanCallbacks(&callbacks, &scanerId);
44 }
45
TearDown()46 void GattCTest::TearDown() {}
47
48 /*
49 * @tc.name: GattCTest_001
50 * @tc.desc: Test BleStartScanEx when g_BleCentralManager or BleScanConfigs is nullptr
51 * @tc.type: FUNC
52 * @tc.require: issueI5OH5C
53 */
54 HWTEST_F(GattCTest, GattCTest_001, TestSize.Level1)
55 {
56 BleScanConfigs configs;
57 BleScanNativeFilter filter[1];
58 int filterSize = sizeof(filter) / sizeof(BleScanNativeFilter);
59 int res = BleStartScanEx(scanerId, &configs, filter, filterSize);
60 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
61
62 BtGattCallbacks btGattCallbacks;
63 BleGattRegisterCallbacks(&btGattCallbacks);
64 res = BleStartScanEx(scanerId, nullptr, filter, filterSize);
65 EXPECT_EQ(res, OHOS_BT_STATUS_FAIL);
66 }
67
68 /*
69 * @tc.name: GattCTest_002
70 * @tc.desc: Test BleStartScanEx when BleScanNativeFilter is null or filterSize is zero
71 * @tc.type: FUNC
72 * @tc.require: issueI5OH5C
73 */
74 HWTEST_F(GattCTest, GattCTest_002, TestSize.Level1)
75 {
76 BleScanConfigs configs;
77 configs.reportDelayMillis = 0;
78 configs.scanMode = SCAN_MODE_LOW_POWER;
79 configs.legacy = true;
80 configs.phy = PHY_LE_ALL_SUPPORTED;
81
82 BleScanNativeFilter filter[1];
83 int filterSize = sizeof(filter) / sizeof(BleScanNativeFilter);
84 int res = BleStartScanEx(scanerId, &configs, nullptr, filterSize);
85 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
86
87 res = BleStartScanEx(scanerId, &configs, filter, 0);
88 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
89 }
90
91 /*
92 * @tc.name: GattCTest_003
93 * @tc.desc: Test BleStartScanEx success status
94 * @tc.type: FUNC
95 * @tc.require: issueI5OH5C
96 */
97 HWTEST_F(GattCTest, GattCTest_003, TestSize.Level1)
98 {
99 BleScanConfigs configs;
100 configs.reportDelayMillis = 0;
101 configs.scanMode = SCAN_MODE_LOW_POWER;
102 configs.legacy = true;
103 configs.phy = PHY_LE_ALL_SUPPORTED;
104
105 BleScanNativeFilter filter[1];
106 filter[0].address = (char *)"test";
107 filter[0].deviceName = (char *)"test";
108 filter[0].serviceUuid = (unsigned char*)"FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
109 filter[0].serviceUuidMask = (unsigned char*)"FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
110 filter[0].serviceUuidLength = sizeof("FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF");
111 unsigned char test1[1];
112 unsigned char test2[1];
113 unsigned char test3[1];
114 unsigned char test4[1];
115 filter[0].serviceData = test1;
116 filter[0].serviceDataMask = test2;
117 filter[0].manufactureData = test3;
118 filter[0].manufactureDataMask = test4;
119 filter[0].serviceData[0] = 1;
120 filter[0].serviceDataMask[0] = 1;
121 filter[0].manufactureData[0] = 1;
122 filter[0].manufactureDataMask[0] = 1;
123 filter[0].serviceDataLength = 1;
124 filter[0].manufactureDataLength = 1;
125 filter[0].manufactureId = 1;
126 int filterSize = sizeof(filter) / sizeof(BleScanNativeFilter);
127 int res = BleStartScanEx(scanerId, &configs, filter, filterSize);
128 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
129
130 filter[0].address = nullptr;
131 filter[0].deviceName = nullptr;
132 filter[0].serviceUuidMask = nullptr;
133 filter[0].serviceData = nullptr;
134 filter[0].manufactureData = nullptr;
135 res = BleStartScanEx(scanerId, &configs, filter, filterSize);
136 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
137
138 filter[0].serviceData = test1;
139 filter[0].manufactureData = test3;
140 filter[0].serviceDataMask = nullptr;
141 filter[0].manufactureDataMask = nullptr;
142 filter[0].serviceUuid = nullptr;
143 res = BleStartScanEx(scanerId, &configs, filter, filterSize);
144 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
145 }
146
147 /*
148 * @tc.name: GattCTest_004
149 * @tc.desc: Test BleStartScanEx when serviceUuid's length is random
150 * @tc.type: FUNC
151 * @tc.require: issueI5OH5C
152 */
153 HWTEST_F(GattCTest, GattCTest_004, TestSize.Level1)
154 {
155 BleScanConfigs configs;
156 configs.reportDelayMillis = 0;
157 configs.scanMode = SCAN_MODE_LOW_POWER;
158 configs.legacy = true;
159 configs.phy = PHY_LE_ALL_SUPPORTED;
160
161 BleScanNativeFilter filter[1];
162 filter[0].address = nullptr;
163 filter[0].deviceName = nullptr;
164 filter[0].serviceUuid = (unsigned char*)"";
165 filter[0].serviceUuidMask = (unsigned char*)"";
166 filter[0].serviceUuidLength = 0;
167 filter[0].serviceData = nullptr;
168 filter[0].manufactureData = nullptr;
169 int filterSize = sizeof(filter) / sizeof(BleScanNativeFilter);
170 int res = BleStartScanEx(scanerId, &configs, filter, filterSize);
171 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
172
173 filter[0].serviceUuid = (unsigned char*)"FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
174 filter[0].serviceUuidMask = (unsigned char*)"FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
175 filter[0].serviceUuidLength = sizeof("FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF");
176 res = BleStartScanEx(scanerId, &configs, filter, filterSize);
177 EXPECT_EQ(res, OHOS_BT_STATUS_SUCCESS);
178 }
179 } // namespace Bluetooth
180 } // namespace OHOS
181