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")), ""); }
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); }
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; }
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); }
wi_set_t * wi_set(void) { return wi_autorelease(wi_set_init(wi_set_alloc())); }