X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_container_multihashmap.c;h=41e7e58b8dabcd68a1f0ea8befc898542b77c00a;hb=ed85740167a5bc8acf2718fb54b40d206de13b81;hp=ba621c17e93654f6ffcaac7fbd5206a1bfa8793e;hpb=83b19539f4d322b43683f5838b72e9ec2c8e6073;p=oweals%2Fgnunet.git diff --git a/src/util/test_container_multihashmap.c b/src/util/test_container_multihashmap.c index ba621c17e..41e7e58b8 100644 --- a/src/util/test_container_multihashmap.c +++ b/src/util/test_container_multihashmap.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2008 Christian Grothoff (and other contributing authors) + Copyright (C) 2008 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -25,8 +25,7 @@ */ #include "platform.h" -#include "gnunet_common.h" -#include "gnunet_container_lib.h" +#include "gnunet_util_lib.h" #define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); if (m != NULL) GNUNET_CONTAINER_multihashmap_destroy(m); return 1; } #define CHECK(c) { if (! (c)) ABORT(); } @@ -35,12 +34,14 @@ static int testMap (int i) { struct GNUNET_CONTAINER_MultiHashMap *m; - GNUNET_HashCode k1; - GNUNET_HashCode k2; + struct GNUNET_HashCode k1; + struct GNUNET_HashCode k2; + struct GNUNET_CONTAINER_MultiHashMapIterator *iter; + struct GNUNET_HashCode key_ret; const char *ret; int j; - CHECK (NULL != (m = GNUNET_CONTAINER_multihashmap_create (i))); + CHECK (NULL != (m = GNUNET_CONTAINER_multihashmap_create (i, GNUNET_NO))); memset (&k1, 0, sizeof (k1)); memset (&k2, 1, sizeof (k2)); CHECK (GNUNET_NO == GNUNET_CONTAINER_multihashmap_contains (m, &k1)); @@ -79,11 +80,25 @@ testMap (int i) CHECK (2 == GNUNET_CONTAINER_multihashmap_get_multiple (m, &k1, NULL, NULL)); CHECK (0 == GNUNET_CONTAINER_multihashmap_get_multiple (m, &k2, NULL, NULL)); CHECK (2 == GNUNET_CONTAINER_multihashmap_iterate (m, NULL, NULL)); + iter = GNUNET_CONTAINER_multihashmap_iterator_create (m); + CHECK (GNUNET_YES == GNUNET_CONTAINER_multihashmap_iterator_next (iter, &key_ret, (const void **)&ret)); + CHECK (0 == memcmp (&key_ret, &k1, sizeof (key_ret))); + CHECK (GNUNET_YES == GNUNET_CONTAINER_multihashmap_iterator_next (iter, &key_ret, (const void **)&ret)); + CHECK (0 == memcmp (&key_ret, &k1, sizeof (key_ret))); + CHECK (GNUNET_NO == GNUNET_CONTAINER_multihashmap_iterator_next (iter, NULL, NULL)); + GNUNET_free (iter); + CHECK (2 == GNUNET_CONTAINER_multihashmap_remove_all (m, &k1)); for (j = 0; j < 1024; j++) CHECK (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (m, &k1, "v2", GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); + iter = GNUNET_CONTAINER_multihashmap_iterator_create (m); + for (j = 0; j < GNUNET_CONTAINER_multihashmap_size (m); j++) + CHECK (GNUNET_YES == GNUNET_CONTAINER_multihashmap_iterator_next (iter, NULL, NULL)); + CHECK (GNUNET_NO == GNUNET_CONTAINER_multihashmap_iterator_next (iter, NULL, NULL)); + GNUNET_free (iter); + GNUNET_CONTAINER_multihashmap_destroy (m); return 0; }