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 }