test/t_queue.c: rewritten, catches bug in dequeue.
This commit is contained in:
parent
9ba3767e28
commit
896c356d00
1 changed files with 77 additions and 12 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue