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