.
This commit is contained in:
parent
95d74c2ef4
commit
a66e58193f
25 changed files with 2600 additions and 93 deletions
80
tools/unit_tests.c
Normal file
80
tools/unit_tests.c
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
#pragma section(".CRT$XCU", read)
|
||||
|
||||
#include "../build.c"
|
||||
#include "../tests/runner.h"
|
||||
|
||||
#include "../tests/arena_tests.c"
|
||||
#include "../tests/core_tests.c"
|
||||
#include "../tests/net_tests.c"
|
||||
#include "../tests/os_tests.c"
|
||||
// #include "../tests/parsers_tests.c"
|
||||
// #include "../tests/pretty_print_tests.c"
|
||||
#include "../tests/str_tests.c"
|
||||
|
||||
unit_test_t *test_head = NULL;
|
||||
unit_test_t *test_tail = NULL;
|
||||
const char *last_fail_reason = NULL;
|
||||
bool last_failed = false;
|
||||
|
||||
void ut_register(const char *file, const char *name, void (*fn)(void)) {
|
||||
strview_t fname;
|
||||
os_file_split_path(strv(file), NULL, &fname, NULL);
|
||||
|
||||
fname = strv_remove_suffix(fname, arrlen("_tests") - 1);
|
||||
|
||||
unit_test_t *test = calloc(1, sizeof(unit_test_t));
|
||||
test->name = strv(name);
|
||||
test->fn = fn;
|
||||
test->fname = fname;
|
||||
|
||||
olist_push(test_head, test_tail, test);
|
||||
}
|
||||
|
||||
int main() {
|
||||
colla_init(COLLA_ALL);
|
||||
arena_t arena = arena_make(ARENA_VIRTUAL, GB(1));
|
||||
|
||||
strview_t last_file = STRV_EMPTY;
|
||||
int success = 0;
|
||||
int failed = 0;
|
||||
int total = 0;
|
||||
|
||||
unit_test_t *test = test_head;
|
||||
while (test) {
|
||||
if (!strv_equals(test->fname, last_file)) {
|
||||
last_file = test->fname;
|
||||
pretty_print(arena, "<blue>> %v</>\n", test->fname);
|
||||
}
|
||||
|
||||
test->fn();
|
||||
|
||||
total++;
|
||||
|
||||
if (last_failed) {
|
||||
pretty_print(arena, "%4s<red>[X]</> %v: %s\n", "", test->name, last_fail_reason);
|
||||
}
|
||||
else {
|
||||
pretty_print(arena, "%4s<green>[V]</> %v\n", "", test->name);
|
||||
success++;
|
||||
}
|
||||
|
||||
last_failed = false;
|
||||
|
||||
test = test->next;
|
||||
}
|
||||
|
||||
print("\n");
|
||||
|
||||
strview_t colors[] = {
|
||||
cstrv("red"),
|
||||
cstrv("light_red"),
|
||||
cstrv("yellow"),
|
||||
cstrv("light_yellow"),
|
||||
cstrv("light_green"),
|
||||
cstrv("green"),
|
||||
};
|
||||
|
||||
usize col = success * (arrlen(colors) - 1) / total;
|
||||
|
||||
pretty_print(arena, "<%v>%d</>/<blue>%d</> tests passed\n", colors[col], success, total);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue