diff options
author | dzwdz | 2022-08-04 23:23:50 +0200 |
---|---|---|
committer | dzwdz | 2022-08-04 23:23:50 +0200 |
commit | 749a150e37fbfdaf33a8d6738e95306e6d95e8b5 (patch) | |
tree | 73e6191443113be4ec613c30281ce9c56ee7b20a /src/user/app/tests/shared | |
parent | ce00d1677d7a419b427e7f11963eee982a55a231 (diff) |
move the kernel util tests to userland
Diffstat (limited to 'src/user/app/tests/shared')
-rw-r--r-- | src/user/app/tests/shared/printf.c | 35 | ||||
-rw-r--r-- | src/user/app/tests/shared/ringbuf.c | 47 |
2 files changed, 82 insertions, 0 deletions
diff --git a/src/user/app/tests/shared/printf.c b/src/user/app/tests/shared/printf.c new file mode 100644 index 0000000..04175db --- /dev/null +++ b/src/user/app/tests/shared/printf.c @@ -0,0 +1,35 @@ +#include "../tests.h" +#include <stdio.h> +#include <string.h> + +static void test_printf(void) { + char buf[64]; + memset(buf, '?', 64); + + /* test proper overflow handling in snprintf */ + test(13 == snprintf(buf, 15, "That's 0x%x", 0x1337)); + test(!memcmp(buf, "That's 0x1337\0??", 16)); + test(17 == snprintf(buf, 15, "%05x %05x %05x", 0, 0, 0)); + test(!memcmp(buf, "00000 00000 00\0?", 16)); + + /* all the other stuff */ + snprintf(buf, sizeof buf, "%010x", 0x1BABE); + test(!strcmp(buf, "000001babe")); + snprintf(buf, sizeof buf, "%10x", 0x1BABE); + test(!strcmp(buf, " 1babe")); + snprintf(buf, sizeof buf, "%10s", "hello"); + test(!strcmp(buf, " hello")); + + snprintf(buf, sizeof buf, "%s%%%s", "ab", "cd"); + test(!strcmp(buf, "ab%cd")); + + snprintf(buf, sizeof buf, "%05u %05u", 1234, 56789); + test(!strcmp(buf, "01234 56789")); + + snprintf(buf, sizeof buf, "%u %x", 0, 0); + test(!strcmp(buf, "0 0")); +} + +void r_s_printf(void) { + run_test(test_printf); +} diff --git a/src/user/app/tests/shared/ringbuf.c b/src/user/app/tests/shared/ringbuf.c new file mode 100644 index 0000000..7330bbe --- /dev/null +++ b/src/user/app/tests/shared/ringbuf.c @@ -0,0 +1,47 @@ +#include "../tests.h" +#include <shared/container/ring.h> +#include <string.h> + +static void test_ringbuf(void) { + char backbuf[16], cmpbuf[16]; + size_t num_read = 0, num_written = 0; + uint8_t c; + + ring_t r = {backbuf, 16, 0, 0}; + + /* aliasing */ + for (size_t i = 0; i < 16; i++) { + test(ring_size(&r) == 0); + ring_put(&r, "11 bytes...", 11); + test(ring_size(&r) == 11); + + memset(cmpbuf, 0, sizeof cmpbuf); + test(ring_get(&r, cmpbuf, 16) == 11); + test(memcmp(cmpbuf, "11 bytes...", 11) == 0); + } + + test(ring_size(&r) == 0); + for (size_t i = 0; i < 7; i++) + ring_put1b(&r, num_written++); + test(ring_size(&r) == 7); + for (size_t i = 0; i < 3; i++) { + ring_get(&r, &c, 1); + test(num_read++ == c); + } + test(ring_size(&r) == 4); + + for (size_t j = 0; j < 40; j++) { + for (size_t i = 0; i < 7; i++) + ring_put1b(&r, num_written++ & 0xff); + test(ring_size(&r) == 11); + for (size_t i = 0; i < 7; i++) { + ring_get(&r, &c, 1); + test((num_read++ & 0xff) == c); + } + test(ring_size(&r) == 4); + } +} + +void r_s_ringbuf(void) { + run_test(test_ringbuf); +} |