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,162 @@
|
||||
@warning_ignore_start("unsafe_method_access")
|
||||
# GdUnit generated TestSuite
|
||||
class_name CmdCommandHandlerTest
|
||||
extends GdUnitTestSuite
|
||||
|
||||
# TestSuite generated from
|
||||
const __source = 'res://addons/gdUnit4/src/cmd/CmdCommandHandler.gd'
|
||||
|
||||
var _cmd_options: CmdOptions
|
||||
var _cmd_instance: TestCommands
|
||||
|
||||
|
||||
# small example of command class
|
||||
class TestCommands:
|
||||
func cmd_no_arg() -> String:
|
||||
return ""
|
||||
|
||||
func cmd_foo() -> String:
|
||||
return "cmd_foo"
|
||||
|
||||
func cmd_arg(value: String) -> String:
|
||||
return value
|
||||
|
||||
func cmd_args(values: PackedStringArray) -> Array:
|
||||
return values
|
||||
|
||||
func cmd_x() -> String:
|
||||
return "cmd_x"
|
||||
|
||||
|
||||
func before() -> void:
|
||||
# setup command options
|
||||
_cmd_options = CmdOptions.new([
|
||||
CmdOption.new("-a", "some help text a", "some description a"),
|
||||
CmdOption.new("-f, --foo", "some help text foo", "some description foo"),
|
||||
CmdOption.new("-arg, --arg", "some help text bar", "some description bar")
|
||||
],
|
||||
# advnaced options
|
||||
[
|
||||
CmdOption.new("-x", "some help text x", "some description x"),
|
||||
])
|
||||
_cmd_instance = TestCommands.new()
|
||||
|
||||
|
||||
func test_register_cb() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
|
||||
# register a single argumend cb
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_arg)
|
||||
assert_dict(cmd_handler._command_cbs).contains_key_value("-a", [_cmd_instance.cmd_arg, CmdCommandHandler.NO_CB])
|
||||
|
||||
|
||||
func test_register_invalid_cb() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
# try to register a multi argumend cb
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_args)
|
||||
# verify the cb is not registered
|
||||
assert_dict(cmd_handler._command_cbs).is_empty()
|
||||
|
||||
|
||||
func test_register_cbv() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
|
||||
# register a single argumend cb
|
||||
cmd_handler.register_cbv("-a", _cmd_instance.cmd_args)
|
||||
assert_dict(cmd_handler._command_cbs).contains_key_value("-a", [CmdCommandHandler.NO_CB, _cmd_instance.cmd_args])
|
||||
|
||||
|
||||
func test_register_invalid_cbv() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
# try to register a single argumend cb
|
||||
cmd_handler.register_cbv("-a", _cmd_instance.cmd_arg)
|
||||
# verify the cb is not registered
|
||||
assert_dict(cmd_handler._command_cbs).is_empty()
|
||||
|
||||
|
||||
func test_register_cb_and_cbv() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_arg)
|
||||
cmd_handler.register_cbv("-a", _cmd_instance.cmd_args)
|
||||
assert_dict(cmd_handler._command_cbs).contains_key_value("-a", [_cmd_instance.cmd_arg, _cmd_instance.cmd_args])
|
||||
|
||||
|
||||
func test__validate_no_registerd_commands() -> void:
|
||||
var cmd_handler := CmdCommandHandler.new(_cmd_options)
|
||||
|
||||
assert_result(cmd_handler._validate()).is_success()
|
||||
|
||||
|
||||
func test__validate_registerd_commands() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_no_arg)
|
||||
cmd_handler.register_cb("-f", _cmd_instance.cmd_foo)
|
||||
cmd_handler.register_cb("-arg", _cmd_instance.cmd_arg)
|
||||
|
||||
assert_result(cmd_handler._validate()).is_success()
|
||||
|
||||
|
||||
func test__validate_registerd_unknown_commands() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_no_arg)
|
||||
cmd_handler.register_cb("-d", _cmd_instance.cmd_foo)
|
||||
cmd_handler.register_cb("-arg", _cmd_instance.cmd_arg)
|
||||
cmd_handler.register_cb("-y", _cmd_instance.cmd_x)
|
||||
|
||||
assert_result(cmd_handler._validate())\
|
||||
.is_error()\
|
||||
.contains_message("The command '-d' is unknown, verify your CmdOptions!\nThe command '-y' is unknown, verify your CmdOptions!")
|
||||
|
||||
|
||||
func test__validate_registerd_invalid_callbacks() -> void:
|
||||
var cmd_handler := CmdCommandHandler.new(_cmd_options)
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_no_arg)
|
||||
cmd_handler.register_cb("-arg", Callable(_cmd_instance, "cmd_not_exists"))
|
||||
|
||||
assert_result(cmd_handler._validate())\
|
||||
.is_error()\
|
||||
.contains_message("Invalid function reference for command '-arg', Check the function reference!")
|
||||
|
||||
|
||||
func test__validate_registerd_register_same_callback_twice() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
cmd_handler.register_cb("-a", _cmd_instance.cmd_no_arg)
|
||||
cmd_handler.register_cb("-arg", _cmd_instance.cmd_no_arg)
|
||||
assert_result(cmd_handler._validate())\
|
||||
.is_error()\
|
||||
.contains_message("The function reference 'cmd_no_arg' already registerd for command '-a'!")
|
||||
|
||||
|
||||
func test_execute_no_commands() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
assert_result(cmd_handler.execute([])).is_success()
|
||||
|
||||
|
||||
func test_execute_commands_no_cb_registered() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
assert_result(cmd_handler.execute([CmdCommand.new("-a")])).is_success()
|
||||
|
||||
|
||||
func test_execute_commands_with_cb_registered() -> void:
|
||||
var cmd_handler: = CmdCommandHandler.new(_cmd_options)
|
||||
var cmd_spy: TestCommands = spy(_cmd_instance)
|
||||
|
||||
cmd_handler.register_cb("-arg", cmd_spy.cmd_arg)
|
||||
cmd_handler.register_cbv("-arg", cmd_spy.cmd_args)
|
||||
cmd_handler.register_cb("-a", cmd_spy.cmd_no_arg)
|
||||
|
||||
assert_result(cmd_handler.execute([CmdCommand.new("-a")])).is_success()
|
||||
|
||||
verify(cmd_spy).cmd_no_arg()
|
||||
verify_no_more_interactions(cmd_spy)
|
||||
|
||||
reset(cmd_spy)
|
||||
assert_result(cmd_handler.execute([
|
||||
CmdCommand.new("-a"),
|
||||
CmdCommand.new("-arg", ["some_value"]),
|
||||
CmdCommand.new("-arg", ["value1", "value2"])])).is_success()
|
||||
verify(cmd_spy).cmd_no_arg()
|
||||
verify(cmd_spy).cmd_arg("some_value")
|
||||
verify(cmd_spy).cmd_args(PackedStringArray(["value1", "value2"]))
|
||||
verify_no_more_interactions(cmd_spy)
|
||||
Reference in New Issue
Block a user