summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kernel/tests/main.c1
-rw-r--r--src/kernel/tests/tests.h2
-rw-r--r--src/kernel/tests/util.c78
-rw-r--r--src/kernel/tests/vfs.c4
-rw-r--r--src/shared/mem.h2
-rw-r--r--src/user/app/tests/libc/string.c28
-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.c47
-rw-r--r--src/user/app/tests/tests.c3
-rw-r--r--src/user/app/tests/tests.h3
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 { \