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 "common_lib_test.h"
17 #include <gtest/gtest.h>
18 #include <stdbool.h>
19 #include <stdint.h>
20 #include <stdlib.h>
21 #include <string.h>
22 #include <stddef.h>
23 #include "securec.h"
24
25 using namespace std;
26 using namespace testing::ext;
27
28 namespace {
29 static const uint32_t TEST_BUFFER_SIZE = 16;
30 static const uint32_t TEST_INVALID_BUFFER_SIZE = 0;
31 static const uint32_t TEST_LENGTH_ZERO = 0;
32 static const uint32_t TEST_SRC_DATA = 4;
33 static const uint32_t TEST_UINT32_SIZE = 4;
34 static const uint32_t MAX_TLV_LENGTH = 32768;
35 const uint32_t PARCEL_UINT_MAX = 0xffffffffU;
36 static const char *TEST_JSON_STR = "{\"name\":\"test_name\", \"age\":18}";
37 static const char *TEST_JSON_STR_ARR = "[{\"name\":\"Tom1\",\"age\":18},{\"name\":\"Tom2\",\"age\":19}]";
38 static const char *TEST_STR = "test_str";
39 static const char TEST_CHAR = '0';
40
41 class CommonLibTest : public testing::Test
42 {
43 public:
44 static void SetUpTestCase();
45 static void TearDownTestCase();
46 void SetUp();
47 void TearDown();
48 };
49
SetUpTestCase()50 void CommonLibTest::SetUpTestCase() {}
TearDownTestCase()51 void CommonLibTest::TearDownTestCase() {}
SetUp()52 void CommonLibTest::SetUp() {}
TearDown()53 void CommonLibTest::TearDown() {}
54
55 HWTEST_F(CommonLibTest, HcParcelCreateTest001, TestSize.Level0)
56 {
57 HcParcel parcelNullData = CreateParcel(TEST_INVALID_BUFFER_SIZE, PARCEL_DEFAULT_ALLOC_UNIT);
58 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, PARCEL_DEFAULT_ALLOC_UNIT);
59 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
60 uint32_t invalidLength = GetParcelDataSize(nullptr);
61 EXPECT_EQ(invalidLength, TEST_LENGTH_ZERO);
62 uint32_t validLength = GetParcelDataSize(&parcelWithData);
63 EXPECT_EQ(validLength, TEST_UINT32_SIZE);
64 const char *invalidData = GetParcelData(nullptr);
65 EXPECT_EQ(invalidData, nullptr);
66 const char *validData = GetParcelData(&parcelWithData);
67 EXPECT_NE(validData, nullptr);
68 const char *invalidLastChar = GetParcelLastChar(nullptr);
69 EXPECT_EQ(invalidLastChar, nullptr);
70 const char *validLastChar = GetParcelLastChar(&parcelWithData);
71 EXPECT_NE(validLastChar, nullptr);
72 ClearParcel(&parcelWithData);
73 ResetParcel(&parcelWithData, TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
74 DeleteParcel(nullptr);
75 DeleteParcel(&parcelNullData);
76 DeleteParcel(&parcelWithData);
77 }
78
79 HWTEST_F(CommonLibTest, HcParcelReadTest001, TestSize.Level0)
80 {
81 uint32_t num = 0;
82 uint32_t uintDataSize = sizeof(uint32_t);
83 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
84 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
85 HcBool ret = ParcelReadWithoutPopData(&parcelWithData, &num, uintDataSize);
86 EXPECT_EQ(ret, HC_TRUE);
87 ret = ParcelRead(nullptr, nullptr, uintDataSize);
88 EXPECT_EQ(ret, HC_FALSE);
89 ret = ParcelRead(&parcelWithData, &num, uintDataSize);
90 EXPECT_EQ(ret, HC_TRUE);
91 parcelWithData.beginPos = PARCEL_UINT_MAX - uintDataSize;
92 ret = ParcelRead(&parcelWithData, &num, uintDataSize);
93 parcelWithData.beginPos = 0;
94 parcelWithData.endPos = 0;
95 ret = ParcelRead(&parcelWithData, &num, uintDataSize);
96 EXPECT_EQ(ret, HC_FALSE);
97 DeleteParcel(&parcelWithData);
98 }
99
100 HWTEST_F(CommonLibTest, HcParcelEraseBlockTest001, TestSize.Level0)
101 {
102 uint32_t start = 0;
103 uint32_t num = 0;
104 uint32_t uintDataSize = sizeof(uint32_t);
105 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
106 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
107 HcBool ret = ParcelEraseBlock(nullptr, start, uintDataSize, &num);
108 EXPECT_EQ(ret, HC_FALSE);
109 ret = ParcelEraseBlock(&parcelWithData, PARCEL_UINT_MAX, uintDataSize, &num);
110 EXPECT_EQ(ret, HC_FALSE);
111 ret = ParcelEraseBlock(&parcelWithData, PARCEL_UINT_MAX - uintDataSize, uintDataSize, &num);
112 EXPECT_EQ(ret, HC_FALSE);
113 ret = ParcelEraseBlock(&parcelWithData, start, uintDataSize, &num);
114 EXPECT_EQ(ret, HC_TRUE);
115 DeleteParcel(&parcelWithData);
116 }
117
118 HWTEST_F(CommonLibTest, HcParcelRevertTest001, TestSize.Level0)
119 {
120 uint32_t num = 0;
121 uint32_t uintDataSize = sizeof(uint32_t);
122 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
123 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
124 HcBool ret = ParcelReadRevert(&parcelWithData, &num, TEST_LENGTH_ZERO);
125 EXPECT_EQ(ret, HC_FALSE);
126 ret = ParcelReadRevert(&parcelWithData, &num, uintDataSize);
127 EXPECT_EQ(ret, HC_TRUE);
128 ret = ParcelWriteRevert(nullptr, &num, uintDataSize);
129 DeleteParcel(&parcelWithData);
130 }
131
132 HWTEST_F(CommonLibTest, HcParcelReadWrite001, TestSize.Level0)
133 {
134 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
135 int32_t srcInt = 0;
136 int32_t dstInt = 0;
137 HcBool ret = ParcelWriteInt32(&parcelWithData, srcInt);
138 ret = ParcelReadInt32(&parcelWithData, &dstInt);
139 EXPECT_EQ(ret, HC_TRUE);
140 uint32_t srcUint32 = 0;
141 uint32_t dstUint32 = 0;
142 ret = ParcelWriteUint32(&parcelWithData, srcUint32);
143 ret = ParcelReadUint32(&parcelWithData, &dstUint32);
144 EXPECT_EQ(ret, HC_TRUE);
145 short srcInt16 = 0;
146 short dstInt16 = 0;
147 ret = ParcelWriteInt16(&parcelWithData, srcInt16);
148 ret = ParcelReadInt16(&parcelWithData, &dstInt16);
149 EXPECT_EQ(ret, HC_TRUE);
150 uint16_t srcUint16 = 0;
151 uint16_t dstUint16 = 0;
152 ret = ParcelWriteUint16(&parcelWithData, srcUint16);
153 ret = ParcelReadUint16(&parcelWithData, &dstUint16);
154 EXPECT_EQ(ret, HC_TRUE);
155 char srcInt8 = 0;
156 char dstInt8 = 0;
157 ret = ParcelWriteInt8(&parcelWithData, srcInt8);
158 ret = ParcelReadInt8(&parcelWithData, &dstInt8);
159 EXPECT_EQ(ret, HC_TRUE);
160 uint8_t srcUint8 = 0;
161 uint8_t dstUint8 = 0;
162 ret = ParcelWriteUint8(&parcelWithData, srcUint8);
163 ret = ParcelReadUint8(&parcelWithData, &dstUint8);
164 EXPECT_EQ(ret, HC_TRUE);
165 int64_t srcInt64 = 0;
166 int64_t dstInt64 = 0;
167 ret = ParcelWriteInt64(&parcelWithData, srcInt64);
168 ret = ParcelReadInt64(&parcelWithData, &dstInt64);
169 EXPECT_EQ(ret, HC_TRUE);
170 uint64_t srcUint64 = 0;
171 uint64_t dstUint64 = 0;
172 ret = ParcelWriteUint64(&parcelWithData, srcUint64);
173 ret = ParcelReadUint64(&parcelWithData, &dstUint64);
174 EXPECT_EQ(ret, HC_TRUE);
175 DeleteParcel(&parcelWithData);
176 }
177
178 HWTEST_F(CommonLibTest, HcParcelRealloc001, TestSize.Level0)
179 {
180 HcParcel parcelSrc = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
181 HcParcel parcelDst = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
182 HcBool ret = ParcelWriteInt32(&parcelSrc, TEST_SRC_DATA);
183 EXPECT_EQ(ret, HC_TRUE);
184 uint32_t data01 = 0;
185 uint64_t data02 = 0;
186 uint32_t validLen = sizeof(data01);
187 uint32_t invalidLen = sizeof(data02);
188 ret = ParcelReadParcel(nullptr, nullptr, validLen, HC_FALSE);
189 EXPECT_EQ(ret, HC_FALSE);
190 ret = ParcelReadParcel(&parcelSrc, &parcelDst, invalidLen, HC_FALSE);
191 EXPECT_EQ(ret, HC_FALSE);
192 ret = ParcelReadParcel(&parcelSrc, &parcelDst, TEST_LENGTH_ZERO, HC_FALSE);
193 EXPECT_EQ(ret, HC_FALSE);
194 ret = ParcelReadParcel(&parcelSrc, &parcelDst, validLen, HC_FALSE);
195 EXPECT_EQ(ret, HC_TRUE);
196 DeleteParcel(&parcelSrc);
197 DeleteParcel(&parcelDst);
198 }
199
200 HWTEST_F(CommonLibTest, HcParcelCopy001, TestSize.Level0)
201 {
202 HcParcel parcelSrc = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
203 HcParcel parcelDst = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
204 HcBool ret = ParcelCopy(nullptr, nullptr);
205 EXPECT_EQ(ret, HC_FALSE);
206 ret = ParcelCopy(&parcelSrc, &parcelDst);
207 EXPECT_EQ(ret, HC_TRUE);
208 ret = ParcelWriteInt32(&parcelSrc, TEST_SRC_DATA);
209 EXPECT_EQ(ret, HC_TRUE);
210 ret = ParcelCopy(&parcelSrc, &parcelDst);
211 EXPECT_EQ(ret, HC_TRUE);
212 DeleteParcel(&parcelSrc);
213 DeleteParcel(&parcelDst);
214 }
215
216 HWTEST_F(CommonLibTest, HcParcelReadWriteRevert001, TestSize.Level0)
217 {
218 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
219 int32_t srcInt = 0;
220 int32_t dstInt = 0;
221 HcBool ret = ParcelWriteInt32Revert(&parcelWithData, srcInt);
222 ret = ParcelReadInt32Revert(&parcelWithData, &dstInt);
223 EXPECT_EQ(ret, HC_TRUE);
224 uint32_t srcUint32 = 0;
225 uint32_t dstUint32 = 0;
226 ret = ParcelWriteUint32Revert(&parcelWithData, srcUint32);
227 ret = ParcelReadUint32Revert(&parcelWithData, &dstUint32);
228 EXPECT_EQ(ret, HC_TRUE);
229 short srcInt16 = 0;
230 short dstInt16 = 0;
231 ret = ParcelWriteInt16Revert(&parcelWithData, srcInt16);
232 ret = ParcelReadInt16Revert(&parcelWithData, &dstInt16);
233 EXPECT_EQ(ret, HC_TRUE);
234 uint16_t srcUint16 = 0;
235 uint16_t dstUint16 = 0;
236 ret = ParcelWriteUint16Revert(&parcelWithData, srcUint16);
237 ret = ParcelReadUint16Revert(&parcelWithData, &dstUint16);
238 EXPECT_EQ(ret, HC_TRUE);
239 char srcInt8 = 0;
240 char dstInt8 = 0;
241 ret = ParcelWriteInt8Revert(&parcelWithData, srcInt8);
242 ret = ParcelReadInt8Revert(&parcelWithData, &dstInt8);
243 EXPECT_EQ(ret, HC_TRUE);
244 uint8_t srcUint8 = 0;
245 uint8_t dstUint8 = 0;
246 ret = ParcelWriteUint8Revert(&parcelWithData, srcUint8);
247 ret = ParcelReadUint8Revert(&parcelWithData, &dstUint8);
248 EXPECT_EQ(ret, HC_TRUE);
249 int64_t srcInt64 = 0;
250 int64_t dstInt64 = 0;
251 ret = ParcelWriteInt64Revert(&parcelWithData, srcInt64);
252 ret = ParcelReadInt64Revert(&parcelWithData, &dstInt64);
253 EXPECT_EQ(ret, HC_TRUE);
254 uint64_t srcUint64 = 0;
255 uint64_t dstUint64 = 0;
256 ret = ParcelWriteUint64Revert(&parcelWithData, srcUint64);
257 ret = ParcelReadUint64Revert(&parcelWithData, &dstUint64);
258 EXPECT_EQ(ret, HC_TRUE);
259 DeleteParcel(&parcelWithData);
260 }
261
262 HWTEST_F(CommonLibTest, HcParcelPop001, TestSize.Level0)
263 {
264 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
265 HcBool ret = ParcelWriteInt32(&parcelWithData, TEST_SRC_DATA);
266 EXPECT_EQ(ret, HC_TRUE);
267 ret = ParcelPopBack(&parcelWithData, sizeof(uint32_t));
268 EXPECT_EQ(ret, HC_TRUE);
269 ret = ParcelPopBack(&parcelWithData, sizeof(uint32_t));
270 EXPECT_EQ(ret, HC_FALSE);
271 ret = ParcelWriteInt32(&parcelWithData, TEST_SRC_DATA);
272 EXPECT_EQ(ret, HC_TRUE);
273 ret = ParcelPopFront(&parcelWithData, sizeof(uint32_t));
274 EXPECT_EQ(ret, HC_TRUE);
275 ret = ParcelPopFront(&parcelWithData, sizeof(uint32_t));
276 EXPECT_EQ(ret, HC_FALSE);
277 DeleteParcel(&parcelWithData);
278 }
279
280 HWTEST_F(CommonLibTest, HcStringTest001, TestSize.Level0)
281 {
282 HcString selfStr = CreateString();
283 HcString srcStr = CreateString();
284 HcBool ret = StringSetPointer(&srcStr, TEST_STR);
285 EXPECT_EQ(ret, HC_TRUE);
286 ret = StringAppend(nullptr, srcStr);
287 EXPECT_EQ(ret, HC_FALSE);
288 ret = StringAppend(&selfStr, srcStr);
289 EXPECT_EQ(ret, HC_TRUE);
290 ret = StringAppendPointer(nullptr, TEST_STR);
291 EXPECT_EQ(ret, HC_FALSE);
292 ret = StringAppendPointer(&selfStr, TEST_STR);
293 EXPECT_EQ(ret, HC_TRUE);
294 ret = StringAppendChar(nullptr, TEST_CHAR);
295 EXPECT_EQ(ret, HC_FALSE);
296 ret = StringAppendChar(&selfStr, TEST_CHAR);
297 EXPECT_EQ(ret, HC_TRUE);
298 ret = StringSet(nullptr, srcStr);
299 EXPECT_EQ(ret, HC_FALSE);
300 ret = StringSet(&selfStr, srcStr);
301 EXPECT_EQ(ret, HC_TRUE);
302 ret = StringSetPointer(nullptr, TEST_STR);
303 EXPECT_EQ(ret, HC_FALSE);
304 ret = StringSetPointer(&selfStr, TEST_STR);
305 EXPECT_EQ(ret, HC_TRUE);
306 const char *retStr = StringGet(nullptr);
307 EXPECT_EQ(retStr, nullptr);
308 retStr = StringGet(&selfStr);
309 EXPECT_NE(retStr, nullptr);
310 uint32_t retLen = StringLength(nullptr);
311 EXPECT_EQ(retLen, 0);
312 retLen = StringLength(&selfStr);
313 EXPECT_NE(retLen, 0);
314 DeleteString(&selfStr);
315 retLen = StringLength(&selfStr);
316 EXPECT_EQ(retLen, 0);
317 DeleteString(&srcStr);
318 }
319
320 HWTEST_F(CommonLibTest, HcCreateJsonTest001, TestSize.Level0)
321 {
322 CJson *invalidJson = CreateJsonFromString(nullptr);
323 EXPECT_EQ(invalidJson, nullptr);
324 CJson *validJson = CreateJsonFromString(TEST_JSON_STR);
325 EXPECT_NE(validJson, nullptr);
326 invalidJson = DuplicateJson(nullptr);
327 EXPECT_EQ(invalidJson, nullptr);
328 FreeJson(validJson);
329 }
330
331 HWTEST_F(CommonLibTest, HcDeleteJsonTest001, TestSize.Level0)
332 {
333 CJson *validJson = CreateJsonFromString(TEST_JSON_STR);
334 EXPECT_NE(validJson, nullptr);
335 CJson *jsonItem = DetachItemFromJson(nullptr, "age");
336 EXPECT_EQ(jsonItem, nullptr);
337 jsonItem = DetachItemFromJson(validJson, "age");
338 EXPECT_NE(jsonItem, nullptr);
339 DeleteItemFromJson(nullptr, "name");
340 DeleteItemFromJson(validJson, "name");
341 DeleteAllItemExceptOne(nullptr, "name");
342 DeleteAllItemExceptOne(validJson, "name");
343 DeleteAllItem(nullptr);
344 DeleteAllItem(validJson);
345 FreeJson(validJson);
346 }
347
348 HWTEST_F(CommonLibTest, HcJsonGetTest001, TestSize.Level0)
349 {
350 CJson *validJson = CreateJsonFromString(TEST_JSON_STR);
351 EXPECT_NE(validJson, nullptr);
352 char *jsonStr = PackJsonToString(nullptr);
353 EXPECT_EQ(jsonStr, nullptr);
354 jsonStr = PackJsonToString(validJson);
355 EXPECT_NE(jsonStr, nullptr);
356 int32_t itemNum = GetItemNum(nullptr);
357 EXPECT_EQ(itemNum, 0);
358 itemNum = GetItemNum(validJson);
359 EXPECT_NE(itemNum, 0);
360 const char *itemKey = GetItemKey(nullptr);
361 EXPECT_EQ(itemKey, nullptr);
362 itemKey = GetItemKey(validJson);
363 EXPECT_EQ(itemKey, nullptr);
364 CJson *jsonObj = GetObjFromJson(nullptr, "name");
365 EXPECT_EQ(jsonObj, nullptr);
366 jsonObj = GetObjFromJson(validJson, "name");
367 EXPECT_NE(jsonObj, nullptr);
368 jsonObj = GetItemFromArray(nullptr, 0);
369 EXPECT_EQ(jsonObj, nullptr);
370 jsonObj = GetItemFromArray(validJson, 0);
371 EXPECT_NE(jsonObj, nullptr);
372 FreeJson(validJson);
373 }
374
375 HWTEST_F(CommonLibTest, HcJsonGetTest002, TestSize.Level0)
376 {
377 CJson *validJson = CreateJsonFromString(TEST_JSON_STR);
378 EXPECT_NE(validJson, nullptr);
379 const char *strObj = GetStringFromJson(nullptr, "name");
380 EXPECT_EQ(strObj, nullptr);
381 strObj = GetStringFromJson(validJson, "name");
382 EXPECT_NE(strObj, nullptr);
383 char byteData[] = "test_byte";
384 int32_t ret = GetByteFromJson(nullptr, "name", nullptr, sizeof(byteData));
385 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
386 ret = GetByteFromJson(validJson, "gender", reinterpret_cast<uint8_t *>(byteData), sizeof(byteData));
387 EXPECT_EQ(ret, CLIB_ERR_JSON_GET);
388 ret = GetByteFromJson(validJson, "name", reinterpret_cast<uint8_t *>(byteData), TEST_LENGTH_ZERO);
389 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
390 int32_t valueInt32 = 0;
391 ret = GetIntFromJson(nullptr, "age", &valueInt32);
392 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
393 uint32_t valueUint32 = 0;
394 ret = GetUnsignedIntFromJson(nullptr, "age", &valueUint32);
395 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
396 int64_t valueInt64 = 0;
397 ret = GetInt64FromJson(nullptr, "age", &valueInt64);
398 EXPECT_EQ(ret, CLIB_ERR_JSON_GET);
399 bool valueBool = false;
400 ret = GetBoolFromJson(nullptr, "age", &valueBool);
401 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
402 CJson *jsonObj = GetObjFromJson(validJson, "name");
403 char *valueStr = GetStringValue(jsonObj);
404 EXPECT_NE(valueStr, nullptr);
405 FreeJson(validJson);
406 }
407
408 HWTEST_F(CommonLibTest, HcJsonAddTest001, TestSize.Level0)
409 {
410 CJson *jsonArr = CreateJsonFromString(TEST_JSON_STR_ARR);
411 EXPECT_NE(jsonArr, nullptr);
412 CJson *childObj = CreateJsonFromString(TEST_JSON_STR);
413 EXPECT_NE(childObj, nullptr);
414 int32_t ret = AddObjToJson(nullptr, "name", nullptr);
415 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
416 ret = AddObjToJson(jsonArr, "gender", childObj);
417 EXPECT_EQ(ret, CLIB_SUCCESS);
418 ret = AddObjToJson(jsonArr, "name", childObj);
419 EXPECT_EQ(ret, CLIB_SUCCESS);
420 ret = AddObjToArray(nullptr, childObj);
421 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
422 ret = AddObjToArray(childObj, jsonArr);
423 EXPECT_EQ(ret, CLIB_ERR_INVALID_PARAM);
424 ret = AddObjToArray(jsonArr, childObj);
425 EXPECT_EQ(ret, CLIB_SUCCESS);
426 ret = AddStringToArray(nullptr, TEST_STR);
427 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
428 ret = AddStringToArray(childObj, TEST_STR);
429 EXPECT_EQ(ret, CLIB_ERR_INVALID_PARAM);
430 ret = AddStringToArray(jsonArr, TEST_STR);
431 EXPECT_EQ(ret, CLIB_SUCCESS);
432 ret = AddStringToJson(nullptr, "name", TEST_STR);
433 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
434 ret = AddStringToJson(childObj, "gender", TEST_STR);
435 EXPECT_EQ(ret, CLIB_SUCCESS);
436 ret = AddStringToJson(childObj, "name", TEST_STR);
437 EXPECT_EQ(ret, CLIB_SUCCESS);
438 FreeJson(jsonArr);
439 }
440
441 HWTEST_F(CommonLibTest, HcJsonAddTest002, TestSize.Level0)
442 {
443 CJson *childObj = CreateJsonFromString(TEST_JSON_STR);
444 EXPECT_NE(childObj, nullptr);
445 char byteData[] = "test_byte";
446 int32_t ret = AddByteToJson(nullptr, "name", reinterpret_cast<uint8_t *>(byteData), sizeof(byteData));
447 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
448 ret = AddByteToJson(childObj, "gender", reinterpret_cast<uint8_t *>(byteData), sizeof(byteData));
449 EXPECT_EQ(ret, CLIB_SUCCESS);
450 ret = AddByteToJson(childObj, "name", reinterpret_cast<uint8_t *>(byteData), sizeof(byteData));
451 EXPECT_EQ(ret, CLIB_SUCCESS);
452 ret = AddBoolToJson(nullptr, "name", false);
453 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
454 ret = AddBoolToJson(childObj, "gender", false);
455 EXPECT_EQ(ret, CLIB_SUCCESS);
456 ret = AddBoolToJson(childObj, "name", false);
457 EXPECT_EQ(ret, CLIB_SUCCESS);
458 int32_t valueInt32 = 0;
459 ret = AddIntToJson(nullptr, "name", valueInt32);
460 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
461 ret = AddIntToJson(childObj, "gender", valueInt32);
462 EXPECT_EQ(ret, CLIB_SUCCESS);
463 ret = AddIntToJson(childObj, "name", valueInt32);
464 EXPECT_EQ(ret, CLIB_SUCCESS);
465 int64_t valueInt64 = 0;
466 ret = AddInt64StringToJson(nullptr, "name", valueInt64);
467 EXPECT_EQ(ret, CLIB_ERR_JSON_ADD);
468 ret = AddInt64StringToJson(childObj, "name", valueInt64);
469 EXPECT_EQ(ret, CLIB_SUCCESS);
470 const char *const strArr[] = {"first test data", "second test data"};
471 ret = AddStringArrayToJson(nullptr, "name", strArr, sizeof(strArr) / sizeof(strArr[0]));
472 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
473 ret = AddStringArrayToJson(childObj, "name", strArr, sizeof(strArr) / sizeof(strArr[0]));
474 EXPECT_EQ(ret, CLIB_SUCCESS);
475 }
476
477 HWTEST_F(CommonLibTest, HcClearJsonTest001, TestSize.Level0)
478 {
479 CJson *jsonObj = CreateJsonFromString(TEST_JSON_STR);
480 EXPECT_NE(jsonObj, nullptr);
481 ClearSensitiveStringInJson(nullptr, "name");
482 ClearSensitiveStringInJson(jsonObj, "gender");
483 ClearSensitiveStringInJson(jsonObj, "name");
484 FreeJson(jsonObj);
485 }
486
487 HWTEST_F(CommonLibTest, HcStringUtilTest001, TestSize.Level0)
488 {
489 const uint8_t byteData[] = "1234";
490 const char hexData[] = "ABCD";
491 const char invalidData[] = "GHJK";
492 uint32_t byteSize = sizeof(byteData);
493 char hexStr[TEST_BUFFER_SIZE] = { 0 };
494 int32_t ret = ByteToHexString(nullptr, byteSize, hexStr, TEST_BUFFER_SIZE);
495 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
496 ret = ByteToHexString(byteData, byteSize, hexStr, TEST_LENGTH_ZERO);
497 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
498 ret = ByteToHexString(byteData, byteSize, hexStr, TEST_BUFFER_SIZE);
499 EXPECT_EQ(ret, CLIB_SUCCESS);
500 uint8_t byteStr[TEST_BUFFER_SIZE] = { 0 };
501 ret = HexStringToByte(nullptr, byteStr, TEST_BUFFER_SIZE);
502 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
503 ret = HexStringToByte(hexData, byteStr, TEST_LENGTH_ZERO);
504 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
505 ret = HexStringToByte(invalidData, byteStr, TEST_BUFFER_SIZE);
506 EXPECT_EQ(ret, CLIB_ERR_INVALID_PARAM);
507 ret = HexStringToByte(hexData, byteStr, TEST_BUFFER_SIZE);
508 EXPECT_EQ(ret, CLIB_SUCCESS);
509 const char intStr[] = "10";
510 int64_t int64Res = StringToInt64(intStr);
511 EXPECT_EQ(ret, 0);
512 int64Res = StringToInt64(intStr);
513 EXPECT_EQ(ret, 0);
514 }
515
516 HWTEST_F(CommonLibTest, HcStringUtilTest002, TestSize.Level0)
517 {
518 const uint8_t byteData[] = "1234";
519 uint32_t byteSize = sizeof(byteData) / sizeof(byteData[0]);
520 uint32_t invalidByteLen = 0;
521 uint8_t byteStrBase64[TEST_BUFFER_SIZE] = { 0 };
522 int32_t ret = Base64StringToByte(nullptr, nullptr, nullptr);
523 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
524 ret = Base64StringToByte("a", byteStrBase64, &byteSize);
525 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
526 ret = Base64StringToByte("abcd", byteStrBase64, &invalidByteLen);
527 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
528 ret = Base64StringToByte("****", byteStrBase64, &byteSize);
529 EXPECT_EQ(ret, CLIB_ERR_INVALID_PARAM);
530 ret = Base64StringToByte("abcd", byteStrBase64, &byteSize);
531 EXPECT_EQ(ret, CLIB_SUCCESS);
532 char byte64Str[TEST_BUFFER_SIZE] = { 0 };
533 ret = ByteToBase64String(nullptr, byteSize, nullptr, TEST_BUFFER_SIZE);
534 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
535 ret = ByteToBase64String(byteData, UINT32_MAX, byte64Str, TEST_BUFFER_SIZE);
536 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
537 ret = ByteToBase64String(byteData, byteSize, byte64Str, TEST_LENGTH_ZERO);
538 EXPECT_EQ(ret, CLIB_ERR_INVALID_LEN);
539 ret = ByteToBase64String(byteData, byteSize, byte64Str, TEST_BUFFER_SIZE);
540 EXPECT_EQ(ret, CLIB_SUCCESS);
541 char *desStr = nullptr;
542 ret = ToUpperCase(nullptr, &desStr);
543 EXPECT_EQ(ret, CLIB_ERR_NULL_PTR);
544 ret = ToUpperCase("abcdefg", &desStr);
545 EXPECT_EQ(ret, CLIB_SUCCESS);
546 }
547
548 HWTEST_F(CommonLibTest, ParseTlvHeadTest001, TestSize.Level0)
549 {
550 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
551 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
552 TlvBase tlvBase = {
553 .tag = 0,
554 .length = 0,
555 .checkTag = 1,
556 };
557 HcBool ret = ParseTlvHead(&tlvBase, nullptr);
558 EXPECT_EQ(ret, HC_FALSE);
559 ret = ParseTlvHead(&tlvBase, &parcelWithData);
560 EXPECT_EQ(ret, HC_FALSE);
561 parcelWithData.beginPos = PARCEL_UINT_MAX;
562 tlvBase.checkTag = tlvBase.length;
563 ret = ParseTlvHead(&tlvBase, &parcelWithData);
564 EXPECT_EQ(ret, HC_FALSE);
565 parcelWithData.beginPos = 0;
566 tlvBase.length = MAX_TLV_LENGTH + 1;
567 ret = ParseTlvHead(&tlvBase, &parcelWithData);
568 EXPECT_EQ(ret, HC_FALSE);
569 tlvBase.length = 0;
570 ret = ParseTlvHead(&tlvBase, &parcelWithData);
571 EXPECT_EQ(ret, HC_FALSE);
572 DeleteParcel(&parcelWithData);
573 }
574
575 HWTEST_F(CommonLibTest, ParseTlvNodeTest001, TestSize.Level0)
576 {
577 HcParcel parcelWithData = CreateParcel(TEST_BUFFER_SIZE, TEST_BUFFER_SIZE);
578 ParcelWriteUint32(&parcelWithData, TEST_SRC_DATA);
579 TlvBase tlvBase = {
580 .tag = 0,
581 .length = GetParcelDataSize(&parcelWithData) + 1,
582 .checkTag = 1,
583 };
584 int32_t ret = ParseTlvNode(nullptr, &parcelWithData, true);
585 EXPECT_EQ(ret, TLV_FAIL);
586 ret = ParseTlvNode(&tlvBase, &parcelWithData, true);
587 EXPECT_EQ(ret, TLV_FAIL);
588 DeleteParcel(&parcelWithData);
589 }
590 }