From ffa367193078ba32012494cfa7be50e6b3b18e2d Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 30 Aug 2020 12:01:33 +0200 Subject: Added some tests --- Makefile | 3 ++- kernel/test.c | 44 ++++++++++++++++++++++++++++++++++++++------ run | 4 ++-- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 13a07de..2b61e6c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ # MIT License, Copyright (c) 2020 Marvin Borner all: compile clean +test: compile_test clean compile: @$(MAKE) clean --no-print-directory -C libc/ @@ -16,7 +17,7 @@ compile: @$(MAKE) --no-print-directory -C apps/ @echo "Compiled apps" -test: +compile_test: @$(MAKE) clean --no-print-directory -C libc/ @$(MAKE) libc --no-print-directory -C libc/ @echo "Compiled libc" diff --git a/kernel/test.c b/kernel/test.c index b328a2c..93fcbb1 100644 --- a/kernel/test.c +++ b/kernel/test.c @@ -2,25 +2,59 @@ #include #include +#include #include #include #include #include +#include #include #include #include +#include #include #include +#define a_mag 0x55 +#define b_mag 0x42 +#define check(exp) \ + if (!(exp)) { \ + printf("\x1B[31m[FAIL]\x1B[0m %s:%d: %s: Test '%s'\n", __FILE__, __LINE__, \ + __func__, #exp); \ + } else { \ + printf("\x1B[32m[PASS]\x1B[0m %s:%d: %s: Test '%s'\n", __FILE__, __LINE__, \ + __func__, #exp); \ + } + void test_all(struct vid_info *vid_info) { - heap_init(0x00f00000); - boot_passed = vid_info; - // Serial connection serial_install(); serial_print("\nConnected testing.\n"); - assert(vid_info && vid_info->mode && vid_info->vbe); + + // Boot passed + check(vid_info && vid_info->mode && vid_info->vbe); + + // Test malloc + heap_init(0x00f00000); + u32 *a = malloc(a_mag); + u32 *b = malloc(b_mag); + check(a[-1] == a_mag); + check(a[a_mag] == b_mag); + check(b[-1] == b_mag); + + // Test math + check(pow(2, 3) == 8); + check(pow(0, 3) == 0); + check(pow(0, 0) == 1); + + // Test conv + check(atoi("42") == 42); + check(strcmp(htoa(0x42), "42") == 0); + check(htoi("42") == 0x42); + check(strcmp(itoa(42), "42") == 0); + + boot_passed = vid_info; // Install drivers interrupts_install(); @@ -28,7 +62,5 @@ void test_all(struct vid_info *vid_info) keyboard_install(); mouse_install(); - ls_root(); - idle(); } diff --git a/run b/run index b7901a5..c302fa9 100755 --- a/run +++ b/run @@ -116,10 +116,10 @@ make_build() { make_test() { if [ "$mode" = "test" ]; then qemu_with_flags -nographic -drive file=build/disk.img,format=raw,index=1,media=disk & - sleep 3 + sleep 2 killall -9 qemu-system-i386 else - qemu_with_flags -drive -serial stdio file=build/disk.img,format=raw,index=1,media=disk + qemu_with_flags -serial stdio -drive file=build/disk.img,format=raw,index=1,media=disk fi } -- cgit v1.2.3