Archived
1
0
Fork 0

test/t_queue.c: rewritten, catches bug in dequeue.

This commit is contained in:
Henrik Hautakoski 2011-01-27 17:09:35 +01:00
parent 9ba3767e28
commit 896c356d00

View file

@ -3,32 +3,97 @@
#include <stdlib.h>
#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;
}