diff options
-rw-r--r-- | src/kernel/tests/main.c | 1 | ||||
-rw-r--r-- | src/kernel/tests/tests.h | 2 | ||||
-rw-r--r-- | src/kernel/tests/util.c | 78 | ||||
-rw-r--r-- | src/kernel/tests/vfs.c | 4 | ||||
-rw-r--r-- | src/shared/mem.h | 2 | ||||
-rw-r--r-- | src/user/app/tests/libc/string.c | 28 | ||||
-rw-r--r-- | src/user/app/tests/shared/printf.c (renamed from src/user/app/tests/printf.c) | 4 | ||||
-rw-r--r-- | src/user/app/tests/shared/ringbuf.c | 47 | ||||
-rw-r--r-- | src/user/app/tests/tests.c | 3 | ||||
-rw-r--r-- | src/user/app/tests/tests.h | 3 |
10 files changed, 85 insertions, 87 deletions
diff --git a/src/kernel/tests/main.c b/src/kernel/tests/main.c index f9c9413..8a6921a 100644 --- a/src/kernel/tests/main.c +++ b/src/kernel/tests/main.c @@ -7,7 +7,6 @@ bool _did_tests_fail; void tests_all(void) { _did_tests_fail = false; - tests_utils(); tests_vfs(); if (_did_tests_fail) diff --git a/src/kernel/tests/tests.h b/src/kernel/tests/tests.h index aa8597b..0f8693a 100644 --- a/src/kernel/tests/tests.h +++ b/src/kernel/tests/tests.h @@ -1,6 +1,4 @@ #pragma once void tests_all(void); - -void tests_utils(void); void tests_vfs(void); diff --git a/src/kernel/tests/util.c b/src/kernel/tests/util.c deleted file mode 100644 index b7123b4..0000000 --- a/src/kernel/tests/util.c +++ /dev/null @@ -1,78 +0,0 @@ -#include <kernel/tests/base.h> -#include <kernel/tests/tests.h> -#include <shared/container/ring.h> -#include <shared/mem.h> - -TEST(memcmp) { - // basic equality checks - TEST_COND(0 == memcmp("some", "thing", 0)); - TEST_COND(0 != memcmp("some", "thing", 1)); - TEST_COND(0 != memcmp("some", "thing", 4)); - - TEST_COND(0 == memcmp("test", "tennis", 0)); - TEST_COND(0 == memcmp("test", "tennis", 1)); - TEST_COND(0 == memcmp("test", "tennis", 2)); - TEST_COND(0 != memcmp("test", "tennis", 3)); - TEST_COND(0 != memcmp("test", "tennis", 4)); - TEST_COND(0 != memcmp("test", "tennis", 5)); - - // test signs. does anyone even use that? - TEST_COND(0 > memcmp("foo", "moo", 4)); - TEST_COND(0 < memcmp("moo", "foo", 4)); - TEST_COND(0 > memcmp("555", "654", 3)); - TEST_COND(0 < memcmp("654", "555", 3)); -} - -TEST(strcmp) { - TEST_COND(0 == strcmp("string", "string")); - TEST_COND(0 > strcmp("str", "string")); - TEST_COND(0 < strcmp("string", "str")); - - TEST_COND(0 != strcmp("stress", "string")); -} - -TEST(ring) { - char backbuf[16], cmpbuf[16]; - size_t num_read = 0, num_written = 0; - uint8_t c; - - ring_t r = {backbuf, 16, 0, 0}; - - // test aliasing - for (size_t i = 0; i < 16; i++) { - TEST_COND(ring_size(&r) == 0); - ring_put(&r, "11 bytes...", 11); - TEST_COND(ring_size(&r) == 11); - - memset(cmpbuf, 0, sizeof cmpbuf); - TEST_COND(ring_get(&r, cmpbuf, 16) == 11); - TEST_COND(memcmp(cmpbuf, "11 bytes...", 11) == 0); - } - - TEST_COND(ring_size(&r) == 0); - for (size_t i = 0; i < 7; i++) - ring_put1b(&r, num_written++); - TEST_COND(ring_size(&r) == 7); - for (size_t i = 0; i < 3; i++) { - ring_get(&r, &c, 1); - TEST_COND(num_read++ == c); - } - TEST_COND(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_COND(ring_size(&r) == 11); - for (size_t i = 0; i < 7; i++) { - ring_get(&r, &c, 1); - TEST_COND((num_read++ & 0xff) == c); - } - TEST_COND(ring_size(&r) == 4); - } -} - -void tests_utils(void) { - TEST_RUN(memcmp); - TEST_RUN(strcmp); - TEST_RUN(ring); -} diff --git a/src/kernel/tests/vfs.c b/src/kernel/tests/vfs.c index 8b749b4..7b353e8 100644 --- a/src/kernel/tests/vfs.c +++ b/src/kernel/tests/vfs.c @@ -39,8 +39,8 @@ TEST(path_simplify) { TEST_WRAPPER("/asdf//.", "/asdf/"); TEST_WRAPPER("/foo/bar/..", "/foo/"); - TEST_WRAPPER("/foo/bar/../bar", "/foo/bar"); - TEST_WRAPPER("/foo/bar/../bar/", "/foo/bar/"); + TEST_WRAPPER("/foo/bar/../baz", "/foo/baz"); + TEST_WRAPPER("/foo/bar/../baz/", "/foo/baz/"); TEST_WRAPPER("/foo/bar/xyz/..", "/foo/bar/"); TEST_WRAPPER("/foo/bar/xyz/../", "/foo/bar/"); diff --git a/src/shared/mem.h b/src/shared/mem.h index 8eb091f..8c83f2f 100644 --- a/src/shared/mem.h +++ b/src/shared/mem.h @@ -1,6 +1,8 @@ #pragma once #include <stddef.h> +/* note: (partially) tested in the userland tests */ + void *memchr(const void *s, int c, size_t n); int memcmp(const void *s1, const void *s2, size_t n); diff --git a/src/user/app/tests/libc/string.c b/src/user/app/tests/libc/string.c index 8f889dc..82aff98 100644 --- a/src/user/app/tests/libc/string.c +++ b/src/user/app/tests/libc/string.c @@ -1,6 +1,32 @@ #include "../tests.h" #include <string.h> +static void test_memcmp(void) { + test(0 == memcmp("some", "thing", 0)); + test(0 != memcmp("some", "thing", 1)); + test(0 != memcmp("some", "thing", 4)); + + test(0 == memcmp("test", "tennis", 0)); + test(0 == memcmp("test", "tennis", 1)); + test(0 == memcmp("test", "tennis", 2)); + test(0 != memcmp("test", "tennis", 3)); + test(0 != memcmp("test", "tennis", 4)); + test(0 != memcmp("test", "tennis", 5)); + + test(0 > memcmp("foo", "moo", 4)); + test(0 < memcmp("moo", "foo", 4)); + test(0 > memcmp("555", "654", 3)); + test(0 < memcmp("654", "555", 3)); +} + +static void test_strcmp(void) { + test(0 == strcmp("string", "string")); + test(0 > strcmp("str", "string")); + test(0 < strcmp("string", "str")); + + test(0 != strcmp("stress", "string")); +} + static void test_strtol(void) { char *end; test(1234 == strtol("1234", NULL, 10)); @@ -21,5 +47,7 @@ static void test_strtol(void) { } void r_libc_string(void) { + run_test(test_memcmp); + run_test(test_strcmp); run_test(test_strtol); } diff --git a/src/user/app/tests/printf.c b/src/user/app/tests/shared/printf.c index 4dc45bb..04175db 100644 --- a/src/user/app/tests/printf.c +++ b/src/user/app/tests/shared/printf.c @@ -1,4 +1,4 @@ -#include "tests.h" +#include "../tests.h" #include <stdio.h> #include <string.h> @@ -30,6 +30,6 @@ static void test_printf(void) { test(!strcmp(buf, "0 0")); } -void r_printf(void) { +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); +} diff --git a/src/user/app/tests/tests.c b/src/user/app/tests/tests.c index a6e7d52..9cdf81c 100644 --- a/src/user/app/tests/tests.c +++ b/src/user/app/tests/tests.c @@ -18,6 +18,7 @@ int main(void) { r_k_miscsyscall(); r_libc_esemaphore(); r_libc_string(); - r_printf(); + r_s_printf(); + r_s_ringbuf(); return 0; } diff --git a/src/user/app/tests/tests.h b/src/user/app/tests/tests.h index 974014a..fadbc60 100644 --- a/src/user/app/tests/tests.h +++ b/src/user/app/tests/tests.h @@ -12,7 +12,8 @@ void r_k_misc(void); void r_k_miscsyscall(void); void r_libc_esemaphore(void); void r_libc_string(void); -void r_printf(void); +void r_s_printf(void); +void r_s_ringbuf(void); #define argify(str) str, sizeof(str) - 1 #define test_fail() do { \ |