1 /* This file is part of the Zebra server.
2 Copyright (C) 1995-2008 Index Data
4 Zebra is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free
6 Software Foundation; either version 2, or (at your option) any later
9 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 #include <zebra_strmap.h>
25 static void test1(void)
28 zebra_strmap_t sm = zebra_strmap_create();
30 zebra_strmap_destroy(sm);
36 zebra_strmap_t sm = zebra_strmap_create();
37 YAZ_CHECK(!zebra_strmap_lookup(sm, "a", 0, 0));
39 zebra_strmap_add(sm, "a", &v, sizeof v);
40 data_buf = zebra_strmap_lookup(sm, "a", 0, &data_len);
41 YAZ_CHECK(data_buf && data_len == sizeof v
42 && v == *((int*) data_buf));
44 zebra_strmap_remove(sm, "a");
45 data_buf = zebra_strmap_lookup(sm, "a", 0, &data_len);
46 YAZ_CHECK(data_buf == 0);
49 zebra_strmap_add(sm, "a", &v, sizeof v);
52 zebra_strmap_add(sm, "b", &v, sizeof v);
55 zebra_strmap_add(sm, "c", &v, sizeof v);
58 zebra_strmap_it it = zebra_strmap_it_create(sm);
61 while ((name = zebra_strmap_it_next(it, &data_buf, &data_len)))
63 YAZ_CHECK(!strcmp(name, "a") || !strcmp(name, "b") ||
68 zebra_strmap_it_destroy(it);
70 zebra_strmap_destroy(sm);
74 static void test2(int no_iter)
76 zebra_strmap_t sm = zebra_strmap_create();
80 for (i = 0; i < no_iter; i++)
86 for (j = 0; j < sizeof(str)-1; j++)
87 str[j] = rand() & 255;
90 zebra_strmap_add(sm, str, &v, sizeof v);
97 for (i = 0; i < no_iter; i++)
105 for (j = 0; j < sizeof(str)-1; j++)
106 str[j] = rand() & 255;
110 while ((data_buf = zebra_strmap_lookup(sm, str, j, &data_len)))
112 if (data_len == sizeof v && v == *((int*) data_buf))
116 if (!(data_buf && data_len == sizeof v
117 && v == *((int*) data_buf)))
121 YAZ_CHECK_EQ(failed, 0);
123 zebra_strmap_destroy(sm);
126 int main (int argc, char **argv)
128 YAZ_CHECK_INIT(argc, argv);
137 * indent-tabs-mode: nil
139 * vim: shiftwidth=4 tabstop=8 expandtab