Initial import to Tizen
[profile/ivi/sphinxbase.git] / test / unit / test_alloc / test_listelem_alloc.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include <listelem_alloc.h>
5
6 #include "test_macros.h"
7
8 struct bogus {
9         char const *str;
10         long foobie;
11 };
12
13 int
14 main(int argc, char *argv[])
15 {
16         listelem_alloc_t *le;
17         struct bogus *bogus1, *bogus2;
18         int i;
19
20         TEST_ASSERT(le = listelem_alloc_init(sizeof(struct bogus)));
21         bogus1 = listelem_malloc(le);
22         bogus1->str = "hello";
23         bogus1->foobie = 42;
24         bogus2 = listelem_malloc(le);
25         bogus2->str = "goodbye";
26         bogus2->foobie = 69;
27         TEST_EQUAL(bogus1->foobie, 42);
28         TEST_EQUAL(0, strcmp(bogus1->str, "hello"));
29         listelem_free(le, bogus1);
30         listelem_free(le, bogus2);
31         listelem_alloc_free(le);
32
33         TEST_ASSERT(le = listelem_alloc_init(sizeof(struct bogus)));
34         listelem_stats(le);
35         for (i = 0; i < 60; ++i)
36                 bogus1 = listelem_malloc(le);
37         listelem_stats(le);
38         listelem_alloc_free(le);
39
40         {
41                 struct bogus *bogus[600];
42                 int32 bogus_id[600];
43
44                 le = listelem_alloc_init(sizeof(struct bogus));
45                 for (i = 0; i < 600; ++i)
46                         bogus[i] = listelem_malloc_id(le, bogus_id + i);
47                 listelem_stats(le);
48                 for (i = 0; i < 600; ++i) {
49                         TEST_EQUAL(bogus[i], listelem_get_item(le, bogus_id[i]));
50                 }
51                 for (i = 0; i < 600; ++i)
52                         listelem_free(le, bogus[i]);
53                 listelem_stats(le);
54                 for (i = 0; i < 600; ++i)
55                         bogus[i] = listelem_malloc_id(le, bogus_id + i);
56                 listelem_stats(le);
57                 for (i = 0; i < 600; ++i)
58                         TEST_EQUAL(bogus[i], listelem_get_item(le, bogus_id[i]));
59                 listelem_alloc_free(le);
60         }
61
62
63         return 0;
64 }