10 #include <CTraitsTest.h>
16 #include <gtest/gtest.h>
18 template class mrpt::CTraitsTest<mrpt::containers::circular_buffer<char>>;
22 TEST(circular_buffer_tests, EmptyPop)
26 EXPECT_THROW(cb.
pop(ret), std::exception);
28 TEST(circular_buffer_tests, EmptyPopAfterPushes)
30 constexpr
size_t LEN = 20;
32 for (
size_t nWr = 0; nWr < LEN; nWr++)
34 for (
size_t i = 0; i < nWr; i++) cb.
push(12);
36 for (
size_t i = 0; i < nWr; i++) cb.
pop(ret);
38 EXPECT_THROW(cb.
pop(ret), std::exception);
42 TEST(circular_buffer_tests, RandomWriteAndPeek)
44 constexpr
size_t LEN = 20;
47 for (
size_t iter = 0; iter < 1000; iter++)
51 for (
size_t i = 0; i < nWr; i++) cb.
push(i);
53 for (
size_t i = 0; i < nWr; i++)
58 for (
size_t i = 0; i < nWr; i++)
65 TEST(circular_buffer_tests, RandomWriteManyAndPeek)
67 constexpr
size_t LEN = 20;
69 std::vector<cb_t> dum_buf;
71 for (
size_t iter = 0; iter < 1000; iter++)
81 for (
size_t i = 0; i < nWr; i++) ret = cb.
peek(i);
90 for (
size_t i = 0; i < nWr; i++) cb.
pop(ret);
99 TEST(circular_buffer_tests, RandomWriteAndPeekOverrun)
101 constexpr
size_t LEN = 20;
104 for (
size_t iter = 0; iter < 100; iter++)
108 for (
size_t i = 0; i < nWr; i++) cb.
push(i);
110 for (
unsigned k = 0; k < 5; k++)
112 EXPECT_ANY_THROW(ret = cb.
peek(nWr + k););
114 for (
size_t i = 0; i < nWr; i++) cb.
pop(ret);
118 TEST(circular_buffer_tests, Size)
121 for (
size_t i = 0; i < cb.
capacity() - 1; i++)
126 EXPECT_ANY_THROW(cb.
push(0));
127 for (
size_t i = 0; i < cb.
capacity() - 1; i++)
134 template <
typename T>
137 constexpr T LEN = 20;
140 for (T i = 0; i < LEN; i++) cb.
push(i);
142 std::array<T, LEN> peek_vals;
145 for (T i = 0; i < LEN; i++)
146 EXPECT_EQ(
static_cast<int>(peek_vals[i]),
static_cast<int>(i));
149 TEST(circular_buffer_tests, WritePeekCheck_uint8_t)
151 impl_WritePeekCheck<uint8_t>();
153 TEST(circular_buffer_tests, WritePeekCheck_uint16_t)
155 impl_WritePeekCheck<uint16_t>();
157 TEST(circular_buffer_tests, WritePeekCheck_uint32_t)
159 impl_WritePeekCheck<uint32_t>();
161 TEST(circular_buffer_tests, WritePeekCheck_uint64_t)
163 impl_WritePeekCheck<uint64_t>();