|
@@ -28,6 +28,17 @@
|
|
#include "unity/src/unity.h"
|
|
#include "unity/src/unity.h"
|
|
#include "common.h"
|
|
#include "common.h"
|
|
|
|
|
|
|
|
+static void *failing_malloc(size_t size)
|
|
|
|
+{
|
|
|
|
+ (void)size;
|
|
|
|
+ return NULL;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static cJSON_Hooks failing_hooks = {
|
|
|
|
+ failing_malloc,
|
|
|
|
+ free
|
|
|
|
+};
|
|
|
|
+
|
|
static void cjson_add_null_should_add_null(void)
|
|
static void cjson_add_null_should_add_null(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -41,6 +52,29 @@ static void cjson_add_null_should_add_null(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_null_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNullToObject(NULL, "null"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNullToObject(root, NULL));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_null_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNullToObject(root, "null"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_true_should_add_true(void)
|
|
static void cjson_add_true_should_add_true(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -54,6 +88,29 @@ static void cjson_add_true_should_add_true(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_true_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddTrueToObject(NULL, "true"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddTrueToObject(root, NULL));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_true_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddTrueToObject(root, "true"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_false_should_add_false(void)
|
|
static void cjson_add_false_should_add_false(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -67,6 +124,29 @@ static void cjson_add_false_should_add_false(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_false_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddFalseToObject(NULL, "false"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddFalseToObject(root, NULL));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_false_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddFalseToObject(root, "false"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_bool_should_add_bool(void)
|
|
static void cjson_add_bool_should_add_bool(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -86,6 +166,29 @@ static void cjson_add_bool_should_add_bool(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_bool_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddBoolToObject(NULL, "false", false));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddBoolToObject(root, NULL, false));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_bool_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddBoolToObject(root, "false", false));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_number_should_add_number(void)
|
|
static void cjson_add_number_should_add_number(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -102,6 +205,29 @@ static void cjson_add_number_should_add_number(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_number_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNumberToObject(NULL, "number", 42));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNumberToObject(root, NULL, 42));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_number_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddNumberToObject(root, "number", 42));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_string_should_add_string(void)
|
|
static void cjson_add_string_should_add_string(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -116,6 +242,29 @@ static void cjson_add_string_should_add_string(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_string_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddStringToObject(NULL, "string", "string"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddStringToObject(root, NULL, "string"));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_string_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddStringToObject(root, "string", "string"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cjson_add_raw_should_add_raw(void)
|
|
static void cjson_add_raw_should_add_raw(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -130,6 +279,29 @@ static void cjson_add_raw_should_add_raw(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_raw_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddRawToObject(NULL, "raw", "{}"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddRawToObject(root, NULL, "{}"));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_raw_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddRawToObject(root, "raw", "{}"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cJSON_add_object_should_add_object(void)
|
|
static void cJSON_add_object_should_add_object(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -142,6 +314,29 @@ static void cJSON_add_object_should_add_object(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_object_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddObjectToObject(NULL, "object"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddObjectToObject(root, NULL));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_object_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddObjectToObject(root, "object"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
static void cJSON_add_array_should_add_array(void)
|
|
static void cJSON_add_array_should_add_array(void)
|
|
{
|
|
{
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *root = cJSON_CreateObject();
|
|
@@ -154,19 +349,68 @@ static void cJSON_add_array_should_add_array(void)
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void cjson_add_array_should_fail_with_null_pointers(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddArrayToObject(NULL, "array"));
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddArrayToObject(root, NULL));
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void cjson_add_array_should_fail_on_allocation_failure(void)
|
|
|
|
+{
|
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(&failing_hooks);
|
|
|
|
+
|
|
|
|
+ TEST_ASSERT_NULL(cJSON_AddArrayToObject(root, "array"));
|
|
|
|
+
|
|
|
|
+ cJSON_InitHooks(NULL);
|
|
|
|
+
|
|
|
|
+ cJSON_Delete(root);
|
|
|
|
+}
|
|
|
|
+
|
|
int main(void)
|
|
int main(void)
|
|
{
|
|
{
|
|
UNITY_BEGIN();
|
|
UNITY_BEGIN();
|
|
|
|
|
|
RUN_TEST(cjson_add_null_should_add_null);
|
|
RUN_TEST(cjson_add_null_should_add_null);
|
|
|
|
+ RUN_TEST(cjson_add_null_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_null_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_true_should_add_true);
|
|
RUN_TEST(cjson_add_true_should_add_true);
|
|
|
|
+ RUN_TEST(cjson_add_true_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_true_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_false_should_add_false);
|
|
RUN_TEST(cjson_add_false_should_add_false);
|
|
|
|
+ RUN_TEST(cjson_add_false_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_false_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_bool_should_add_bool);
|
|
RUN_TEST(cjson_add_bool_should_add_bool);
|
|
|
|
+ RUN_TEST(cjson_add_bool_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_bool_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_number_should_add_number);
|
|
RUN_TEST(cjson_add_number_should_add_number);
|
|
|
|
+ RUN_TEST(cjson_add_number_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_number_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_string_should_add_string);
|
|
RUN_TEST(cjson_add_string_should_add_string);
|
|
|
|
+ RUN_TEST(cjson_add_string_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_string_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cjson_add_raw_should_add_raw);
|
|
RUN_TEST(cjson_add_raw_should_add_raw);
|
|
|
|
+ RUN_TEST(cjson_add_raw_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_raw_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cJSON_add_object_should_add_object);
|
|
RUN_TEST(cJSON_add_object_should_add_object);
|
|
|
|
+ RUN_TEST(cjson_add_object_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_object_should_fail_on_allocation_failure);
|
|
|
|
+
|
|
RUN_TEST(cJSON_add_array_should_add_array);
|
|
RUN_TEST(cJSON_add_array_should_add_array);
|
|
|
|
+ RUN_TEST(cjson_add_array_should_fail_with_null_pointers);
|
|
|
|
+ RUN_TEST(cjson_add_array_should_fail_on_allocation_failure);
|
|
|
|
|
|
return UNITY_END();
|
|
return UNITY_END();
|
|
}
|
|
}
|