Example #1
0
void wi_test_set_creation(void) {
    wi_set_t    *set;
    
    set = wi_set();

    WI_TEST_ASSERT_NOT_NULL(set, "");
    WI_TEST_ASSERT_EQUALS(wi_set_count(set), 0U, "");
    
    set = wi_set_with_data(WI_STR("foo"), WI_STR("bar"), NULL);

    WI_TEST_ASSERT_NOT_NULL(set, "");
    WI_TEST_ASSERT_EQUALS(wi_set_count(set), 2U, "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("bar")), "");
    
    set = wi_autorelease(wi_set_init_with_data(wi_set_alloc(), WI_STR("foo"), WI_STR("bar"), NULL));
    
    WI_TEST_ASSERT_NOT_NULL(set, "");
    WI_TEST_ASSERT_EQUALS(wi_set_count(set), 2U, "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("bar")), "");
    
    set = wi_autorelease(wi_set_init_with_array(wi_set_alloc(), wi_array_with_data(WI_STR("foo"), WI_STR("bar"), NULL)));
    
    WI_TEST_ASSERT_NOT_NULL(set, "");
    WI_TEST_ASSERT_EQUALS(wi_set_count(set), 2U, "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
    WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("bar")), "");
}
Example #2
0
void wi_test_set(void) {
	wi_set_t		*set;
	
	set = wi_set_init(wi_set_alloc());
	
	WI_TEST_ASSERT_NOT_NULL(set, "");
	
	wi_set_add_data(set, WI_STR("foo"));
	
	WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
	WI_TEST_ASSERT_FALSE(wi_set_contains_data(set, WI_STR("bar")), "");
	WI_TEST_ASSERT_EQUALS(wi_set_count_for_data(set, WI_STR("foo")), 1U, "");
	
	wi_release(set);

	set = wi_set_init_with_capacity(wi_set_alloc(), 0, true);

	WI_TEST_ASSERT_NOT_NULL(set, "");
	
	wi_set_add_data(set, WI_STR("foo"));
	wi_set_add_data(set, WI_STR("foo"));

	WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
	WI_TEST_ASSERT_FALSE(wi_set_contains_data(set, WI_STR("bar")), "");
	WI_TEST_ASSERT_EQUALS(wi_set_count_for_data(set, WI_STR("foo")), 2U, "");

	wi_set_remove_data(set, WI_STR("foo"));

	WI_TEST_ASSERT_TRUE(wi_set_contains_data(set, WI_STR("foo")), "");
	WI_TEST_ASSERT_EQUALS(wi_set_count_for_data(set, WI_STR("foo")), 1U, "");
	
	wi_set_remove_data(set, WI_STR("foo"));
	
	WI_TEST_ASSERT_FALSE(wi_set_contains_data(set, WI_STR("foo")), "");
	WI_TEST_ASSERT_EQUALS(wi_set_count_for_data(set, WI_STR("foo")), 0U, "");
	
	wi_release(set);
}
Example #3
0
static wi_runtime_instance_t * _wi_set_copy(wi_runtime_instance_t *instance) {
	wi_set_t			*set = instance, *set_copy;
	_wi_set_bucket_t	*bucket;
	wi_uinteger_t		i;
	
	set_copy = wi_set_init_with_capacity_and_callbacks(wi_set_alloc(), set->data_count, set->callbacks);
	
	for(i = 0; i < set->buckets_count; i++) {
		for(bucket = set->buckets[i]; bucket; bucket = bucket->next)
			wi_set_add_data(set_copy, bucket->data);
	}
	
	return set_copy;
}
Example #4
0
wi_set_t * wi_set_with_data(void *data0, ...) {
	wi_set_t	*set;
	void		*data;
	va_list		ap;
	
	set = wi_set_init_with_capacity(wi_set_alloc(), 0, false);
	
	_wi_set_add_data(set, data0);
	
	va_start(ap, data0);
	while((data = va_arg(ap, void *)))
		_wi_set_add_data(set, data);
	va_end(ap);
	
	return wi_autorelease(set);
}
Example #5
0
wi_set_t * wi_set(void) {
	return wi_autorelease(wi_set_init(wi_set_alloc()));
}