X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_container_slist.c;h=1b63d3dbce1213294bdbc6cbd0a6d414a5781bf3;hb=72c8645af31896829b674b575c5375706f362a30;hp=a22d4be8ac1a14105ae7d2208f9561722984a9f1;hpb=d5f3c16326273625b37cd0f2d5b4716ac650f51d;p=oweals%2Fgnunet.git diff --git a/src/util/test_container_slist.c b/src/util/test_container_slist.c index a22d4be8a..1b63d3dbc 100644 --- a/src/util/test_container_slist.c +++ b/src/util/test_container_slist.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -28,81 +28,132 @@ #include "gnunet_common.h" #include "gnunet_container_lib.h" -#define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); return 1; } -#define CHECK(c) { if (! (c)) ABORT(); } - int main (int argc, char *argv[]) { struct GNUNET_CONTAINER_SList *l; - struct GNUNET_CONTAINER_SList_Iterator *it; - unsigned int i, j, s; - + struct GNUNET_CONTAINER_SList_Iterator it; + unsigned int i; + int *ip; + unsigned int j; + size_t s; + const void *p; GNUNET_log_setup ("test-container-slist", "WARNING", NULL); l = GNUNET_CONTAINER_slist_create (); - CHECK (l != NULL); - CHECK (GNUNET_CONTAINER_slist_count (l) == 0); + GNUNET_assert (l != NULL); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 0); for (i = 0; i < 100; i++) - GNUNET_CONTAINER_slist_add (l, GNUNET_MEM_DISP_TRANSIENT, &i, sizeof (i)); - CHECK (GNUNET_CONTAINER_slist_count (l) == 100); + GNUNET_CONTAINER_slist_add (l, GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + &i, sizeof (i)); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); for (it = GNUNET_CONTAINER_slist_begin (l), i = 99; - GNUNET_CONTAINER_slist_end (it) != GNUNET_YES; - GNUNET_CONTAINER_slist_next (it), i--) - { - void *p; + GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES; + GNUNET_CONTAINER_slist_next (&it), i--) + { + p = GNUNET_CONTAINER_slist_get (&it, &s); - p = GNUNET_CONTAINER_slist_get (it, &s); - CHECK (p != NULL); - j = *(int *) p; - CHECK (i == j); - CHECK (s == sizeof (i)); - - j *= 2; - GNUNET_CONTAINER_slist_insert (it, GNUNET_MEM_DISP_TRANSIENT, &j, - sizeof (j)); + if ((p == NULL) || (i != (j = *(int *) p)) || (s != sizeof (i))) + { + GNUNET_CONTAINER_slist_iter_destroy (&it); + GNUNET_assert (0); } - CHECK (GNUNET_CONTAINER_slist_count (l) == 200); + j *= 2; + GNUNET_CONTAINER_slist_insert (&it, + GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + &j, sizeof (j)); + } + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 200); i = 198; - CHECK (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i))); + GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i))); for (it = GNUNET_CONTAINER_slist_begin (l); - GNUNET_CONTAINER_slist_end (it) != GNUNET_YES;) - { - void *p; + GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES;) + { + p = GNUNET_CONTAINER_slist_get (&it, &s); + GNUNET_assert (p != NULL); + GNUNET_assert (s == sizeof (i)); + i = *(int *) p; + + GNUNET_assert (GNUNET_CONTAINER_slist_next (&it) == GNUNET_YES); + GNUNET_assert (GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES); + + p = GNUNET_CONTAINER_slist_get (&it, &s); + GNUNET_assert (p != NULL); + GNUNET_assert (s == sizeof (j)); + j = *(int *) p; + + GNUNET_assert (j * 2 == i); + + GNUNET_CONTAINER_slist_erase (&it); + } + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); + i = 99; + GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) == + GNUNET_NO); + i = 198; + GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) == + GNUNET_YES); - p = GNUNET_CONTAINER_slist_get (it, &s); - CHECK (p != NULL); - CHECK (s == sizeof (i)); - i = *(int *) p; + GNUNET_CONTAINER_slist_clear (l); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 0); - CHECK (GNUNET_CONTAINER_slist_next (it) == GNUNET_YES); - CHECK (GNUNET_CONTAINER_slist_end (it) != GNUNET_YES); + for (i = 0; i < 100; i++) + GNUNET_CONTAINER_slist_add (l, GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + &i, sizeof (i)); + /*check slist_append */ + GNUNET_CONTAINER_slist_append (l, l); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 200); - p = GNUNET_CONTAINER_slist_get (it, &s); - CHECK (p != NULL); - CHECK (s == sizeof (j)); - j = *(int *) p; + GNUNET_CONTAINER_slist_destroy (l); - CHECK (j * 2 == i); + /*check slist_add_end */ + l = GNUNET_CONTAINER_slist_create (); + for (i = 0; i < 100; i++) + GNUNET_CONTAINER_slist_add_end (l, + GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + &i, sizeof (i)); + + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); + + for (it = GNUNET_CONTAINER_slist_begin (l), i = 0; + GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES; + GNUNET_CONTAINER_slist_next (&it), i++) + { + p = GNUNET_CONTAINER_slist_get (&it, &s); - GNUNET_CONTAINER_slist_erase (it); + if ((p == NULL) || (i != *(int *) p) || (s != sizeof (i))) + { + GNUNET_assert (0); } - CHECK (GNUNET_CONTAINER_slist_count (l) == 100); - i = 99; - CHECK (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) == GNUNET_NO); - i = 198; - CHECK (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i))); + } + GNUNET_CONTAINER_slist_destroy (l); - GNUNET_CONTAINER_slist_clear (l); - CHECK (GNUNET_CONTAINER_slist_count (l) == 0); + /*check if disp = GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC */ + l = GNUNET_CONTAINER_slist_create (); for (i = 0; i < 100; i++) - GNUNET_CONTAINER_slist_add (l, GNUNET_MEM_DISP_TRANSIENT, &i, sizeof (i)); - + { + ip = GNUNET_malloc (sizeof (int)); + *ip = i; + GNUNET_CONTAINER_slist_add (l, GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC, + ip, sizeof (int)); + } + //creat_add + it = GNUNET_CONTAINER_slist_begin (l); + p = GNUNET_CONTAINER_slist_get (&it, &s); + GNUNET_assert (p != NULL); + //slist_erase + GNUNET_assert (GNUNET_CONTAINER_slist_next (&it) == GNUNET_YES); + GNUNET_CONTAINER_slist_erase (&it); + GNUNET_CONTAINER_slist_iter_destroy (&it); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 99); + //slist_clear + GNUNET_CONTAINER_slist_clear (l); + GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 0); GNUNET_CONTAINER_slist_destroy (l); return 0;