tests: lib: ringbuffer: ring_buf_peek() and ring_buf_size_get()

Added tests for ring_buf_size_get() and ring_buf_peek().

Fixes #37147

Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
This commit is contained in:
Christopher Friedt 2021-07-22 17:15:23 -04:00
commit 6cb1e22fd4

View file

@ -676,6 +676,81 @@ void test_capacity(void)
"Unexpected capacity"); "Unexpected capacity");
} }
void test_size(void)
{
uint32_t size;
static uint8_t buf[RINGBUFFER_SIZE];
ring_buf_init(&ringbuf_raw, sizeof(buf), ringbuf_raw.buf.buf8);
/* Test 0 */
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(0, size, "wrong size: exp: %u act: %u", 0, size);
/* Test 1 */
ring_buf_put(&ringbuf_raw, "x", 1);
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(1, size, "wrong size: exp: %u act: %u", 1, size);
/* Test N */
ring_buf_reset(&ringbuf_raw);
ring_buf_put(&ringbuf_raw, buf, sizeof(buf));
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(sizeof(buf), size, "wrong size: exp: %u: actual: %u", sizeof(buf), size);
/* Test N - 2 with wrap-around */
ring_buf_put(&ringbuf_raw, buf, sizeof(buf));
ring_buf_get(&ringbuf_raw, NULL, 3);
ring_buf_put(&ringbuf_raw, "x", 1);
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(sizeof(buf) - 2, size, "wrong size: exp: %u: actual: %u", sizeof(buf) - 2,
size);
}
void test_peek(void)
{
uint32_t size;
uint8_t byte = 0x42;
static uint8_t buf[RINGBUFFER_SIZE];
ring_buf_init(&ringbuf_raw, sizeof(buf), ringbuf_raw.buf.buf8);
/* Test 0 */
size = ring_buf_peek(&ringbuf_raw, (uint8_t *)0x1, 42424242);
zassert_equal(0, size, "wrong peek size: exp: %u: actual: %u", 0, size);
/* Test 1 */
ring_buf_put(&ringbuf_raw, "*", 1);
size = ring_buf_peek(&ringbuf_raw, &byte, 1);
zassert_equal(1, size, "wrong peek size: exp: %u: actual: %u", 1, size);
zassert_equal('*', byte, "wrong buffer contents: exp: %u: actual: %u", '*', byte);
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(1, size, "wrong buffer size: exp: %u: actual: %u", 1, size);
/* Test N */
ring_buf_reset(&ringbuf_raw);
for (size = 0; size < sizeof(buf); ++size) {
buf[size] = 'A' + (size % ('Z' - 'A' + 1));
}
ring_buf_put(&ringbuf_raw, buf, sizeof(buf));
memset(buf, '*', sizeof(buf)); /* fill with pattern */
size = ring_buf_peek(&ringbuf_raw, buf, sizeof(buf));
zassert_equal(sizeof(buf), size, "wrong peek size: exp: %u: actual: %u", sizeof(buf), size);
size = ring_buf_size_get(&ringbuf_raw);
zassert_equal(sizeof(buf), size, "wrong buffer size: exp: %u: actual: %u", sizeof(buf),
size);
for (size = 0; size < sizeof(buf); ++size) {
ringbuf_raw.buf.buf8[size] = 'A' + (size % ('Z' - 'A' + 1));
}
zassert_equal(0, memcmp(buf, ringbuf_raw.buf.buf8, sizeof(buf)),
"content validation failed");
}
void test_reset(void) void test_reset(void)
{ {
uint8_t indata[] = {1, 2, 3, 4, 5}; uint8_t indata[] = {1, 2, 3, 4, 5};
@ -969,6 +1044,8 @@ void test_main(void)
ztest_unit_test(test_byte_put_free), ztest_unit_test(test_byte_put_free),
ztest_unit_test(test_ringbuffer_equal_bufs), ztest_unit_test(test_ringbuffer_equal_bufs),
ztest_unit_test(test_capacity), ztest_unit_test(test_capacity),
ztest_unit_test(test_size),
ztest_unit_test(test_peek),
ztest_unit_test(test_reset), ztest_unit_test(test_reset),
ztest_unit_test(test_ringbuffer_performance), ztest_unit_test(test_ringbuffer_performance),
ztest_unit_test(test_ringbuffer_concurrent) ztest_unit_test(test_ringbuffer_concurrent)