Added test to wrap head and tail of ringbuffer to silence naysayers.

This commit is contained in:
skarg
2011-01-08 13:16:03 +00:00
parent d8ce33b9bf
commit 9492b49c15
+65 -33
View File
@@ -192,9 +192,58 @@ void Ringbuf_Init(
#ifdef TEST #ifdef TEST
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
#include <limits.h>
#include "ctest.h" #include "ctest.h"
/* test the ring buffer */
void testRingAroundBuffer(
Test * pTest,
RING_BUFFER *test_buffer,
uint8_t * data_element,
unsigned element_size,
unsigned element_count)
{
uint8_t *test_data;
unsigned index;
unsigned data_index;
unsigned count;
unsigned dummy;
bool status;
ct_test(pTest, Ringbuf_Empty(test_buffer));
/* test the ring around the buffer */
for (index = 0; index < element_count; index++) {
for (count = 1; count < 4; count++) {
dummy = index * count;
for (data_index = 0; data_index < element_size; data_index++) {
data_element[data_index] = dummy;
}
status = Ringbuf_Put(test_buffer, data_element);
ct_test(pTest, status == true);
}
for (count = 1; count < 4; count++) {
dummy = index * count;
test_data = Ringbuf_Get_Front(test_buffer);
ct_test(pTest, test_data);
if (test_data) {
for (data_index = 0; data_index < element_size; data_index++) {
ct_test(pTest, test_data[data_index] == dummy);
}
}
test_data = Ringbuf_Pop_Front(test_buffer);
ct_test(pTest, test_data);
if (test_data) {
for (data_index = 0; data_index < element_size; data_index++) {
ct_test(pTest, test_data[data_index] == dummy);
}
}
}
}
ct_test(pTest, Ringbuf_Empty(test_buffer));
}
/* test the ring buffer */ /* test the ring buffer */
void testRingBuf( void testRingBuf(
Test * pTest, Test * pTest,
@@ -207,8 +256,6 @@ void testRingBuf(
uint8_t *test_data; uint8_t *test_data;
unsigned index; unsigned index;
unsigned data_index; unsigned data_index;
unsigned count;
unsigned dummy;
bool status; bool status;
Ringbuf_Init(&test_buffer, data_store, element_size, element_count); Ringbuf_Init(&test_buffer, data_store, element_size, element_count);
@@ -272,38 +319,23 @@ void testRingBuf(
} }
ct_test(pTest, Ringbuf_Empty(&test_buffer)); ct_test(pTest, Ringbuf_Empty(&test_buffer));
/* test the ring around the buffer */ testRingAroundBuffer(
for (index = 0; index < element_count; index++) { pTest,
for (count = 1; count < 4; count++) { &test_buffer,
dummy = index * count; data_element,
for (data_index = 0; data_index < element_size; data_index++) { element_size,
data_element[data_index] = dummy; element_count);
}
status = Ringbuf_Put(&test_buffer, data_element);
ct_test(pTest, status == true);
}
for (count = 1; count < 4; count++) { /* adjust the internal index of Ringbuf to test unsigned wrapping */
dummy = index * count; test_buffer.head = UINT_MAX-1;
test_data = Ringbuf_Get_Front(&test_buffer); test_buffer.tail = UINT_MAX-1;
ct_test(pTest, test_data);
if (test_data) {
for (data_index = 0; data_index < element_size; data_index++) {
ct_test(pTest, test_data[data_index] == dummy);
}
}
test_data = Ringbuf_Pop_Front(&test_buffer);
ct_test(pTest, test_data);
if (test_data) {
for (data_index = 0; data_index < element_size; data_index++) {
ct_test(pTest, test_data[data_index] == dummy);
}
}
}
}
ct_test(pTest, Ringbuf_Empty(&test_buffer));
testRingAroundBuffer(
pTest,
&test_buffer,
data_element,
element_size,
element_count);
return; return;
} }