12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "tests/RingBufferTests.h"
- #include "data/RingBuffer.h"
- #include "test/Test.h"
- static void testReadAndWrite() {
- Core::RingBuffer<int, 5> 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<int, 3> 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<int, 3> 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<int, 3> 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();
- }
|