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