123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #include "../Tests.h"
- #include "core/RingBuffer.h"
- #include "core/ToString.h"
- #include "core/Utility.h"
- static void testReadAndWrite() {
- CoreRingBuffer r = CORE_RING_BUFFER(5, sizeof(size_t));
- CORE_TEST_SIZE(0, r.length);
- coreRingBufferAdd(&r, size_t, 4);
- CORE_TEST_SIZE(1, r.length);
- CORE_TEST_SIZE(4, coreRingBufferGet(&r, 0, size_t));
- CORE_TEST_SIZE(4, coreRingBufferGetC(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(0, r.length);
- coreDestroyRingBuffer(&r);
- }
- static void testOverflow() {
- CoreRingBuffer r = CORE_RING_BUFFER(3, sizeof(size_t));
- coreRingBufferAdd(&r, size_t, 1);
- coreRingBufferAdd(&r, size_t, 2);
- coreRingBufferAdd(&r, size_t, 3);
- coreRingBufferAdd(&r, size_t, 4);
- coreRingBufferAdd(&r, size_t, 5);
- CORE_TEST_SIZE(3, r.length);
- CORE_TEST_SIZE(1, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(2, r.length);
- CORE_TEST_SIZE(2, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(1, r.length);
- CORE_TEST_SIZE(3, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(0, r.length);
- coreDestroyRingBuffer(&r);
- }
- static void testRefill() {
- CoreRingBuffer r = CORE_RING_BUFFER(3, sizeof(size_t));
- coreRingBufferAdd(&r, size_t, 1);
- coreRingBufferAdd(&r, size_t, 2);
- coreRingBufferAdd(&r, size_t, 3);
- coreRingBufferAdd(&r, size_t, 4);
- CORE_TEST_SIZE(3, r.length);
- CORE_TEST_SIZE(1, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(2, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(3, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(0, r.length);
- coreRingBufferAdd(&r, size_t, 5);
- coreRingBufferAdd(&r, size_t, 6);
- CORE_TEST_SIZE(2, r.length);
- CORE_TEST_SIZE(5, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(6, coreRingBufferGet(&r, 0, size_t));
- coreRingBufferRemove(&r);
- CORE_TEST_SIZE(0, r.length);
- coreDestroyRingBuffer(&r);
- }
- static void testClear() {
- CoreRingBuffer r = CORE_RING_BUFFER(3, sizeof(size_t));
- coreRingBufferAdd(&r, size_t, 1);
- coreRingBufferAdd(&r, size_t, 2);
- CORE_TEST_SIZE(2, r.length);
- coreClearRingBuffer(&r);
- CORE_TEST_SIZE(0, r.length);
- coreDestroyRingBuffer(&r);
- }
- static void testOverall() {
- CoreRingBuffer ri = CORE_RING_BUFFER(3, sizeof(size_t));
- coreRingBufferAdd(&ri, size_t, 1);
- coreRingBufferAdd(&ri, size_t, 2);
- coreRingBufferAdd(&ri, size_t, 3);
- CoreRingBuffer r = CORE_RING_BUFFER(0, 0);
- coreSwapRingBuffer(&r, &ri);
- char buffer[128];
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[1, 2, 3]", buffer);
- CORE_TEST_SIZE(3, r.length);
- coreRingBufferRemove(&r);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[2, 3]", buffer);
- CORE_TEST_SIZE(2, r.length);
- coreRingBufferAdd(&r, size_t, 4);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[2, 3, 4]", buffer);
- CORE_TEST_SIZE(3, r.length);
- coreRingBufferRemove(&r);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[3, 4]", buffer);
- CORE_TEST_SIZE(2, r.length);
- coreRingBufferAdd(&r, size_t, 5);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[3, 4, 5]", buffer);
- CORE_TEST_SIZE(3, r.length);
- coreRingBufferRemove(&r);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[4, 5]", buffer);
- CORE_TEST_SIZE(2, r.length);
- coreClearRingBuffer(&r);
- coreToStringRingBuffer(&r, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_STRING("[]", buffer);
- CORE_TEST_SIZE(0, r.length);
- coreDestroyRingBuffer(&r);
- coreDestroyRingBuffer(&ri);
- }
- void testRingBuffer() {
- testReadAndWrite();
- testOverflow();
- testRefill();
- testClear();
- testOverall();
- }
|