X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=util%2Ftest_strmap.c;h=5826b92db54227f209d318736767803ae0a0f535;hp=c376becb7f7569672040375f0e817ef0ea7846fb;hb=e2d9fea369fcf6f0e8927b7b53b69d0bc4f9a50a;hpb=cfe61a9ffca3be9a4104ec3aad56e4618a5d59cd diff --git a/util/test_strmap.c b/util/test_strmap.c index c376bec..5826b92 100644 --- a/util/test_strmap.c +++ b/util/test_strmap.c @@ -1,8 +1,5 @@ -/* $Id: test_strmap.c,v 1.1 2007-12-02 11:30:28 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2011 Index Data Zebra 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 @@ -20,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include @@ -33,20 +33,43 @@ static void test1(void) zebra_strmap_destroy(sm); } { - int v1 = 1; - int *data_buf; + int v = 1; + void *data_buf; size_t data_len; zebra_strmap_t sm = zebra_strmap_create(); YAZ_CHECK(!zebra_strmap_lookup(sm, "a", 0, 0)); - zebra_strmap_add(sm, "a", &v1, sizeof v1); + zebra_strmap_add(sm, "a", &v, sizeof v); data_buf = zebra_strmap_lookup(sm, "a", 0, &data_len); - YAZ_CHECK(data_buf && data_len == sizeof v1 - && v1 == *((int*) data_buf)); + YAZ_CHECK(data_buf && data_len == sizeof v + && v == *((int*) data_buf)); zebra_strmap_remove(sm, "a"); data_buf = zebra_strmap_lookup(sm, "a", 0, &data_len); YAZ_CHECK(data_buf == 0); + + v = 1; + zebra_strmap_add(sm, "a", &v, sizeof v); + + v = 2; + zebra_strmap_add(sm, "b", &v, sizeof v); + + v = 3; + zebra_strmap_add(sm, "c", &v, sizeof v); + + { + zebra_strmap_it it = zebra_strmap_it_create(sm); + const char *name; + int no = 0; + while ((name = zebra_strmap_it_next(it, &data_buf, &data_len))) + { + YAZ_CHECK(!strcmp(name, "a") || !strcmp(name, "b") || + !strcmp(name, "c")); + no++; + } + YAZ_CHECK_EQ(no, 3); + zebra_strmap_it_destroy(it); + } zebra_strmap_destroy(sm); } } @@ -71,6 +94,7 @@ static void test2(int no_iter) } } { + int failed = 0; int i; srand(12); for (i = 0; i < no_iter; i++) @@ -92,9 +116,12 @@ static void test2(int no_iter) break; j++; } - YAZ_CHECK(data_buf && data_len == sizeof v - && v == *((int*) data_buf)); + if (!(data_buf && data_len == sizeof v + && v == *((int*) data_buf))) + failed++; } + if (failed) + YAZ_CHECK_EQ(failed, 0); } zebra_strmap_destroy(sm); } @@ -110,6 +137,7 @@ int main (int argc, char **argv) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab