]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - testsuite/test-hash.c
testsuite: move test-blacklist to DEFINE_TEST
[thirdparty/kmod.git] / testsuite / test-hash.c
index 3cf5ba7dff05aef47a57a6c330e56864737b6901..1bea04e6384e556b61bb3883f1970e04457e66d8 100644 (file)
@@ -220,4 +220,63 @@ 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")
+
+
+static int test_hash_massive_add_del(const struct test *t)
+{
+       char buf[1024 * 8];
+       char *k;
+       struct hash *h;
+       unsigned int i, N = 1024;
+
+       h = hash_new(8, NULL);
+
+       k = &buf[0];
+       for (i = 0; i < N; i++) {
+               snprintf(k, 8, "k%d", i);
+               hash_add(h, k, k);
+               k += 8;
+       }
+
+       assert_return(hash_get_count(h) == N, EXIT_FAILURE);
+
+       k = &buf[0];
+       for (i = 0; i < N; i++) {
+               hash_del(h, k);
+               k += 8;
+       }
+
+       assert_return(hash_get_count(h) == 0, EXIT_FAILURE);
+
+       hash_free(h);
+       return 0;
+}
+DEFINE_TEST(test_hash_massive_add_del,
+               .description = "test multiple adds followed by multiple dels")
+
 TESTSUITE_MAIN();