void circular_buffer_enqueue_test() { CircularBuffer *buffer = circular_buffer_create(12); circular_buffer_enqueue(buffer, 1); test_int(circular_buffer_dequeue(buffer), 1, "Enqueue and dequeue value"); circular_buffer_destroy(buffer); }
void mesg_queue_create(mesg_queue **q) { mesg_queue * retval = malloc(sizeof(mesg_queue)); memset(retval, 0, sizeof(mesg_queue)); smc_init_magic(mesg_queue, retval); retval->poisoned = 0; pthread_mutex_init(&retval->lock, NULL); circular_buffer_create(&retval->buffer, 10); *q = retval; };
int main(int argc, char* argv[]) { circular_buffer_t cb = circular_buffer_create(0); circular_buffer_test(cb); circular_buffer_delete(&cb); return 0; }
void circular_buffer_wrap_around_test() { int ii; CircularBuffer *buffer = circular_buffer_create(12); for (ii = 1; ii <= 13; ii++) circular_buffer_enqueue(buffer, ii); test_int(circular_buffer_dequeue(buffer), 13, "Enqueue wraps around"); for (ii = 2; ii <= 12; ii++) { test_int(circular_buffer_dequeue(buffer), ii, "Dequeue continues after wrap-around"); } circular_buffer_destroy(buffer); }