test_base.gd 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. extends Node
  2. var test_passes := 0
  3. var test_failures := 0
  4. func __get_stack_frame():
  5. var me = get_script()
  6. for s in get_stack():
  7. if s.source == me.resource_path:
  8. return s
  9. return null
  10. func __assert_pass():
  11. test_passes += 1
  12. func __assert_fail():
  13. test_failures += 1
  14. var s = __get_stack_frame()
  15. if s != null:
  16. print_rich ("[color=red] == FAILURE: In function %s() from '%s' on line %s[/color]" % [s.function, s.source, s.line])
  17. else:
  18. print_rich ("[color=red] == FAILURE (run with --debug to get more information!) ==[/color]")
  19. func assert_equal(actual, expected):
  20. if actual == expected:
  21. __assert_pass()
  22. else:
  23. __assert_fail()
  24. print (" |-> Expected '%s' but got '%s'" % [expected, actual])
  25. func assert_true(v):
  26. assert_equal(v, true)
  27. func assert_false(v):
  28. assert_equal(v, false)
  29. func assert_not_equal(actual, expected):
  30. if actual != expected:
  31. __assert_pass()
  32. else:
  33. __assert_fail()
  34. print (" |-> Expected '%s' NOT to equal '%s'" % [expected, actual])
  35. func exit_with_status() -> void:
  36. var success: bool = (test_failures == 0)
  37. print ("")
  38. print_rich ("[color=%s] ==== TESTS FINISHED ==== [/color]" % ("green" if success else "red"))
  39. print ("")
  40. print_rich (" PASSES: [color=green]%s[/color]" % test_passes)
  41. print_rich (" FAILURES: [color=red]%s[/color]" % test_failures)
  42. print ("")
  43. if success:
  44. print_rich("[color=green] ******** PASSED ******** [/color]")
  45. else:
  46. print_rich("[color=red] ******** FAILED ********[/color]")
  47. print("")
  48. get_tree().quit(0 if success else 1)