chore(client): add gdUnit4 test framework addon
Vendor gdUnit4 for Godot 4 client testing (D-030). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# GdUnit generated TestSuite
|
||||
class_name GdUnitTestSuiteTest
|
||||
extends GdUnitTestSuite
|
||||
|
||||
# TestSuite generated from
|
||||
const __source = 'res://addons/gdUnit4/src/GdUnitTestSuite.gd'
|
||||
|
||||
var _events :Array[GdUnitEvent] = []
|
||||
var _retry_count := 0
|
||||
var _flaky_settings: bool
|
||||
var _test_unknown_argument_in_test_case_is_called := false
|
||||
|
||||
|
||||
|
||||
func collect_report(event :GdUnitEvent) -> void:
|
||||
_events.push_back(event)
|
||||
|
||||
|
||||
func before() -> void:
|
||||
# register to receive test reports
|
||||
GdUnitSignals.instance().gdunit_event.connect(collect_report)
|
||||
_flaky_settings = ProjectSettings.get_setting(GdUnitSettings.TEST_FLAKY_CHECK, false)
|
||||
ProjectSettings.set_setting(GdUnitSettings.TEST_FLAKY_CHECK, true)
|
||||
|
||||
|
||||
func after() -> void:
|
||||
# verify the test case `test_unknown_argument_in_test_case` was skipped
|
||||
assert_bool(_test_unknown_argument_in_test_case_is_called)\
|
||||
.override_failure_message("Expecting 'test_unknown_argument_in_test_case' is skipped!")\
|
||||
.is_false()
|
||||
GdUnitSignals.instance().gdunit_event.disconnect(collect_report)
|
||||
# Restore original project settings
|
||||
ProjectSettings.set_setting(GdUnitSettings.TEST_FLAKY_CHECK, _flaky_settings)
|
||||
|
||||
|
||||
func test_assert_that_types() -> void:
|
||||
assert_object(assert_that(true)).is_instanceof(GdUnitBoolAssert)
|
||||
assert_object(assert_that(1)).is_instanceof(GdUnitIntAssert)
|
||||
assert_object(assert_that(3.12)).is_instanceof(GdUnitFloatAssert)
|
||||
assert_object(assert_that("abc")).is_instanceof(GdUnitStringAssert)
|
||||
assert_object(assert_that(Vector2.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that(Vector2i.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that(Vector3.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that(Vector3i.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that(Vector4.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that(Vector4i.ONE)).is_instanceof(GdUnitVectorAssert)
|
||||
assert_object(assert_that([])).is_instanceof(GdUnitArrayAssert)
|
||||
assert_object(assert_that({})).is_instanceof(GdUnitDictionaryAssert)
|
||||
assert_object(assert_that(GdUnitResult.new())).is_instanceof(GdUnitObjectAssert)
|
||||
# all not a built-in types mapped to default GdUnitAssert
|
||||
assert_object(assert_that(Color.RED)).is_instanceof(GdUnitAssertImpl)
|
||||
assert_object(assert_that(Plane.PLANE_XY)).is_instanceof(GdUnitAssertImpl)
|
||||
|
||||
|
||||
func test_unknown_argument_in_test_case(_invalid_arg :int) -> void:
|
||||
_test_unknown_argument_in_test_case_is_called = true
|
||||
fail("This test case should be not executed, it must be skipped.")
|
||||
|
||||
|
||||
func test_find_child() -> void:
|
||||
var node_a :Node3D = auto_free(Node3D.new())
|
||||
node_a.set_name("node_a")
|
||||
var node_b :Node3D = auto_free(Node3D.new())
|
||||
node_b.set_name("node_b")
|
||||
var node_c :Node3D = auto_free(Node3D.new())
|
||||
node_c.set_name("node_c")
|
||||
add_child(node_a, true)
|
||||
node_a.add_child(node_b, true)
|
||||
node_b.add_child(node_c, true)
|
||||
|
||||
assert_object(find_child("node_a", true, false)).is_same(node_a)
|
||||
assert_object(find_child("node_b", true, false)).is_same(node_b)
|
||||
assert_object(find_child("node_c", true, false)).is_same(node_c)
|
||||
|
||||
|
||||
func test_find_by_path() -> void:
|
||||
var node_a :Node3D = auto_free(Node3D.new())
|
||||
node_a.set_name("node_a")
|
||||
var node_b :Node3D = auto_free(Node3D.new())
|
||||
node_b.set_name("node_b")
|
||||
var node_c :Node3D = auto_free(Node3D.new())
|
||||
node_c.set_name("node_c")
|
||||
add_child(node_a, true)
|
||||
node_a.add_child(node_b, true)
|
||||
node_b.add_child(node_c, true)
|
||||
|
||||
assert_object(get_node(node_a.get_path())).is_same(node_a)
|
||||
assert_object(get_node(node_b.get_path())).is_same(node_b)
|
||||
assert_object(get_node(node_c.get_path())).is_same(node_c)
|
||||
|
||||
|
||||
func test_flaky_success() -> void:
|
||||
_retry_count += 1
|
||||
# do fail on first two retries
|
||||
if _retry_count <= 2:
|
||||
fail("failure 1: at retry %d" % _retry_count)
|
||||
fail("failure 2: at retry %d" % _retry_count)
|
||||
Reference in New Issue
Block a user