60 lines
1.5 KiB
GDScript
60 lines
1.5 KiB
GDScript
|
extends Node
|
||
|
|
||
|
var test_passes := 0
|
||
|
var test_failures := 0
|
||
|
|
||
|
func __get_stack_frame():
|
||
|
var me = get_script()
|
||
|
for s in get_stack():
|
||
|
if s.source == me.resource_path:
|
||
|
return s
|
||
|
return null
|
||
|
|
||
|
func __assert_pass():
|
||
|
test_passes += 1
|
||
|
|
||
|
func __assert_fail():
|
||
|
test_failures += 1
|
||
|
var s = __get_stack_frame()
|
||
|
if s != null:
|
||
|
print_rich ("[color=red] == FAILURE: In function %s() from '%s' on line %s[/color]" % [s.function, s.source, s.line])
|
||
|
else:
|
||
|
print_rich ("[color=red] == FAILURE (run with --debug to get more information!) ==[/color]")
|
||
|
|
||
|
func assert_equal(actual, expected):
|
||
|
if actual == expected:
|
||
|
__assert_pass()
|
||
|
else:
|
||
|
__assert_fail()
|
||
|
print (" |-> Expected '%s' but got '%s'" % [expected, actual])
|
||
|
|
||
|
func assert_true(v):
|
||
|
assert_equal(v, true)
|
||
|
|
||
|
func assert_false(v):
|
||
|
assert_equal(v, false)
|
||
|
|
||
|
func assert_not_equal(actual, expected):
|
||
|
if actual != expected:
|
||
|
__assert_pass()
|
||
|
else:
|
||
|
__assert_fail()
|
||
|
print (" |-> Expected '%s' NOT to equal '%s'" % [expected, actual])
|
||
|
|
||
|
func exit_with_status() -> void:
|
||
|
var success: bool = (test_failures == 0)
|
||
|
print ("")
|
||
|
print_rich ("[color=%s] ==== TESTS FINISHED ==== [/color]" % ("green" if success else "red"))
|
||
|
print ("")
|
||
|
print_rich (" PASSES: [color=green]%s[/color]" % test_passes)
|
||
|
print_rich (" FAILURES: [color=red]%s[/color]" % test_failures)
|
||
|
print ("")
|
||
|
|
||
|
if success:
|
||
|
print_rich("[color=green] ******** PASSED ******** [/color]")
|
||
|
else:
|
||
|
print_rich("[color=red] ******** FAILED ********[/color]")
|
||
|
print("")
|
||
|
|
||
|
get_tree().quit(0 if success else 1)
|