|  | @@ -28,6 +28,17 @@
 | 
	
		
			
				|  |  |  #include "unity/src/unity.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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -41,6 +52,29 @@ static void cjson_add_null_should_add_null(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -54,6 +88,29 @@ static void cjson_add_true_should_add_true(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -67,6 +124,29 @@ static void cjson_add_false_should_add_false(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -86,6 +166,29 @@ static void cjson_add_bool_should_add_bool(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -102,6 +205,29 @@ static void cjson_add_number_should_add_number(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -116,6 +242,29 @@ static void cjson_add_string_should_add_string(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -130,6 +279,29 @@ static void cjson_add_raw_should_add_raw(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -142,6 +314,29 @@ static void cJSON_add_object_should_add_object(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      cJSON *root = cJSON_CreateObject();
 | 
	
	
		
			
				|  | @@ -154,19 +349,68 @@ static void cJSON_add_array_should_add_array(void)
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      UNITY_BEGIN();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      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_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_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_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_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_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_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_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_fail_with_null_pointers);
 | 
	
		
			
				|  |  | +    RUN_TEST(cjson_add_array_should_fail_on_allocation_failure);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return UNITY_END();
 | 
	
		
			
				|  |  |  }
 |