native test framework
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
debug :: import "@std/debug"
|
||||
|
||||
Error :: enum {
|
||||
expectation_failed
|
||||
}
|
||||
|
||||
SourceLocation :: struct {
|
||||
file []u8
|
||||
line usize
|
||||
column usize
|
||||
}
|
||||
|
||||
expect func(condition bool, location SourceLocation) void ! Error {
|
||||
if (!condition) {
|
||||
debug.print("{s}:{d}:{d}: expectation failed\n", {location.file, location.line, location.column})
|
||||
return .expectation_failed
|
||||
}
|
||||
}
|
||||
|
||||
expect_equal func($T type, expected, actual T, location SourceLocation) void ! Error {
|
||||
if (expected != actual) {
|
||||
debug.print("{s}:{d}:{d}: expected {}, found {}\n", {location.file, location.line, location.column, expected, actual})
|
||||
return .expectation_failed
|
||||
}
|
||||
}
|
||||
|
||||
run func(name []u8, callback *func() void ! Error) bool {
|
||||
debug.print("RUN {s}\n", {name,})
|
||||
callback() catch |_| {
|
||||
debug.print("FAIL {s}\n", {name,})
|
||||
return false
|
||||
}
|
||||
debug.print("PASS {s}\n", {name,})
|
||||
return true
|
||||
}
|
||||
|
||||
summary func(passed, failed i32) void {
|
||||
debug.print("{d} passed, {d} failed\n", {passed, failed})
|
||||
}
|
||||
Reference in New Issue
Block a user