#include #include #include #include // #define DEBUG ringbuffer_t rb; void printRingbuffer(ringbuffer_t *rb) { printf("Ringbuffer:\n"); printf(" Size: %u\n", rb->bufferSize); printf(" ReadIdx: %u\n", rb->bufferReadIdx); printf(" WriteIdx: %u\n", rb->bufferWriteIdx); for (uint32_t i = 0; i < rb->bufferSize; i++) { printf("%02x ", rb->buffer[i]); } printf("\n"); } int init_suite_ringbuffer(void) { return 0; } int clean_suite_ringbuffer(void) { return 0; } void testRingbuffer0() { #ifdef DEBUG printf("Initialize ringbuffer\n"); #endif ringbufferInit(&rb, 16); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 0); CU_ASSERT(rb.bufferReadIdx == 0); } void testRingbuffer1() { #ifdef DEBUG printf("\nPut 5 chars in buffer\n"); #endif int r = ringbufferPut(&rb, "abcde", 5); #ifdef DEBUG printf("r = %d\n", r); printRingbuffer(&rb); #endif CU_ASSERT(r == 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 5); CU_ASSERT(rb.bufferReadIdx == 0); } void testRingbuffer2() { #ifdef DEBUG printf("\nPut 5 chars in buffer\n"); #endif int r = ringbufferPut(&rb, "fghij", 5); #ifdef DEBUG printf("r = %d\n", r); printRingbuffer(&rb); #endif CU_ASSERT(r == 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 10); CU_ASSERT(rb.bufferReadIdx == 0); } void testRingbuffer3() { #ifdef DEBUG printf("\nPut 5 chars in buffer\n"); #endif int r = ringbufferPut(&rb, "klmno", 5); #ifdef DEBUG printf("r = %d\n", r); printRingbuffer(&rb); #endif CU_ASSERT(r == 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 0); } void testRingbuffer4() { #ifdef DEBUG printf("\nPut 5 chars in buffer\n"); #endif int r = ringbufferPut(&rb, "pqrst", 5); #ifdef DEBUG printf("r = %d\n", r); printRingbuffer(&rb); #endif CU_ASSERT(r == -1); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 0); } void testRingbuffer5() { #ifdef DEBUG printf("\nRead one char from buffer\n"); #endif int r = ringbufferGetOne(&rb); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(r >= 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 1); uint8_t rr = (uint8_t) r; CU_ASSERT(rr == 'a'); } void testRingbuffer6() { #ifdef DEBUG printf("\nRead some char from buffer\n"); #endif int r = ringbufferGetOne(&rb); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(r >= 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 2); uint8_t rr = (uint8_t) r; CU_ASSERT(rr == 'b'); r = ringbufferGetOne(&rb); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(r >= 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 3); rr = (uint8_t) r; CU_ASSERT(rr == 'c'); r = ringbufferGetOne(&rb); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(r >= 0); CU_ASSERT(rb.buffer != NULL); CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 4); rr = (uint8_t) r; CU_ASSERT(rr == 'd'); } void testRingbuffer99() { #ifdef DEBUG printf("De-Initialize ringbuffer\n"); #endif ringbufferFree(&rb); #ifdef DEBUG printRingbuffer(&rb); #endif CU_ASSERT(rb.buffer == NULL); CU_ASSERT(rb.bufferSize == 0); CU_ASSERT(rb.bufferWriteIdx == 0); CU_ASSERT(rb.bufferReadIdx == 0); } int main() { if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error(); CU_pSuite ringbufferSuite = CU_add_suite("Suite_Ringbuffer", init_suite_ringbuffer, clean_suite_ringbuffer); if (NULL == ringbufferSuite) { CU_cleanup_registry(); return CU_get_error(); } if ((NULL == CU_add_test(ringbufferSuite, "test 0 of ringbuffer, init", testRingbuffer0)) || (NULL == CU_add_test(ringbufferSuite, "test 1 of ringbuffer", testRingbuffer1)) || (NULL == CU_add_test(ringbufferSuite, "test 2 of ringbuffer", testRingbuffer2)) || (NULL == CU_add_test(ringbufferSuite, "test 3 of ringbuffer", testRingbuffer3)) || (NULL == CU_add_test(ringbufferSuite, "test 4 of ringbuffer", testRingbuffer4)) || (NULL == CU_add_test(ringbufferSuite, "test 5 of ringbuffer", testRingbuffer5)) || (NULL == CU_add_test(ringbufferSuite, "test 6 of ringbuffer", testRingbuffer6)) || (NULL == CU_add_test(ringbufferSuite, "test 99 of ringbuffer, free", testRingbuffer99)) || 0 ) { CU_cleanup_registry(); return CU_get_error(); } CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests(); CU_cleanup_registry(); return CU_get_error(); }