From 4459b8b3aa9d73895391785a99dcc87134e80601 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Tue, 17 Sep 2024 08:47:03 +0200 Subject: More lsp support This makes the LSP support complete for now: - Completion - Diagnostics - Goto implementation/declaration - Rename - Documentation - Find references --- test/bufread.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/bufread.c (limited to 'test/bufread.c') diff --git a/test/bufread.c b/test/bufread.c new file mode 100644 index 0000000..d477946 --- /dev/null +++ b/test/bufread.c @@ -0,0 +1,63 @@ +#ifdef LINUX +#define _GNU_SOURCE +#endif + +#include "assert.h" +#include "test.h" + +#include "dged/bufread.h" + +#include +#include + +#ifdef LINUX +#include +#endif + +static void test_read(void) { +#ifdef LINUX + int memfd = memfd_create("bufread-test", 0); + ASSERT(memfd >= 0, "Failed to create memfd"); +#endif + for (int i = 0; i < 256; ++i) { + int a = write(memfd, (uint8_t *)&i, 1); + (void)a; + } + lseek(memfd, 0, SEEK_SET); + + struct bufread *br = bufread_create(memfd, 128); + uint8_t buf[32]; + ssize_t read = bufread_read(br, buf, 32); + ASSERT(read > 0, "Expected to be able to read"); + for (int i = 0; i < 32; ++i) { + ASSERT(i == buf[i], "Expected buffer to be monotonically increasing"); + } + bufread_read(br, buf, 32); + bufread_read(br, buf, 32); + bufread_read(br, buf, 32); + + read = bufread_read(br, buf, 32); + ASSERT(read > 0, "Expected to be able to read"); + for (int i = 0; i < 32; ++i) { + ASSERT((i + 128) == buf[i], + "Expected buffer to be monotonically increasing"); + } + bufread_destroy(br); +} + +void test_empty_read(void) { +#ifdef LINUX + int memfd = memfd_create("bufread-test", 0); + ASSERT(memfd >= 0, "Failed to create memfd"); +#endif + struct bufread *br = bufread_create(memfd, 128); + uint8_t buf[32]; + ssize_t read = bufread_read(br, buf, 32); + ASSERT(read == 0, "Expected to not be able to read from empty stream"); + bufread_destroy(br); +} + +void run_bufread_tests(void) { + run_test(test_read); + run_test(test_empty_read); +} -- cgit v1.2.3