ocarina/tests/core/set.c

46 lines
877 B
C

/*
* Copyright 2015 (c) Anna Schumaker.
*/
#include <core/set.h>
#include <tests/test.h>
void test_set()
{
struct set set = SET_INIT();
unsigned int i, N = 10;
struct set_iter it;
/* Insert N items. */
for (i = 0; i < N; i++) {
set_insert(&set, i);
set_insert(&set, i);
test_loop_equal(set_size(&set), i + 1, i);
test_loop_equal(set_has(&set, i), (bool)true, i);
} test_loop_passed();
set_insert(&set, 0);
test_equal(set_size(&set), N);
/* Remove even items. */
for (i = 0; i < N; i += 2) {
set_remove(&set, i);
set_remove(&set, i);
test_loop_equal(set_has(&set, i), (bool)false, i);
} test_loop_passed();
test_equal(set_size(&set), N / 2);
/* Test iterating. */
i = 1;
set_for_each(&set, &it) {
test_loop_equal(it.it_val, i, i);
i += 2;
} test_loop_passed();
set_deinit(&set);
}
DECLARE_UNIT_TESTS(
UNIT_TEST("Set", test_set),
);