|  | @@ -83,6 +83,42 @@ static void create_configuration_should_not_take_incomplete_allocators(void)
 | 
	
		
			
				|  |  |      TEST_ASSERT_NULL(cJSON_CreateConfiguration(&allocators2, &userdata));
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static void duplicate_configuration_should_duplicate_a_configuration(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    internal_configuration *configuration = NULL;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    configuration = (internal_configuration*)cJSON_DuplicateConfiguration(&global_configuration, NULL, NULL);
 | 
	
		
			
				|  |  | +    TEST_ASSERT_NOT_NULL(configuration);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    TEST_ASSERT_EQUAL_MEMORY(&global_configuration, configuration, sizeof(internal_configuration));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    free(configuration);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void duplicate_configuration_should_take_custom_allocators(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    internal_configuration *configuration = NULL;
 | 
	
		
			
				|  |  | +    cJSON_Allocators allocators = {custom_allocator, custom_deallocator, NULL};
 | 
	
		
			
				|  |  | +    size_t userdata = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    configuration = (internal_configuration*)cJSON_DuplicateConfiguration(&global_configuration, &allocators, &userdata);
 | 
	
		
			
				|  |  | +    TEST_ASSERT_NOT_NULL(configuration);
 | 
	
		
			
				|  |  | +    TEST_ASSERT_EQUAL_MESSAGE(userdata, sizeof(internal_configuration), "custom allocator wasn't run properly");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    TEST_ASSERT_EQUAL_MEMORY(&global_configuration, configuration, sizeof(internal_configuration));
 | 
	
		
			
				|  |  | +    free(configuration);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void duplicate_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_DuplicateConfiguration(&global_configuration, &allocators1, &userdata));
 | 
	
		
			
				|  |  | +    TEST_ASSERT_NULL(cJSON_DuplicateConfiguration(&global_configuration, &allocators2, &userdata));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  static void configuration_change_allocators_should_change_allocators(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      internal_configuration *configuration = NULL;
 | 
	
	
		
			
				|  | @@ -211,6 +247,9 @@ int main(void)
 | 
	
		
			
				|  |  |      RUN_TEST(create_configuration_should_create_a_configuration);
 | 
	
		
			
				|  |  |      RUN_TEST(create_configuration_should_take_custom_allocators);
 | 
	
		
			
				|  |  |      RUN_TEST(create_configuration_should_not_take_incomplete_allocators);
 | 
	
		
			
				|  |  | +    RUN_TEST(duplicate_configuration_should_duplicate_a_configuration);
 | 
	
		
			
				|  |  | +    RUN_TEST(duplicate_configuration_should_take_custom_allocators);
 | 
	
		
			
				|  |  | +    RUN_TEST(duplicate_configuration_should_not_take_incomplete_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);
 |