From 0e0c95900c90cc6ee28845fbf16f5da546caeef5 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 28 Jul 2025 22:22:38 +0100 Subject: [PATCH] test: core: add error and ringbuffer tests --- core-test/errors.c | 6 ++++ core-test/ringbuffers.c | 66 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 core-test/errors.c create mode 100644 core-test/ringbuffers.c diff --git a/core-test/errors.c b/core-test/errors.c new file mode 100644 index 0000000..8c074ba --- /dev/null +++ b/core-test/errors.c @@ -0,0 +1,6 @@ +#include + +int main(void) +{ + return 0; +} diff --git a/core-test/ringbuffers.c b/core-test/ringbuffers.c new file mode 100644 index 0000000..46d3166 --- /dev/null +++ b/core-test/ringbuffers.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#define BUF_SIZE 32 + +int main(void) +{ + b_ringbuffer *buf = b_ringbuffer_create(BUF_SIZE); + + size_t read_available = b_ringbuffer_available_data_remaining(buf); + size_t write_available = b_ringbuffer_write_capacity_remaining(buf); + + printf("read available: %zu\n", read_available); + printf("write available: %zu\n", write_available); + + assert(read_available == 0); + assert(write_available == BUF_SIZE - 1); + + const char ch = 'X'; + printf("putc(%c)\n", ch); + + b_ringbuffer_putc(buf, ch); + read_available = b_ringbuffer_available_data_remaining(buf); + write_available = b_ringbuffer_write_capacity_remaining(buf); + printf("read available: %zu\n", read_available); + printf("write available: %zu\n", write_available); + assert(read_available == 1); + assert(write_available == BUF_SIZE - 2); + + int c = b_ringbuffer_getc(buf); + printf("getc() = %c\n", c); + assert(c == ch); + + const char s[] + = "A very long string that is designed to overflow the " + "ringbuffer"; + size_t s_len = strlen(s); + + size_t nr_written = 0; + printf("write(%s)\n", s); + b_ringbuffer_write(buf, s, s_len, &nr_written); + read_available = b_ringbuffer_available_data_remaining(buf); + write_available = b_ringbuffer_write_capacity_remaining(buf); + printf("read available: %zu\n", read_available); + printf("write available: %zu\n", write_available); + assert(read_available == BUF_SIZE - 1); + assert(write_available == 0); + + char data[BUF_SIZE + 32] = {0}; + size_t nr_read = 0; + b_ringbuffer_read(buf, data, sizeof data, &nr_read); + printf("read(%u) = %zu bytes\n", BUF_SIZE + 32, nr_read); + printf(" = %s\n", data); + read_available = b_ringbuffer_available_data_remaining(buf); + write_available = b_ringbuffer_write_capacity_remaining(buf); + printf("read available: %zu\n", read_available); + printf("write available: %zu\n", write_available); + assert(read_available == 0); + assert(write_available == BUF_SIZE - 1); + + b_ringbuffer_destroy(buf); + + return 0; +}