From: Caio Marcelo de Oliveira Filho Date: Wed, 21 Jan 2015 11:37:20 +0000 (-0200) Subject: testsuite: add test for hash_add_unique X-Git-Tag: v20~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c2d39c73532e22c8df37382e24765d69450f78b;p=thirdparty%2Fkmod.git testsuite: add test for hash_add_unique --- diff --git a/testsuite/test-hash.c b/testsuite/test-hash.c index 3cf5ba7d..c1aa1ebd 100644 --- a/testsuite/test-hash.c +++ b/testsuite/test-hash.c @@ -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();