RingBufferTests.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "tests/RingBufferTests.h"
  2. #include "data/RingBuffer.h"
  3. #include "test/Test.h"
  4. static void testReadAndWrite() {
  5. Core::RingBuffer<int, 5> buffer;
  6. CORE_TEST_FALSE(buffer.canRemove());
  7. CORE_TEST_EQUAL(0, buffer.getLength());
  8. buffer.add(4);
  9. CORE_TEST_EQUAL(1, buffer.getLength());
  10. CORE_TEST_TRUE(buffer.canRemove());
  11. CORE_TEST_EQUAL(4, buffer[0]);
  12. CORE_TEST_FALSE(buffer.remove());
  13. CORE_TEST_FALSE(buffer.canRemove());
  14. CORE_TEST_EQUAL(0, buffer.getLength());
  15. }
  16. static void testOverflow() {
  17. Core::RingBuffer<int, 3> buffer;
  18. bool r1 = buffer.add(1);
  19. bool r2 = buffer.add(2);
  20. bool r3 = buffer.add(3);
  21. bool r4 = buffer.add(4);
  22. bool r5 = buffer.add(5);
  23. CORE_TEST_EQUAL(3, buffer.getLength());
  24. CORE_TEST_FALSE(r1);
  25. CORE_TEST_FALSE(r2);
  26. CORE_TEST_FALSE(r3);
  27. CORE_TEST_TRUE(r4);
  28. CORE_TEST_TRUE(r5);
  29. CORE_TEST_EQUAL(1, buffer[0]);
  30. CORE_TEST_FALSE(buffer.remove());
  31. CORE_TEST_EQUAL(2, buffer.getLength());
  32. CORE_TEST_EQUAL(2, buffer[0]);
  33. CORE_TEST_FALSE(buffer.remove());
  34. CORE_TEST_EQUAL(1, buffer.getLength());
  35. CORE_TEST_EQUAL(3, buffer[0]);
  36. CORE_TEST_FALSE(buffer.remove());
  37. CORE_TEST_FALSE(buffer.canRemove());
  38. CORE_TEST_EQUAL(0, buffer.getLength());
  39. }
  40. static void testRefill() {
  41. Core::RingBuffer<int, 3> buffer;
  42. buffer.add(1);
  43. buffer.add(2);
  44. buffer.add(3);
  45. buffer.add(4);
  46. CORE_TEST_EQUAL(3, buffer.getLength());
  47. CORE_TEST_TRUE(buffer.canRemove());
  48. CORE_TEST_EQUAL(1, buffer[0]);
  49. CORE_TEST_FALSE(buffer.remove());
  50. CORE_TEST_EQUAL(2, buffer[0]);
  51. CORE_TEST_FALSE(buffer.remove());
  52. CORE_TEST_EQUAL(3, buffer[0]);
  53. CORE_TEST_FALSE(buffer.remove());
  54. CORE_TEST_EQUAL(0, buffer.getLength());
  55. CORE_TEST_FALSE(buffer.canRemove());
  56. buffer.add(5);
  57. buffer.add(6);
  58. CORE_TEST_EQUAL(2, buffer.getLength());
  59. CORE_TEST_TRUE(buffer.canRemove());
  60. CORE_TEST_EQUAL(5, buffer[0]);
  61. CORE_TEST_FALSE(buffer.remove());
  62. CORE_TEST_EQUAL(6, buffer[0]);
  63. CORE_TEST_FALSE(buffer.remove());
  64. CORE_TEST_FALSE(buffer.canRemove());
  65. CORE_TEST_EQUAL(0, buffer.getLength());
  66. }
  67. static void testClear() {
  68. Core::RingBuffer<int, 3> buffer;
  69. buffer.add(1);
  70. buffer.add(2);
  71. CORE_TEST_EQUAL(2, buffer.getLength());
  72. buffer.clear();
  73. CORE_TEST_FALSE(buffer.canRemove());
  74. CORE_TEST_EQUAL(0, buffer.getLength());
  75. }
  76. void Core::RingBufferTests::test() {
  77. testReadAndWrite();
  78. testOverflow();
  79. testRefill();
  80. testClear();
  81. }