• 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 <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 }