X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_container_multihashmap.c;h=a0ef8aa368d000d5e84d0e505d6ff06e6ab64889;hb=82e765caeb53a1de54676738169dab98ca76c47e;hp=c16b2df223c807d8d25e3f711475b89ee93212b6;hpb=502af2167f7c218366666ca4944bd7cc54b5b19a;p=oweals%2Fgnunet.git diff --git a/src/util/test_container_multihashmap.c b/src/util/test_container_multihashmap.c index c16b2df22..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,22 +25,23 @@ */ #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 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 = 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)); @@ -54,27 +55,23 @@ testMap (int i) CHECK (0 == GNUNET_CONTAINER_multihashmap_iterate (m, NULL, NULL)); CHECK (0 == GNUNET_CONTAINER_multihashmap_get_multiple (m, &k1, NULL, NULL)); - CHECK (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (m, - &k1, - "v1", - GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE)); + CHECK (GNUNET_OK == + GNUNET_CONTAINER_multihashmap_put (m, &k1, "v1", + GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE)); CHECK (1 == GNUNET_CONTAINER_multihashmap_size (m)); ret = GNUNET_CONTAINER_multihashmap_get (m, &k1); GNUNET_assert (ret != NULL); CHECK (0 == strcmp ("v1", ret)); - CHECK (GNUNET_NO == GNUNET_CONTAINER_multihashmap_put (m, - &k1, - "v1", - GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE)); + CHECK (GNUNET_NO == + GNUNET_CONTAINER_multihashmap_put (m, &k1, "v1", + GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE)); CHECK (1 == GNUNET_CONTAINER_multihashmap_size (m)); - CHECK (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (m, - &k1, - "v2", - GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); - CHECK (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (m, - &k1, - "v3", - GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); + CHECK (GNUNET_OK == + GNUNET_CONTAINER_multihashmap_put (m, &k1, "v2", + GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); + CHECK (GNUNET_OK == + GNUNET_CONTAINER_multihashmap_put (m, &k1, "v3", + GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); CHECK (3 == GNUNET_CONTAINER_multihashmap_size (m)); CHECK (GNUNET_OK == GNUNET_CONTAINER_multihashmap_remove (m, &k1, "v3")); CHECK (2 == GNUNET_CONTAINER_multihashmap_size (m)); @@ -83,12 +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)); + 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; }