simple search.h tests
[libc-test] / src / functional / search_insque.c
1 #include <stdlib.h>
2 #include <search.h>
3 #include "test.h"
4
5 struct q {
6         struct q *n;
7         struct q *p;
8         int i;
9 };
10
11 static struct q *new(int i)
12 {
13         struct q *q = malloc(sizeof *q);
14         q->i = i;
15         return q;
16 }
17
18 int main()
19 {
20         struct q *q = new(0);
21         struct q *p;
22         int i;
23
24         insque(q, 0);
25         for (i = 1; i < 10; i++) {
26                 insque(new(i), q);
27                 q = q->n;
28         }
29         p = q;
30         while (q) {
31                 if (q->i != --i)
32                         t_error("walking queue: got %d, wanted %d\n", q->i, i);
33                 q = q->p;
34         }
35         remque(p->p);
36         if (p->p->i != p->i-2)
37                 t_error("remque: got %d, wanted %d\n", p->p->i, p->i-2);
38         if (p->p->n->i != p->i)
39                 t_error("remque: got %d, wanted %d\n", p->p->n->i, p->i);
40         return t_status;
41 }