add changelog for 1.13
[beanstalkd.git] / testms.c
blob591e6d6b4f4bd020b222aa08e0c3c522698922af
1 #include "dat.h"
2 #include <stdint.h>
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <sys/time.h>
7 #include "ct/ct.h"
10 void
11 cttest_ms_append()
13 Ms *a = new(struct Ms);
14 ms_init(a, NULL, NULL);
16 int i = 10;
18 int ok = ms_append(a, &i);
19 assertf(a->len == 1, "a should contain one item");
20 assertf(ok, "should be added");
22 ok = ms_append(a, &i);
23 assertf(a->len == 2, "a should contain two items");
24 assertf(ok, "should be added");
26 ms_clear(a);
27 assertf(a->len == 0, "a should be empty");
28 free(a->items);
29 free(a);
32 void
33 cttest_ms_remove()
36 Ms *a = new(struct Ms);
37 ms_init(a, NULL, NULL);
39 int i = 1;
40 ms_append(a, &i);
42 int j = 2;
43 int ok = ms_remove(a, &j);
44 assertf(!ok, "j should not be removed");
46 ok = ms_remove(a, &i);
47 assertf(ok, "i should be removed");
49 ok = ms_remove(a, &i);
50 assertf(!ok, "i was already removed");
52 assertf(a->len == 0, "a should be empty");
53 free(a->items);
54 free(a);
57 void
58 cttest_ms_contains()
61 Ms *a = new(struct Ms);
62 ms_init(a, NULL, NULL);
64 int i = 1;
65 ms_append(a, &i);
66 int ok = ms_contains(a, &i);
67 assertf(ok, "i should be in a");
69 int j = 2;
70 ok = ms_contains(a, &j);
71 assertf(!ok, "j should not be in a");
73 ms_clear(a);
74 free(a->items);
75 free(a);
78 void
79 cttest_ms_clear_empty()
82 Ms *a = new(struct Ms);
83 ms_init(a, NULL, NULL);
85 ms_clear(a);
86 assertf(a->len == 0, "a should be empty");
87 free(a->items);
88 free(a);
91 void
92 cttest_ms_take()
94 Ms *a = new(struct Ms);
95 ms_init(a, NULL, NULL);
97 int i = 10;
98 int j = 20;
100 ms_append(a, &i);
101 ms_append(a, &j);
103 int *n;
104 n = (int *)ms_take(a);
105 assertf(n == &i, "n should point to i");
107 n = (int *)ms_take(a);
108 assertf(n == &j, "n should point to j");
110 n = (int *)ms_take(a);
111 assertf(n == NULL, "n should be NULL; ms is empty");
113 free(a->items);
114 free(a);
117 void
118 cttest_ms_take_sequence()
120 size_t i;
121 int s[] = {1, 2, 3, 4, 5, 6};
122 int e[] = {1, 2, 3, 6, 5, 4};
124 Ms *a = new(struct Ms);
125 ms_init(a, NULL, NULL);
127 size_t n = sizeof(s)/sizeof(s[0]);
128 for (i = 0; i < n; i++)
129 ms_append(a, &s[i]);
131 for (i = 0; i < n; i++) {
132 int *got = (int *)ms_take(a);
133 assert(*got == e[i]);
136 free(a->items);
137 free(a);