Adding log.gd

This commit is contained in:
Dan Baker 2024-05-02 09:36:31 +01:00
parent eb32d6614e
commit 4522259397
547 changed files with 46844 additions and 0 deletions

View file

@ -0,0 +1,125 @@
# this test suite simulates long running test cases
extends GdUnitTestSuite
const SECOND :int = 1000
const MINUTE :int = SECOND*60
var _before_arg
var _test_arg
func before():
# use some variables to test clone test suite works as expected
_before_arg = "---before---"
func before_test():
# set failing test to success if failed by timeout
discard_error_interupted_by_timeout()
_test_arg = "abc"
# without custom timeout should execute the complete test
func test_timeout_after_test_completes():
assert_str(_before_arg).is_equal("---before---")
var counter := 0
await await_millis(1000)
prints("A","1s")
counter += 1
await await_millis(1000)
prints("A","2s")
counter += 1
await await_millis(1000)
prints("A","3s")
counter += 1
await await_millis(1000)
prints("A","5s")
counter += 2
prints("A","end test test_timeout_after_test_completes")
assert_int(counter).is_equal(5)
# set test timeout to 2s
@warning_ignore("unused_parameter")
func test_timeout_2s(timeout=2000):
assert_str(_before_arg).is_equal("---before---")
prints("B", "0s")
await await_millis(1000)
prints("B", "1s")
await await_millis(1000)
prints("B", "2s")
await await_millis(1000)
# this line should not reach if timeout aborts the test case after 2s
fail("The test case must be interupted by a timeout after 2s")
prints("B", "3s")
prints("B", "end")
# set test timeout to 4s
@warning_ignore("unused_parameter")
func test_timeout_4s(timeout=4000):
assert_str(_before_arg).is_equal("---before---")
prints("C", "0s")
await await_millis(1000)
prints("C", "1s")
await await_millis(1000)
prints("C", "2s")
await await_millis(1000)
prints("C", "3s")
await await_millis(4000)
# this line should not reach if timeout aborts the test case after 4s
fail("The test case must be interupted by a timeout after 4s")
prints("C", "7s")
prints("C", "end")
@warning_ignore("unused_parameter")
func test_timeout_single_yield_wait(timeout=3000):
assert_str(_before_arg).is_equal("---before---")
prints("D", "0s")
await await_millis(6000)
prints("D", "6s")
# this line should not reach if timeout aborts the test case after 3s
fail("The test case must be interupted by a timeout after 3s")
prints("D", "end test test_timeout")
@warning_ignore("unused_parameter")
func test_timeout_long_running_test_abort(timeout=4000):
assert_str(_before_arg).is_equal("---before---")
prints("E", "0s")
var start_time := Time.get_ticks_msec()
var sec_start_time := Time.get_ticks_msec()
# simulate long running function
while true:
var elapsed_time := Time.get_ticks_msec() - start_time
var sec_time = Time.get_ticks_msec() - sec_start_time
if sec_time > 1000:
sec_start_time = Time.get_ticks_msec()
prints("E", LocalTime.elapsed(elapsed_time))
# give system time to check for timeout
await await_millis(200)
# exit while after 4500ms inclusive 500ms offset
if elapsed_time > 4500:
break
# this line should not reach if timeout aborts the test case after 4s
fail("The test case must be abort interupted by a timeout 4s")
prints("F", "end test test_timeout")
@warning_ignore("unused_parameter", "unused_variable")
func test_timeout_fuzzer(fuzzer := Fuzzers.rangei(-23, 22), timeout=2000):
discard_error_interupted_by_timeout()
var value = fuzzer.next_value()
# wait each iteration 200ms
await await_millis(200)
# we expects the test is interupped after 10 iterations because each test takes 200ms
# and the test should not longer run than 2000ms
assert_int(fuzzer.iteration_index())\
.override_failure_message("The test must be interupted after around 10 iterations")\
.is_less_equal(10)