1 /*
2 * Copyright (C) 2021 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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 #include "securec.h"
19 #include "bluetooth_gatt_characteristic.h"
20 #include "bluetooth_gatt_descriptor.h"
21 #include "uuid.h"
22 #include "bluetooth_def.h"
23 #include <memory>
24
25 using namespace testing;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace Bluetooth {
30 class GattCharacteristicTest : public testing::Test {
31 public:
GattCharacteristicTest()32 GattCharacteristicTest()
33 {}
~GattCharacteristicTest()34 ~GattCharacteristicTest()
35 {}
36
37 GattCharacteristic *pGattCharacteristic = nullptr;
38 static void SetUpTestCase(void);
39 static void TearDownTestCase(void);
40 void SetUp();
41 void TearDown();
42 public:
43 UUID uuid_;
44 uint16_t handle_ = 1;
45 const int permissions_ = 100;
46 const int properties_ = 200;
47 };
48
SetUpTestCase(void)49 void GattCharacteristicTest::SetUpTestCase(void)
50 {}
TearDownTestCase(void)51 void GattCharacteristicTest::TearDownTestCase(void)
52 {}
SetUp()53 void GattCharacteristicTest::SetUp()
54 {
55 uuid_ = UUID::RandomUUID();
56 }
57
TearDown()58 void GattCharacteristicTest::TearDown()
59 {
60
61 }
62
63 /*
64 * @tc.number: GattClient001
65 * @tc.name: GattCharacteristic4
66 */
67 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GattCharacteristic4, TestSize.Level1)
68 {
69 GTEST_LOG_(INFO) << "GattCharacteristic_GattCharacteristic(4 parameters) start";
70 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
71 GTEST_LOG_(INFO) << "GattCharacteristic_GattCharacteristic(4 parameters) end";
72 }
73
74 /*
75 * @tc.number: GattClient002
76 * @tc.name: GattCharacteristic3
77 */
78 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GattCharacteristic3, TestSize.Level1)
79 {
80 GTEST_LOG_(INFO) << "GattCharacteristic_GattCharacteristic(3 parameters) start";
81 GTEST_LOG_(INFO) << "GattCharacteristic_GattCharacteristic(3 parameters) end";
82 }
83
84 /*
85 * @tc.number: GattClient003
86 * @tc.name: AddDescriptor
87 */
88 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_AddDescriptor, TestSize.Level1)
89 {
90 GTEST_LOG_(INFO) << "GattCharacteristic_AddDescriptor start";
91 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
92 GattDescriptor *pdescriptor = new GattDescriptor(uuid_, permissions_);
93 pGattCharacteristic->AddDescriptor(*pdescriptor);
94 GTEST_LOG_(INFO) << "GattCharacteristic_AddDescriptor end";
95 }
96
97 /*
98 * @tc.number: GattClient004
99 * @tc.name: GetDescriptor
100 */
101 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetDescriptor, TestSize.Level1)
102 {
103 GTEST_LOG_(INFO) << "GattCharacteristic_GetDescriptor start";
104 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
105 GattDescriptor *pdescriptor = new GattDescriptor(uuid_, permissions_);
106 pGattCharacteristic->AddDescriptor(*pdescriptor);
107
108 GattDescriptor *pdescriptorTmp = pGattCharacteristic->GetDescriptor(uuid_);
109 if (pdescriptorTmp->GetUuid().Equals(uuid_)) {
110 EXPECT_TRUE(true);
111 GTEST_LOG_(INFO) << "GattCharacteristic_GetDescriptor returns correctly";
112 }
113 GTEST_LOG_(INFO) << "GattCharacteristic_GetDescriptor end";
114 }
115
116 /*
117 * @tc.number: GattClient005
118 * @tc.name: GetHandle
119 */
120 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetHandle, TestSize.Level1)
121 {
122 GTEST_LOG_(INFO) << "GattCharacteristic_GetHandle start";
123 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
124 uint16_t tempHandle = pGattCharacteristic->GetHandle();
125 EXPECT_EQ(handle_, tempHandle);
126 GTEST_LOG_(INFO) << "GattCharacteristic_GetHandle end";
127 }
128
129 /*
130 * @tc.number: GattClient006
131 * @tc.name: GetPermissions
132 */
133 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetPermissions, TestSize.Level1)
134 {
135 GTEST_LOG_(INFO) << "GattCharacteristic_GetPermissions start";
136 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
137 int tempPer = pGattCharacteristic->GetPermissions();
138 EXPECT_EQ(permissions_, tempPer);
139 GTEST_LOG_(INFO) << "GattCharacteristic_GetPermissions end";
140 }
141
142 /*
143 * @tc.number: GattClient007
144 * @tc.name: GetProperties
145 */
146 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetProperties, TestSize.Level1)
147 {
148 GTEST_LOG_(INFO) << "GattCharacteristic_GetProperties start";
149 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
150 int tempPro = pGattCharacteristic->GetProperties();
151 EXPECT_EQ(properties_, tempPro);
152 GTEST_LOG_(INFO) << "GattCharacteristic_GetProperties end";
153 }
154
155 /*
156 * @tc.number: GattClient008
157 * @tc.name: GetService
158 */
159 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetService, TestSize.Level1)
160 {
161 GTEST_LOG_(INFO) << "GattCharacteristic_GetService start";
162 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
163 GattService *tempGattService = pGattCharacteristic->GetService();
164 if (nullptr == tempGattService) {
165 EXPECT_TRUE(true);
166 GTEST_LOG_(INFO) << "GattCharacteristic_GetService returns correctly";
167 }
168 GTEST_LOG_(INFO) << "GattCharacteristic_GetService end";
169 }
170
171 /*
172 * @tc.number: GattClient009
173 * @tc.name: GetUuid
174 */
175 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetUuid, TestSize.Level1)
176 {
177 GTEST_LOG_(INFO) << "GattCharacteristic_GetUuid start";
178 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
179 UUID tempUuid = pGattCharacteristic->GetUuid();
180 if (tempUuid.Equals(uuid_)) {
181 EXPECT_TRUE(true);
182 GTEST_LOG_(INFO) << "GattCharacteristic_GetUuid returns correctly";
183 }
184 GTEST_LOG_(INFO) << "GattCharacteristic_GetUuid end";
185 }
186
187 /*
188 * @tc.number: GattClient010
189 * @tc.name: SetValue
190 */
191 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_SetValue, TestSize.Level1)
192 {
193 GTEST_LOG_(INFO) << "GattCharacteristic_SetValue start";
194 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
195 size_t length_Set = 1;
196 uint8_t values_Set[1] = {'a'};
197 pGattCharacteristic->SetValue(values_Set, length_Set);
198 GTEST_LOG_(INFO) << "GattCharacteristic_SetValue end";
199 }
200
201 /*
202 * @tc.number: GattClient011
203 * @tc.name: GetValue
204 */
205 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetValue, TestSize.Level1)
206 {
207 GTEST_LOG_(INFO) << "GattCharacteristic_GetValue start";
208 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
209 size_t length_Set = 1;
210 size_t length_Get = 1;
211 size_t *plength_Get = &length_Get;
212 uint8_t values_Set[1] = {'a'};
213 pGattCharacteristic->SetValue(values_Set, length_Set);
214
215 std::unique_ptr<uint8_t[]> values_Get = std::make_unique<uint8_t[]>(length_Get);
216 (void)memcpy_s(values_Get.get(), length_Get, pGattCharacteristic->GetValue(plength_Get).get(), length_Get);
217 const uint8_t *values = static_cast<uint8_t *>(values_Get.get());
218 uint8_t resultValuesArray = values[0];
219 uint8_t resultValuesPointer = *values;
220
221 if ('a' == resultValuesArray) {
222 EXPECT_TRUE(true);
223 GTEST_LOG_(INFO) << "GattCharacteristic_GetValue returns correctly";
224 }
225
226 if ('a' == resultValuesPointer) {
227 EXPECT_TRUE(true);
228 GTEST_LOG_(INFO) << "GattCharacteristic_GetValue returns correctly";
229 }
230
231 GTEST_LOG_(INFO) << "GattCharacteristic_GetValue end";
232 }
233
234 /*
235 * @tc.number: GattClient012
236 * @tc.name: SetWriteType
237 */
238 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_SetWriteType, TestSize.Level1)
239 {
240 GTEST_LOG_(INFO) << "GattCharacteristic_SetWriteType start";
241 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
242 GattCharacteristic::WriteType typeTemp = GattCharacteristic::WriteType::DEFAULT;
243 int returnCode = 0;
244 returnCode = pGattCharacteristic->SetWriteType(typeTemp);
245 EXPECT_EQ(returnCode, 0);
246 GTEST_LOG_(INFO) << "GattCharacteristic_SetWriteType end";
247 }
248
249 /*
250 * @tc.number: GattClient013
251 * @tc.name: GetWriteType
252 */
253 HWTEST_F(GattCharacteristicTest, GattCharacteristic_UnitTest_GetWriteType, TestSize.Level1)
254 {
255 GTEST_LOG_(INFO) << "GattCharacteristic_GetWriteType start";
256 pGattCharacteristic = new GattCharacteristic(uuid_, handle_, permissions_, properties_);
257 GattCharacteristic::WriteType typeTemp = GattCharacteristic::WriteType::DEFAULT;
258 int returnCode = 0;
259 returnCode = pGattCharacteristic->SetWriteType(typeTemp);
260 EXPECT_EQ(returnCode, 0);
261
262 int resultType = pGattCharacteristic->GetWriteType();
263 if (typeTemp == resultType) {
264 EXPECT_TRUE(true);
265 GTEST_LOG_(INFO) << "GattCharacteristic_GetWriteType returns correctly";
266 }
267 GTEST_LOG_(INFO) << "GattCharacteristic_GetWriteType end";
268 }
269
270 } // namespace Bluetooth
271 } // namespace OHOS
272