Files
jpmschweitzerandClaude Opus 4.6 61e0762a84 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>
2026-02-11 16:52:00 +01:00

163 lines
5.4 KiB
GDScript

@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)