diff --git a/test/t_queue.c b/test/t_queue.c index 5e96e4b..02d4956 100644 --- a/test/t_queue.c +++ b/test/t_queue.c @@ -3,32 +3,97 @@ #include #include "../src/queue.h" -int main() { +static int map[512]; +static queue_t q = NULL; - int i, map[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - queue_t q = queue_init(); +static void setup() { - for(i=0; i < 10; i++) + int i; + + if (!q) + assert(q = queue_init()); + + for(i=0; i < 512; i++) queue_enqueue(q, &map[i]); +} - assert(queue_num_items(q) == 10); +static void tierdown() { - for(i=0; i < 4; i++) { - int *c = queue_dequeue(q); + if (q) + while(queue_dequeue(q)); +} + +void test_enqueue() { + + setup(); + + assert(queue_num_items(q) == 512); + + tierdown(); +} + +void test_dequeue() { + + int i, t; + + assert(queue_dequeue(NULL) == NULL); + assert(queue_dequeue(q) == NULL); + + setup(); + + for(i=0; i < 512; i++) + assert(queue_dequeue(q) == &map[i]); - assert(c == &map[i]); - } + tierdown(); +} - for(i=4; i < 10; i++) - queue_enqueue(q, &map[i]); +void test_isempty() { + + setup(); assert(queue_isempty(q) == 0); while(queue_dequeue(q)); assert(queue_isempty(q)); + assert(queue_isempty(NULL)); + + tierdown(); +} - queue_destroy(q); +void test_num_items() { + int i; + + assert(queue_num_items(NULL) == 0); + assert(queue_num_items(q) == 0); + + setup(); + + assert(queue_num_items(q) == 512); + + for(i=0; i < 512/3; i++) + queue_dequeue(q); + + assert(queue_num_items(q) == 512 - 512/3); + + tierdown(); +} + +int main() { + + int i; + + for(i=0; i < 512; i++) + map[i] = i; + + test_enqueue(); + test_dequeue(); + test_isempty(); + test_num_items(); + + if (q) + queue_destroy(q); + return 0; }