|  | @@ -30,43 +30,18 @@
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void create_configuration_should_create_a_configuration(void)
 |  |  static void create_configuration_should_create_a_configuration(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    cJSON *json = NULL;
 |  | 
 | 
											
												
													
														|  |      internal_configuration *configuration = NULL;
 |  |      internal_configuration *configuration = NULL;
 | 
											
												
													
														|  | -    int userdata = 1;
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    json = cJSON_Parse("{\"allow_data_after_json\":false}");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_NOT_NULL(json);
 |  | 
 | 
											
												
													
														|  | -    configuration = (internal_configuration*)cJSON_CreateConfiguration(json, NULL, &userdata);
 |  | 
 | 
											
												
													
														|  | -    cJSON_Delete(json);
 |  | 
 | 
											
												
													
														|  | -    json = NULL;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |      TEST_ASSERT_EQUAL_MESSAGE(configuration->buffer_size, 256, "buffer_size has an incorrect value.");
 |  |      TEST_ASSERT_EQUAL_MESSAGE(configuration->buffer_size, 256, "buffer_size has an incorrect value.");
 | 
											
												
													
														|  |      TEST_ASSERT_TRUE_MESSAGE(configuration->format, "format has an incorrect value.");
 |  |      TEST_ASSERT_TRUE_MESSAGE(configuration->format, "format has an incorrect value.");
 | 
											
												
													
														|  |      TEST_ASSERT_TRUE_MESSAGE(configuration->case_sensitive, "case_sensitive has an incorrect value.");
 |  |      TEST_ASSERT_TRUE_MESSAGE(configuration->case_sensitive, "case_sensitive has an incorrect value.");
 | 
											
												
													
														|  |      TEST_ASSERT_TRUE_MESSAGE(configuration->allow_data_after_json, "allow_data_after_json has an incorrect value.");
 |  |      TEST_ASSERT_TRUE_MESSAGE(configuration->allow_data_after_json, "allow_data_after_json has an incorrect value.");
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(configuration->userdata == &userdata, "Incorrect userdata");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_allocate_wrapper == configuration->allocators.allocate, "Wrong malloc.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_reallocate_wrapper == configuration->allocators.reallocate, "Wrong realloc.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_deallocate_wrapper == configuration->allocators.deallocate, "Wrong realloc.");
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    free(configuration);
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -static void create_configuration_should_work_with_an_empty_object(void)
 |  | 
 | 
											
												
													
														|  | -{
 |  | 
 | 
											
												
													
														|  | -    internal_configuration *configuration = NULL;
 |  | 
 | 
											
												
													
														|  | -    int userdata = 1;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, &userdata);
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_NOT_NULL(configuration);
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_EQUAL_MESSAGE(configuration->buffer_size, 256, "buffer_size has an incorrect value.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(configuration->format, "format has an incorrect value.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(configuration->case_sensitive, "case_sensitive has an incorrect value.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(configuration->allow_data_after_json, "allow_data_after_json has an incorrect value.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(configuration->userdata == &userdata, "Incorrect userdata");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_allocate_wrapper == configuration->allocators.allocate, "Wrong malloc.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_reallocate_wrapper == configuration->allocators.reallocate, "Wrong realloc.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(global_deallocate_wrapper == configuration->allocators.deallocate, "Wrong free.");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NULL_MESSAGE(configuration->userdata, "Userdata should be NULL");
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(malloc_wrapper == configuration->allocators.allocate, "Wrong malloc.");
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(realloc_wrapper == configuration->allocators.reallocate, "Wrong realloc.");
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(free_wrapper == configuration->allocators.deallocate, "Wrong free.");
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      free(configuration);
 |  |      free(configuration);
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
										
											
												
													
														|  | @@ -88,23 +63,33 @@ static void create_configuration_should_take_custom_allocators(void)
 | 
											
												
													
														|  |      cJSON_Allocators allocators = {custom_allocator, custom_deallocator, NULL};
 |  |      cJSON_Allocators allocators = {custom_allocator, custom_deallocator, NULL};
 | 
											
												
													
														|  |      size_t userdata = 0;
 |  |      size_t userdata = 0;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, &allocators, &userdata);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    configuration = (internal_configuration*)cJSON_CreateConfiguration(&allocators, &userdata);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |      TEST_ASSERT_EQUAL_MESSAGE(userdata, sizeof(internal_configuration), "custom allocator wasn't run properly.");
 |  |      TEST_ASSERT_EQUAL_MESSAGE(userdata, sizeof(internal_configuration), "custom allocator wasn't run properly.");
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(custom_allocator == configuration->allocators.allocate, "Wrong allocator.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_TRUE_MESSAGE(custom_deallocator == configuration->allocators.deallocate, "Wrong deallocator.");
 |  | 
 | 
											
												
													
														|  | -    TEST_ASSERT_NULL_MESSAGE(configuration->allocators.reallocate, "Reallocator is not null");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(global_default_configuration.allocators.allocate == configuration->allocators.allocate, "Wrong allocator.");
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(global_default_configuration.allocators.deallocate == configuration->allocators.deallocate, "Wrong deallocator.");
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_TRUE_MESSAGE(global_default_configuration.allocators.reallocate == configuration->allocators.reallocate, "Wrong reallocator.");
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      custom_deallocator(configuration, &userdata);
 |  |      custom_deallocator(configuration, &userdata);
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +static void create_configuration_should_not_take_incomplete_allocators(void)
 | 
											
												
													
														|  | 
 |  | +{
 | 
											
												
													
														|  | 
 |  | +    cJSON_Allocators allocators1 = {custom_allocator, NULL, NULL};
 | 
											
												
													
														|  | 
 |  | +    cJSON_Allocators allocators2 = {NULL, custom_deallocator, NULL};
 | 
											
												
													
														|  | 
 |  | +    size_t userdata = 0;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NULL(cJSON_CreateConfiguration(&allocators1, &userdata));
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NULL(cJSON_CreateConfiguration(&allocators2, &userdata));
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  static void configuration_change_allocators_should_change_allocators(void)
 |  |  static void configuration_change_allocators_should_change_allocators(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  |      internal_configuration *configuration = NULL;
 |  |      internal_configuration *configuration = NULL;
 | 
											
												
													
														|  |      cJSON_Allocators allocators = {custom_allocator, custom_deallocator, NULL};
 |  |      cJSON_Allocators allocators = {custom_allocator, custom_deallocator, NULL};
 | 
											
												
													
														|  |      size_t userdata = 0;
 |  |      size_t userdata = 0;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, &allocators, &userdata);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    configuration = (internal_configuration*)cJSON_CreateConfiguration(&allocators, &userdata);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeAllocators(configuration, allocators);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeAllocators(configuration, allocators);
 | 
											
										
											
												
													
														|  | @@ -116,11 +101,26 @@ static void configuration_change_allocators_should_change_allocators(void)
 | 
											
												
													
														|  |      custom_deallocator(configuration, &userdata);
 |  |      custom_deallocator(configuration, &userdata);
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +static void configuration_change_allocators_should_not_change_incomplete_allocators(void)
 | 
											
												
													
														|  | 
 |  | +{
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = NULL;
 | 
											
												
													
														|  | 
 |  | +    cJSON_Allocators allocators1 = {custom_allocator, NULL, NULL};
 | 
											
												
													
														|  | 
 |  | +    cJSON_Allocators allocators2 = {NULL, custom_deallocator, NULL};
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NULL(cJSON_ConfigurationChangeAllocators(configuration, allocators1));
 | 
											
												
													
														|  | 
 |  | +    TEST_ASSERT_NULL(cJSON_ConfigurationChangeAllocators(configuration, allocators2));
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    free(configuration);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  static void configuration_change_userdata_should_change_userdata(void)
 |  |  static void configuration_change_userdata_should_change_userdata(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  |      internal_configuration *configuration = NULL;
 |  |      internal_configuration *configuration = NULL;
 | 
											
												
													
														|  |      size_t userdata = 0;
 |  |      size_t userdata = 0;
 | 
											
												
													
														|  | -    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeUserdata(configuration, &userdata);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeUserdata(configuration, &userdata);
 | 
											
										
											
												
													
														|  | @@ -132,7 +132,7 @@ static void configuration_change_userdata_should_change_userdata(void)
 | 
											
												
													
														|  |  static void configuration_change_parse_end_should_change_parse_end(void)
 |  |  static void configuration_change_parse_end_should_change_parse_end(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  |      size_t end_position = 0;
 |  |      size_t end_position = 0;
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeParseEnd(configuration, &end_position);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeParseEnd(configuration, &end_position);
 | 
											
										
											
												
													
														|  | @@ -145,7 +145,7 @@ static void configuration_change_parse_end_should_change_parse_end(void)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void configuration_change_prebuffer_size_should_change_buffer_size(void)
 |  |  static void configuration_change_prebuffer_size_should_change_buffer_size(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangePrebufferSize(configuration, 1024);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangePrebufferSize(configuration, 1024);
 | 
											
										
											
												
													
														|  | @@ -158,7 +158,7 @@ static void configuration_change_prebuffer_size_should_change_buffer_size(void)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void configuration_change_prebuffer_size_should_not_allow_empty_sizes(void)
 |  |  static void configuration_change_prebuffer_size_should_not_allow_empty_sizes(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      TEST_ASSERT_NULL(cJSON_ConfigurationChangePrebufferSize(configuration, 0));
 |  |      TEST_ASSERT_NULL(cJSON_ConfigurationChangePrebufferSize(configuration, 0));
 | 
											
										
											
												
													
														|  | @@ -168,7 +168,7 @@ static void configuration_change_prebuffer_size_should_not_allow_empty_sizes(voi
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void configuration_change_format_should_change_format(void)
 |  |  static void configuration_change_format_should_change_format(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeFormat(configuration, CJSON_FORMAT_MINIFIED);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeFormat(configuration, CJSON_FORMAT_MINIFIED);
 | 
											
										
											
												
													
														|  | @@ -186,7 +186,7 @@ static void configuration_change_format_should_change_format(void)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void configuration_change_case_sensitivity_should_change_case_sensitivity(void)
 |  |  static void configuration_change_case_sensitivity_should_change_case_sensitivity(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeCaseSensitivity(configuration, false);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeCaseSensitivity(configuration, false);
 | 
											
										
											
												
													
														|  | @@ -199,7 +199,7 @@ static void configuration_change_case_sensitivity_should_change_case_sensitivity
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static void configuration_change_allow_data_after_json_should_change_allow_data_after_json(void)
 |  |  static void configuration_change_allow_data_after_json_should_change_allow_data_after_json(void)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL, NULL);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    internal_configuration *configuration = (internal_configuration*)cJSON_CreateConfiguration(NULL, NULL);
 | 
											
												
													
														|  |      TEST_ASSERT_NOT_NULL(configuration);
 |  |      TEST_ASSERT_NOT_NULL(configuration);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeAllowDataAfterJson(configuration, false);
 |  |      configuration = (internal_configuration*)cJSON_ConfigurationChangeAllowDataAfterJson(configuration, false);
 | 
											
										
											
												
													
														|  | @@ -215,9 +215,10 @@ int main(void)
 | 
											
												
													
														|  |      UNITY_BEGIN();
 |  |      UNITY_BEGIN();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      RUN_TEST(create_configuration_should_create_a_configuration);
 |  |      RUN_TEST(create_configuration_should_create_a_configuration);
 | 
											
												
													
														|  | -    RUN_TEST(create_configuration_should_work_with_an_empty_object);
 |  | 
 | 
											
												
													
														|  |      RUN_TEST(create_configuration_should_take_custom_allocators);
 |  |      RUN_TEST(create_configuration_should_take_custom_allocators);
 | 
											
												
													
														|  | 
 |  | +    RUN_TEST(create_configuration_should_not_take_incomplete_allocators);
 | 
											
												
													
														|  |      RUN_TEST(configuration_change_allocators_should_change_allocators);
 |  |      RUN_TEST(configuration_change_allocators_should_change_allocators);
 | 
											
												
													
														|  | 
 |  | +    RUN_TEST(configuration_change_allocators_should_not_change_incomplete_allocators);
 | 
											
												
													
														|  |      RUN_TEST(configuration_change_userdata_should_change_userdata);
 |  |      RUN_TEST(configuration_change_userdata_should_change_userdata);
 | 
											
												
													
														|  |      RUN_TEST(configuration_change_parse_end_should_change_parse_end);
 |  |      RUN_TEST(configuration_change_parse_end_should_change_parse_end);
 | 
											
												
													
														|  |      RUN_TEST(configuration_change_prebuffer_size_should_change_buffer_size);
 |  |      RUN_TEST(configuration_change_prebuffer_size_should_change_buffer_size);
 |