mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
Merge pull request #453 from Alanscut/add-return-value
add return value for cJSON_AddItemTo... and cJSON_ReplaceItemxxx
This commit is contained in:
@ -332,13 +332,15 @@ static void cjson_replace_item_in_object_should_preserve_name(void)
|
||||
cJSON root[1] = {{ NULL, NULL, NULL, 0, NULL, 0, 0, NULL }};
|
||||
cJSON *child = NULL;
|
||||
cJSON *replacement = NULL;
|
||||
cJSON_bool flag = false;
|
||||
|
||||
child = cJSON_CreateNumber(1);
|
||||
TEST_ASSERT_NOT_NULL(child);
|
||||
replacement = cJSON_CreateNumber(2);
|
||||
TEST_ASSERT_NOT_NULL(replacement);
|
||||
|
||||
cJSON_AddItemToObject(root, "child", child);
|
||||
flag = cJSON_AddItemToObject(root, "child", child);
|
||||
TEST_ASSERT_TRUE_MESSAGE(flag, "add item to object failed");
|
||||
cJSON_ReplaceItemInObject(root, "child", replacement);
|
||||
|
||||
TEST_ASSERT_TRUE(root->child == replacement);
|
||||
@ -410,19 +412,19 @@ static void cjson_functions_should_not_crash_with_null_pointers(void)
|
||||
cJSON_DeleteItemFromObject(item, NULL);
|
||||
cJSON_DeleteItemFromObjectCaseSensitive(NULL, "item");
|
||||
cJSON_DeleteItemFromObjectCaseSensitive(item, NULL);
|
||||
cJSON_InsertItemInArray(NULL, 0, item);
|
||||
cJSON_InsertItemInArray(item, 0, NULL);
|
||||
TEST_ASSERT_FALSE(cJSON_InsertItemInArray(NULL, 0, item));
|
||||
TEST_ASSERT_FALSE(cJSON_InsertItemInArray(item, 0, NULL));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemViaPointer(NULL, item, item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemViaPointer(item, NULL, item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemViaPointer(item, item, NULL));
|
||||
cJSON_ReplaceItemInArray(item, 0, NULL);
|
||||
cJSON_ReplaceItemInArray(NULL, 0, item);
|
||||
cJSON_ReplaceItemInObject(NULL, "item", item);
|
||||
cJSON_ReplaceItemInObject(item, NULL, item);
|
||||
cJSON_ReplaceItemInObject(item, "item", NULL);
|
||||
cJSON_ReplaceItemInObjectCaseSensitive(NULL, "item", item);
|
||||
cJSON_ReplaceItemInObjectCaseSensitive(item, NULL, item);
|
||||
cJSON_ReplaceItemInObjectCaseSensitive(item, "item", NULL);
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInArray(item, 0, NULL));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInArray(NULL, 0, item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObject(NULL, "item", item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObject(item, NULL, item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObject(item, "item", NULL));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObjectCaseSensitive(NULL, "item", item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObjectCaseSensitive(item, NULL, item));
|
||||
TEST_ASSERT_FALSE(cJSON_ReplaceItemInObjectCaseSensitive(item, "item", NULL));
|
||||
TEST_ASSERT_NULL(cJSON_Duplicate(NULL, true));
|
||||
TEST_ASSERT_FALSE(cJSON_Compare(item, NULL, false));
|
||||
TEST_ASSERT_FALSE(cJSON_Compare(NULL, item, false));
|
||||
@ -544,6 +546,22 @@ static void cjson_create_array_reference_should_create_an_array_reference(void)
|
||||
cJSON_Delete(number_reference);
|
||||
}
|
||||
|
||||
static void cjson_add_item_to_object_or_array_should_not_add_itself(void)
|
||||
{
|
||||
cJSON *object = cJSON_CreateObject();
|
||||
cJSON *array = cJSON_CreateArray();
|
||||
cJSON_bool flag = false;
|
||||
|
||||
flag = cJSON_AddItemToObject(object, "key", object);
|
||||
TEST_ASSERT_FALSE_MESSAGE(flag, "add an object to itself should fail");
|
||||
|
||||
flag = cJSON_AddItemToArray(array, array);
|
||||
TEST_ASSERT_FALSE_MESSAGE(flag, "add an array to itself should fail");
|
||||
|
||||
cJSON_Delete(object);
|
||||
cJSON_Delete(array);
|
||||
}
|
||||
|
||||
static void cjson_add_item_to_object_should_not_use_after_free_when_string_is_aliased(void)
|
||||
{
|
||||
cJSON *object = cJSON_CreateObject();
|
||||
@ -657,6 +675,7 @@ int CJSON_CDECL main(void)
|
||||
RUN_TEST(cjson_create_string_reference_should_create_a_string_reference);
|
||||
RUN_TEST(cjson_create_object_reference_should_create_an_object_reference);
|
||||
RUN_TEST(cjson_create_array_reference_should_create_an_array_reference);
|
||||
RUN_TEST(cjson_add_item_to_object_or_array_should_not_add_itself);
|
||||
RUN_TEST(cjson_add_item_to_object_should_not_use_after_free_when_string_is_aliased);
|
||||
RUN_TEST(cjson_delete_item_from_array_should_not_broken_list_structure);
|
||||
RUN_TEST(cjson_set_valuestring_to_object_should_not_leak_memory);
|
||||
|
Reference in New Issue
Block a user