view src/dequeue_test.c @ 10:68f85ffc6029

Finished rbtree. Reworked the iterators in list. Minor tweaks to others.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 18:24:53 -0500
parents abdba37f67a2
children
line source
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <errno.h>
5 #include "dequeue.h"
7 #define MAX 10
9 int main(int argc, char**argv)
10 {
11 int i, j;
12 int *ip;
13 struct dequeue * deq;
15 deq = dequeue_new(MAX);
16 if (NULL == deq)
17 {
18 perror("dequeue_new");
19 exit(EXIT_FAILURE);
20 }
22 // Fill the dequeue
23 for (i=0; i < MAX; i++)
24 {
25 ip = malloc(sizeof(int));
26 *ip = i;
27 if (NULL == dequeue_push_top(deq, (void *) ip))
28 perror("dequeue_push");
29 }
31 // remove 5 items
32 printf("dequeue size is %zd\n", dequeue_size(deq));
33 for (j=0; j < 5 && NULL != (ip = dequeue_pop_top(deq)); j++)
34 {
35 printf("%d\n", *ip);
36 free(ip);
37 }
38 printf("dequeue size is %zd\n", dequeue_size(deq));
40 // Overfill the dequeue
41 printf("Overfilling the queue. 5 failures are expected.\n");
42 for (i=MAX; i < 2*MAX; i++)
43 {
44 ip = malloc(sizeof(int));
45 if (NULL == ip)
46 {
47 perror("malloc");
48 exit(EXIT_FAILURE);
49 }
50 *ip = i;
51 errno = 0;
52 if (NULL == dequeue_push_top(deq, (void *) ip))
53 {
54 printf("dequeue_push_top failed\n");
55 free(ip);
56 }
57 }
59 // Empty the dequeue
60 printf("dequeue size is %zd\n", dequeue_size(deq));
61 while (NULL != (ip = dequeue_pop_top(deq)))
62 {
63 printf("%d\n", *ip);
64 free(ip);
65 }
66 printf("dequeue size is %zd\n", dequeue_size(deq));
68 // Add 3 to top
69 for (i=0; i < 3; i++)
70 {
71 ip = malloc(sizeof(int));
72 *ip = i;
73 if (NULL == dequeue_push_top(deq, (void *) ip))
74 {
75 printf("dequeue_push_top failed\n");
76 free(ip);
77 }
78 }
79 // Add 3 to bottom
80 for (;i < 6; i++)
81 {
82 ip = malloc(sizeof(int));
83 *ip = i;
84 if (NULL == dequeue_push_bottom(deq, (void *) ip))
85 {
86 perror("dequeue_push");
87 free(ip);
88 }
89 }
90 // empty by alternation
91 printf("dequeue size is %zd\n", dequeue_size(deq));
92 while (0 != dequeue_size(deq))
93 {
94 if ((ip = dequeue_pop_top(deq)))
95 {
96 printf("%d\n", *ip);
97 free(ip);
98 }
99 if ((ip = dequeue_pop_bottom(deq)))
100 {
101 printf("%d\n", *ip);
102 free(ip);
103 }
104 }
105 printf("dequeue size is %zd\n", dequeue_size(deq));
107 dequeue_delete(deq);
109 exit(EXIT_SUCCESS);
110 }