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 <stdlib.h>
|
||||||
#include "../src/queue.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};
|
static void setup() {
|
||||||
queue_t q = queue_init();
|
|
||||||
|
|
||||||
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]);
|
queue_enqueue(q, &map[i]);
|
||||||
|
}
|
||||||
|
|
||||||
assert(queue_num_items(q) == 10);
|
static void tierdown() {
|
||||||
|
|
||||||
for(i=0; i < 4; i++) {
|
if (q)
|
||||||
int *c = queue_dequeue(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++)
|
void test_isempty() {
|
||||||
queue_enqueue(q, &map[i]);
|
|
||||||
|
setup();
|
||||||
|
|
||||||
assert(queue_isempty(q) == 0);
|
assert(queue_isempty(q) == 0);
|
||||||
|
|
||||||
while(queue_dequeue(q));
|
while(queue_dequeue(q));
|
||||||
|
|
||||||
assert(queue_isempty(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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue