testsuite: add test for hash_add_unique

This commit is contained in:
Caio Marcelo de Oliveira Filho 2015-01-21 09:37:20 -02:00 committed by Lucas De Marchi
parent 9c6084d90c
commit 9c2d39c735
1 changed files with 26 additions and 0 deletions

View File

@ -220,4 +220,30 @@ static int test_hash_free(const struct test *t)
DEFINE_TEST(test_hash_free,
.description = "test hash_free calling free function for all values");
static int test_hash_add_unique(const struct test *t)
{
const char *k[] = { "k1", "k2", "k3", "k4", "k5" };
const char *v[] = { "v1", "v2", "v3", "v4", "v5" };
unsigned int i, j, N;
N = ARRAY_SIZE(k);
for (i = 0; i < N; i++) {
/* With N - 1 buckets, there'll be a bucket with more than one key. */
struct hash *h = hash_new(N - 1, NULL);
/* Add the keys in different orders. */
for (j = 0; j < N; j++) {
unsigned int idx = (j + i) % N;
hash_add_unique(h, k[idx], v[idx]);
}
assert_return(hash_get_count(h) == N, EXIT_FAILURE);
hash_free(h);
}
return 0;
}
DEFINE_TEST(test_hash_add_unique,
.description = "test hash_add_unique with different key orders")
TESTSUITE_MAIN();