Something went wrong. Try again.
Various data-structure's written in header only c
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143#include <stdio.h>#include <stdlib.h>#include <unistd.h>
#define QUEUE_IMPLEMENTATION#define QUEUE_DEBUG_
#include "../queue.h"#include "tests.h"
void test_queue_new(void *input, test_result_t *res) { queue q = q_new(10); (void) input; tcheck(q.head == Q_EMPTY_IDX, res); tcheck(q.tail == Q_EMPTY_IDX, res); tcheck(q.size == 10, res); tcheck(q.items != NULL, res);}
void test_queue_enqueue(void *input, test_result_t *res) { queue q = q_new(10); int *life = malloc(sizeof(int)); (void) input; *life = 42; q_enqueue(&q, life); tcheck(q.items[0] == life, res);}
void test_queue_dequeue(void *input, test_result_t *res) { queue q = q_new(10); int *life = malloc(sizeof(int)); (void) input; *life = 42; q_enqueue(&q, life); tcheck(q_dequeue(&q) == life, res);}
void test_queue_peek(void *input, test_result_t *res) { queue q = q_new(10); int *life = malloc(sizeof(int)); (void) input; *life = 42; q_enqueue(&q, life); tcheck(q_peek(&q) == life, res);}
void test_queue_enqueue_many(void *input, test_result_t *res) { queue q = q_new(10); int i; int *num = NULL; (void) input;
for (i = 0; i < 10; i++) { num = malloc(sizeof(int)); *num = i; q_enqueue(&q, num); }
for (i = 0; i < 10; i++) { tcheckn(*( (int *) q.items[i] ) == i, res, i); }}
void test_queue_dequeue_many(void *input, test_result_t *res) { queue q = q_new(10); int i; int *num = NULL; (void) input;
for (i = 0; i < 10; i++) { num = malloc(sizeof(int)); *num = i; q_enqueue(&q, num); }
for (i = 0; i < 10; i++) { tcheckn( *( (int *) q_dequeue(&q)) == i, res, i); }}
void test_queue_is_empty(void *input, test_result_t *res) { queue q = q_new(10); int i; int *num = NULL; (void) input; tcheck(q_is_empty(&q), res);
for (i = 0; i < 10; i++) { num = malloc(sizeof(int)); *num = i; q_enqueue(&q, num); tcheckn(!q_is_empty(&q), res, i); }}
void test_queue_is_full(void *input, test_result_t *res) { queue q = q_new(10); int i; int *num = NULL; (void) input; tcheck(!q_is_full(&q), res);
for (i = 0; i < 10; i++) { num = malloc(sizeof(int)); *num = i; q_enqueue(&q, num); tcheckn(i == 9 || !q_is_full(&q), res, i); }
tcheckn(q_is_full(&q), res, 10);}
void test_new_queue_dequeue(void *input, test_result_t *res) { queue q = q_new(10); (void) input; tcheck(q_dequeue(&q) == NULL, res);}
void test_new_queue_peek(void *input, test_result_t *res) { queue q = q_new(10); (void) input; tcheck(q_peek(&q) == NULL, res);}
int main(void) { test_data_t t[] = { { "new", test_queue_new }, { "enqueue", test_queue_enqueue }, { "dequeue", test_queue_dequeue }, { "peek", test_queue_peek }, { "enqueue_many", test_queue_enqueue_many }, { "dequeue_many", test_queue_dequeue_many }, { "is_empty", test_queue_is_empty}, { "is_full", test_queue_is_full}, { "new_dequeue_null", test_new_queue_dequeue }, { "new_peek_null", test_new_queue_peek }, {0} };
run_tests(t); return 0;}