#include "tests/RingBufferTests.h" #include "data/RingBuffer.h" #include "test/Test.h" static void testReadAndWrite() { Core::RingBuffer buffer; CORE_TEST_FALSE(buffer.canRemove()); CORE_TEST_EQUAL(0, buffer.getLength()); buffer.add(4); CORE_TEST_EQUAL(1, buffer.getLength()); CORE_TEST_TRUE(buffer.canRemove()); CORE_TEST_EQUAL(4, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_FALSE(buffer.canRemove()); CORE_TEST_EQUAL(0, buffer.getLength()); } static void testOverflow() { Core::RingBuffer buffer; bool r1 = buffer.add(1); bool r2 = buffer.add(2); bool r3 = buffer.add(3); bool r4 = buffer.add(4); bool r5 = buffer.add(5); CORE_TEST_EQUAL(3, buffer.getLength()); CORE_TEST_FALSE(r1); CORE_TEST_FALSE(r2); CORE_TEST_FALSE(r3); CORE_TEST_TRUE(r4); CORE_TEST_TRUE(r5); CORE_TEST_EQUAL(1, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(2, buffer.getLength()); CORE_TEST_EQUAL(2, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(1, buffer.getLength()); CORE_TEST_EQUAL(3, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_FALSE(buffer.canRemove()); CORE_TEST_EQUAL(0, buffer.getLength()); } static void testRefill() { Core::RingBuffer buffer; buffer.add(1); buffer.add(2); buffer.add(3); buffer.add(4); CORE_TEST_EQUAL(3, buffer.getLength()); CORE_TEST_TRUE(buffer.canRemove()); CORE_TEST_EQUAL(1, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(2, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(3, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(0, buffer.getLength()); CORE_TEST_FALSE(buffer.canRemove()); buffer.add(5); buffer.add(6); CORE_TEST_EQUAL(2, buffer.getLength()); CORE_TEST_TRUE(buffer.canRemove()); CORE_TEST_EQUAL(5, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_EQUAL(6, buffer[0]); CORE_TEST_FALSE(buffer.remove()); CORE_TEST_FALSE(buffer.canRemove()); CORE_TEST_EQUAL(0, buffer.getLength()); } static void testClear() { Core::RingBuffer buffer; buffer.add(1); buffer.add(2); CORE_TEST_EQUAL(2, buffer.getLength()); buffer.clear(); CORE_TEST_FALSE(buffer.canRemove()); CORE_TEST_EQUAL(0, buffer.getLength()); } void Core::RingBufferTests::test() { testReadAndWrite(); testOverflow(); testRefill(); testClear(); }