027b8239a41b37e2ee3a969581bebb98770cd8d6
[yaz-moved-to-github.git] / test / test_nmem.c
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) 1995-2011 Index Data
3  * See the file LICENSE for details.
4  */
5
6 #if HAVE_CONFIG_H
7 #include <config.h>
8 #endif
9
10 #include <errno.h>
11 #include <string.h>
12 #include <stdlib.h>
13
14 #include <yaz/nmem.h>
15 #include <yaz/test.h>
16
17 void tst_nmem_malloc(void)
18 {
19     NMEM n;
20     int j;
21     char *cp;
22
23     n = nmem_create();
24     YAZ_CHECK(n);
25
26     for (j = 1; j<500; j++)
27     {
28         cp = (char *) nmem_malloc(n, j);
29         YAZ_CHECK(cp);
30         if ((int) sizeof(long) >= j)
31             *(long*) cp = 123L;
32 #if HAVE_LONG_LONG
33         if ((int) sizeof(long long) >= j)
34             *(long long*) cp = 123L;
35 #endif
36         if ((int) sizeof(double) >= j)
37             *(double*) cp = 12.2;
38     }
39     
40     for (j = 2000; j<20000; j+= 2000)
41     {
42         cp = (char *) nmem_malloc(n, j);
43         YAZ_CHECK(cp);
44     }
45     nmem_destroy(n);
46 }
47
48 void tst_nmem_strsplit(void)
49 {
50     NMEM nmem = nmem_create();
51     int num = 0;
52     char **array = 0;
53
54     nmem_strsplit(nmem, ",", "", &array, &num);
55     YAZ_CHECK(num == 0);
56
57     nmem_strsplitx(nmem, ",", "", &array, &num, 0);
58     YAZ_CHECK(num == 1);
59     YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
60     
61     nmem_strsplit(nmem, ",", ",,", &array, &num);
62     YAZ_CHECK(num == 0);
63
64     nmem_strsplitx(nmem, ",", ",,", &array, &num, 0);
65     YAZ_CHECK(num == 3);
66     YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
67     YAZ_CHECK(num > 1 && !strcmp(array[1], ""));
68     YAZ_CHECK(num > 2 && !strcmp(array[2], ""));
69  
70     nmem_strsplit(nmem, ",", ",a,b,,cd", &array, &num);
71     YAZ_CHECK(num == 3);
72     YAZ_CHECK(num > 0 && !strcmp(array[0], "a"));
73     YAZ_CHECK(num > 1 && !strcmp(array[1], "b"));
74     YAZ_CHECK(num > 2 && !strcmp(array[2], "cd"));
75     nmem_strsplitx(nmem, ",", ",a,b,,cd", &array, &num, 0);
76
77     YAZ_CHECK(num == 5);
78     YAZ_CHECK(num > 0 && !strcmp(array[0], ""));
79     YAZ_CHECK(num > 1 && !strcmp(array[1], "a"));
80     YAZ_CHECK(num > 2 && !strcmp(array[2], "b"));
81     YAZ_CHECK(num > 3 && !strcmp(array[3], ""));
82     YAZ_CHECK(num > 4 && !strcmp(array[4], "cd"));
83
84     nmem_destroy(nmem);
85 }
86
87 int main (int argc, char **argv)
88 {
89     YAZ_CHECK_INIT(argc, argv);
90     tst_nmem_malloc();
91     tst_nmem_strsplit();
92     YAZ_CHECK_TERM;
93 }
94 /*
95  * Local variables:
96  * c-basic-offset: 4
97  * c-file-style: "Stroustrup"
98  * indent-tabs-mode: nil
99  * End:
100  * vim: shiftwidth=4 tabstop=8 expandtab
101  */
102