X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_container_multihashmap.c;h=a0ef8aa368d000d5e84d0e505d6ff06e6ab64889;hb=82e765caeb53a1de54676738169dab98ca76c47e;hp=befd0ce460c7428a5fae1e016a1029fe9a7a87e0;hpb=6c471eeb15e27f8226492b4860a3c2acb94c5f25;p=oweals%2Fgnunet.git diff --git a/src/util/test_container_multihashmap.c b/src/util/test_container_multihashmap.c index befd0ce46..a0ef8aa36 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 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** @@ -25,10 +25,9 @@ */ #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 ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); if (m != NULL) GNUNET_CONTAINER_multihashmap_destroy(m); if (NULL != iter) GNUNET_CONTAINER_multihashmap_iterator_destroy (iter); return 1; } #define CHECK(c) { if (! (c)) ABORT(); } static int @@ -37,10 +36,12 @@ testMap (int i) struct GNUNET_CONTAINER_MultiHashMap *m; struct GNUNET_HashCode k1; struct GNUNET_HashCode k2; + struct GNUNET_CONTAINER_MultiHashMapIterator *iter = NULL; + 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_CONTAINER_multihashmap_iterator_destroy (iter); + GNUNET_CONTAINER_multihashmap_destroy (m); return 0; }