diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-04-23 08:01:36 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-06 11:50:46 -0600 |
commit | a83c95e9f46ef695a55fc7a6911e11846da9903c (patch) | |
tree | 42abde5f3b34b239bb95e84200ea16ad4a4c562d /libobj/tests | |
parent | b3ee525e9e0d49485714770d898cf9c28769313a (diff) |
Merge libobj into libmisc
Diffstat (limited to 'libobj/tests')
l--------- | libobj/tests/test.h | 1 | ||||
-rw-r--r-- | libobj/tests/test_nest.c | 73 | ||||
-rw-r--r-- | libobj/tests/test_obj.c | 61 |
3 files changed, 0 insertions, 135 deletions
diff --git a/libobj/tests/test.h b/libobj/tests/test.h deleted file mode 120000 index 2fb1bd5..0000000 --- a/libobj/tests/test.h +++ /dev/null @@ -1 +0,0 @@ -../../libmisc/tests/test.h
\ No newline at end of file diff --git a/libobj/tests/test_nest.c b/libobj/tests/test_nest.c deleted file mode 100644 index f18b018..0000000 --- a/libobj/tests/test_nest.c +++ /dev/null @@ -1,73 +0,0 @@ -/* libobj/tests/test_nest.c - Tests for <libobj/obj.h> - * - * Copyright (C) 2025 Luke T. Shumaker <lukeshu@lukeshu.com> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -#include <string.h> /* for memcpy() */ - -#include <libobj/obj.h> - -#include "test.h" - -/* interfaces *****************************************************************/ - -#define reader_LO_IFACE \ - LO_FUNC(ssize_t, read, void *, size_t) -LO_INTERFACE(reader); - -#define writer_LO_IFACE \ - LO_FUNC(ssize_t, write, void *, size_t) -LO_INTERFACE(writer); - -#define read_writer_LO_IFACE \ - LO_NEST(reader) \ - LO_NEST(writer) -LO_INTERFACE(read_writer); - -/* implementation header ******************************************************/ - -struct myclass { - size_t len; - char buf[512]; -}; -LO_IMPLEMENTATION_H(reader, struct myclass, myclass); -LO_IMPLEMENTATION_H(writer, struct myclass, myclass); -LO_IMPLEMENTATION_H(read_writer, struct myclass, myclass); - -/* implementation main ********************************************************/ - -LO_IMPLEMENTATION_C(reader, struct myclass, myclass, static); -LO_IMPLEMENTATION_C(writer, struct myclass, myclass, static); -LO_IMPLEMENTATION_C(read_writer, struct myclass, myclass, static); - -static ssize_t myclass_read(struct myclass *self, void *buf, size_t count) { - test_assert(self); - if (count > self->len) - count = self->len; - memcpy(buf, self->buf, count); - return count; -} - -static ssize_t myclass_write(struct myclass *self, void *buf, size_t count) { - test_assert(self); - if (self->len) - return -1; - if (count > sizeof(self->buf)) - count = sizeof(self->buf); - memcpy(self->buf, buf, count); - self->len = count; - return count; -} - -/* main test body *************************************************************/ - -int main() { - struct myclass _obj = {0}; - lo_interface read_writer obj = lo_box_myclass_as_read_writer(&_obj); - test_assert(LO_CALL(obj, write, "Hello", 6) == 6); - char buf[6] = {0}; - test_assert(LO_CALL(obj, read, buf, 3) == 3); - test_assert(memcmp(buf, "Hel\0\0\0", 6) == 0); - return 0; -} diff --git a/libobj/tests/test_obj.c b/libobj/tests/test_obj.c deleted file mode 100644 index d6861dc..0000000 --- a/libobj/tests/test_obj.c +++ /dev/null @@ -1,61 +0,0 @@ -/* libobj/tests/test_obj.c - Tests for <libobj/obj.h> - * - * Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -#include <libobj/obj.h> - -#include "test.h" - -/* `lo_inteface frobber` header ***********************************************/ - -#define frobber_LO_IFACE \ - /** Basic function. */ \ - LO_FUNC(int, frob) \ - /** Function that takes 1 argument. */ \ - LO_FUNC(int, frob1, int) \ - /** Function that returns nothing. */ \ - LO_FUNC(void, frob0) -LO_INTERFACE(frobber); - -/* `struct myclass` header ****************************************************/ - -struct myclass { - int a; -}; -LO_IMPLEMENTATION_H(frobber, struct myclass, myclass); - -/* `struct myclass` implementation ********************************************/ - -LO_IMPLEMENTATION_C(frobber, struct myclass, myclass, static); - -static int myclass_frob(struct myclass *self) { - test_assert(self); - return self->a; -} - -static int myclass_frob1(struct myclass *self, int arg) { - test_assert(self); - return arg; -} - -static void myclass_frob0(struct myclass *self) { - test_assert(self); -} - -/* main test body *************************************************************/ - -#define MAGIC1 909837 -#define MAGIC2 657441 - -int main() { - struct myclass obj = { - .a = MAGIC1, - }; - lo_interface frobber iface = lo_box_myclass_as_frobber(&obj); - test_assert(LO_CALL(iface, frob) == MAGIC1); - test_assert(LO_CALL(iface, frob1, MAGIC2) == MAGIC2); - LO_CALL(iface, frob0); - return 0; -} |