Vendor gdUnit4 for Godot 4 client testing (D-030). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
163 lines
5.4 KiB
GDScript
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)
|