diff --git a/cube/User/Src/ringbuffer.c b/cube/User/Src/ringbuffer.c index d934800..0f10f4a 100644 --- a/cube/User/Src/ringbuffer.c +++ b/cube/User/Src/ringbuffer.c @@ -62,6 +62,8 @@ int ringbufferPut(ringbuffer_t *handle, uint8_t *data, uint32_t dataLen) { freeSpace = (handle->bufferSize - handle->bufferWriteIdx) + handle->bufferReadIdx; } + freeSpace--; + if (dataLen > freeSpace) { return -1; } diff --git a/tests/testRingbuffer/test.c b/tests/testRingbuffer/test.c index 2d969a8..4578486 100644 --- a/tests/testRingbuffer/test.c +++ b/tests/testRingbuffer/test.c @@ -43,6 +43,23 @@ void testRingbuffer0() { CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 0); CU_ASSERT(rb.bufferReadIdx == 0); + + CU_ASSERT(rb.buffer[0] == 0); + CU_ASSERT(rb.buffer[1] == 0); + CU_ASSERT(rb.buffer[2] == 0); + CU_ASSERT(rb.buffer[3] == 0); + CU_ASSERT(rb.buffer[4] == 0); + CU_ASSERT(rb.buffer[5] == 0); + CU_ASSERT(rb.buffer[6] == 0); + CU_ASSERT(rb.buffer[7] == 0); + CU_ASSERT(rb.buffer[8] == 0); + CU_ASSERT(rb.buffer[9] == 0); + CU_ASSERT(rb.buffer[10] == 0); + CU_ASSERT(rb.buffer[11] == 0); + CU_ASSERT(rb.buffer[12] == 0); + CU_ASSERT(rb.buffer[13] == 0); + CU_ASSERT(rb.buffer[14] == 0); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer1() { @@ -60,6 +77,23 @@ void testRingbuffer1() { CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 5); CU_ASSERT(rb.bufferReadIdx == 0); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 0); + CU_ASSERT(rb.buffer[6] == 0); + CU_ASSERT(rb.buffer[7] == 0); + CU_ASSERT(rb.buffer[8] == 0); + CU_ASSERT(rb.buffer[9] == 0); + CU_ASSERT(rb.buffer[10] == 0); + CU_ASSERT(rb.buffer[11] == 0); + CU_ASSERT(rb.buffer[12] == 0); + CU_ASSERT(rb.buffer[13] == 0); + CU_ASSERT(rb.buffer[14] == 0); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer2() { @@ -77,6 +111,23 @@ void testRingbuffer2() { CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 10); CU_ASSERT(rb.bufferReadIdx == 0); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 0); + CU_ASSERT(rb.buffer[11] == 0); + CU_ASSERT(rb.buffer[12] == 0); + CU_ASSERT(rb.buffer[13] == 0); + CU_ASSERT(rb.buffer[14] == 0); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer3() { @@ -94,6 +145,23 @@ void testRingbuffer3() { CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 0); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer4() { @@ -110,6 +178,23 @@ void testRingbuffer4() { CU_ASSERT(rb.bufferSize == 16); CU_ASSERT(rb.bufferWriteIdx == 15); CU_ASSERT(rb.bufferReadIdx == 0); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer5() { @@ -129,6 +214,23 @@ void testRingbuffer5() { uint8_t rr = (uint8_t) r; CU_ASSERT(rr == 'a'); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == 0); } void testRingbuffer6() { @@ -176,8 +278,528 @@ void testRingbuffer6() { rr = (uint8_t) r; CU_ASSERT(rr == 'd'); + + CU_ASSERT(rb.buffer[0] == 'a'); + CU_ASSERT(rb.buffer[1] == 'b'); + CU_ASSERT(rb.buffer[2] == 'c'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == 0); } +void testRingbuffer7() { +#ifdef DEBUG + printf("\nPut 5 chars in buffer\n"); +#endif + int r = ringbufferPut(&rb, "1234", 4); +#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 == 3); + CU_ASSERT(rb.bufferReadIdx == 4); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1'); +} + +void testRingbuffer8() { +#ifdef DEBUG + printf("\nPut 5 chars in buffer\n"); +#endif + int r = ringbufferPut(&rb, "67890", 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 == 3); + CU_ASSERT(rb.bufferReadIdx == 4); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1') +} + +void testRingbuffer9() { +#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 == 3); + CU_ASSERT(rb.bufferReadIdx == 5); + + uint8_t rr = (uint8_t) r; + CU_ASSERT(rr == 'e'); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == 'd'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1') +} + +void testRingbuffer10() { +#ifdef DEBUG + printf("\nPut 1 chars in buffer\n"); +#endif + int r = ringbufferPut(&rb, "$", 1); +#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 == 4); + CU_ASSERT(rb.bufferReadIdx == 5); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == '$'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1') +} + +void testRingbuffer11() { +#ifdef DEBUG + printf("\nPut 1 chars in buffer\n"); +#endif + int r = ringbufferPut(&rb, "%", 1); +#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 == 4); + CU_ASSERT(rb.bufferReadIdx == 5); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == '$'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1') +} + +void testRingbuffer12() { +#ifdef DEBUG + printf("\nRead unless the buffer is empty\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 == 4); + CU_ASSERT(rb.bufferReadIdx == 6); + + uint8_t rr = (uint8_t) r; + CU_ASSERT(rr == 'f'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 7); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'g'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 8); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'h'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 9); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'i'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 10); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'j'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 11); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'k'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 12); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'l'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 13); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'm'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 14); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'n'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 15); + + rr = (uint8_t) r; + CU_ASSERT(rr == 'o'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 0); + + rr = (uint8_t) r; + CU_ASSERT(rr == '1'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 1); + + rr = (uint8_t) r; + CU_ASSERT(rr == '2'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 2); + + rr = (uint8_t) r; + CU_ASSERT(rr == '3'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 3); + + rr = (uint8_t) r; + CU_ASSERT(rr == '4'); + + 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 == 4); + CU_ASSERT(rb.bufferReadIdx == 4); + + rr = (uint8_t) r; + CU_ASSERT(rr == '$'); + + r = ringbufferGetOne(&rb); +#ifdef DEBUG + printRingbuffer(&rb); +#endif + + CU_ASSERT(r == -1); + CU_ASSERT(rb.buffer != NULL); + CU_ASSERT(rb.bufferSize == 16); + CU_ASSERT(rb.bufferWriteIdx == 4); + CU_ASSERT(rb.bufferReadIdx == 4); + + r = ringbufferGetOne(&rb); +#ifdef DEBUG + printRingbuffer(&rb); +#endif + + CU_ASSERT(r == -1); + CU_ASSERT(rb.buffer != NULL); + CU_ASSERT(rb.bufferSize == 16); + CU_ASSERT(rb.bufferWriteIdx == 4); + CU_ASSERT(rb.bufferReadIdx == 4); + + CU_ASSERT(rb.buffer[0] == '2'); + CU_ASSERT(rb.buffer[1] == '3'); + CU_ASSERT(rb.buffer[2] == '4'); + CU_ASSERT(rb.buffer[3] == '$'); + CU_ASSERT(rb.buffer[4] == 'e'); + CU_ASSERT(rb.buffer[5] == 'f'); + CU_ASSERT(rb.buffer[6] == 'g'); + CU_ASSERT(rb.buffer[7] == 'h'); + CU_ASSERT(rb.buffer[8] == 'i'); + CU_ASSERT(rb.buffer[9] == 'j'); + CU_ASSERT(rb.buffer[10] == 'k'); + CU_ASSERT(rb.buffer[11] == 'l'); + CU_ASSERT(rb.buffer[12] == 'm'); + CU_ASSERT(rb.buffer[13] == 'n'); + CU_ASSERT(rb.buffer[14] == 'o'); + CU_ASSERT(rb.buffer[15] == '1') +} + + +void testRingbuffer13() { +#ifdef DEBUG + printf("\nPut some chars in buffer\n"); +#endif + char t[] = "Hello World\n"; + int r = ringbufferPut(&rb, t, strlen(t)); +#ifdef DEBUG + printf("r = %d\n", r); + printRingbuffer(&rb); +#endif + + CU_ASSERT(r == 0); +} + +void testRingbuffer14() { +#ifdef DEBUG + printf("\nPut some chars in buffer\n"); +#endif + char t[] = "Hello World\n"; + int r = ringbufferPut(&rb, t, strlen(t)); +#ifdef DEBUG + printf("r = %d\n", r); + printRingbuffer(&rb); +#endif + + CU_ASSERT(r == -1); +} + +void testRingbuffer15() { +#ifdef DEBUG + printf("\nRead all chars from buffer\n"); +#endif + char goldValue[] = "Hello World\n"; + char buffer[20]; + memset(buffer, 0, 20); + + int c; + uint8_t i = 0; + while (0 < (c = ringbufferGetOne(&rb))) { + buffer[i] = (uint8_t) c; + i++; + } + + CU_ASSERT(strcmp(goldValue, buffer) == 0); +} + +void testRingbuffer16() { +#ifdef DEBUG + printf("\nPut some chars in buffer\n"); +#endif + char goldValue[] = "Wolfgang\n"; + int r = ringbufferPut(&rb, goldValue, strlen(goldValue)); +#ifdef DEBUG + printf("r = %d\n", r); + printRingbuffer(&rb); +#endif + + CU_ASSERT(r == 0); + +#ifdef DEBUG + printf("\nRead all chars from buffer\n"); +#endif + char buffer[20]; + memset(buffer, 0, 20); + + int c; + uint8_t i = 0; + while (0 < (c = ringbufferGetOne(&rb))) { + buffer[i] = (uint8_t) c; + i++; + } + + CU_ASSERT(strcmp(goldValue, buffer) == 0); +} + + void testRingbuffer99() { #ifdef DEBUG printf("De-Initialize ringbuffer\n"); @@ -210,6 +832,16 @@ int main() { (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 7 of ringbuffer", testRingbuffer7)) || + (NULL == CU_add_test(ringbufferSuite, "test 8 of ringbuffer", testRingbuffer8)) || + (NULL == CU_add_test(ringbufferSuite, "test 9 of ringbuffer", testRingbuffer9)) || + (NULL == CU_add_test(ringbufferSuite, "test 10 of ringbuffer", testRingbuffer10)) || + (NULL == CU_add_test(ringbufferSuite, "test 11 of ringbuffer", testRingbuffer11)) || + (NULL == CU_add_test(ringbufferSuite, "test 12 of ringbuffer", testRingbuffer12)) || + (NULL == CU_add_test(ringbufferSuite, "test 13 of ringbuffer", testRingbuffer13)) || + (NULL == CU_add_test(ringbufferSuite, "test 14 of ringbuffer", testRingbuffer14)) || + (NULL == CU_add_test(ringbufferSuite, "test 14 of ringbuffer", testRingbuffer15)) || + (NULL == CU_add_test(ringbufferSuite, "test 14 of ringbuffer", testRingbuffer16)) || (NULL == CU_add_test(ringbufferSuite, "test 99 of ringbuffer, free", testRingbuffer99)) || 0 ) { CU_cleanup_registry();