pollen-not-included/addons/gdUnit4/test/cmd/CmdArgumentParserTest.gd
2024-05-02 09:36:31 +01:00

120 lines
3.7 KiB
GDScript

# GdUnit generated TestSuite
class_name CmdArgumentParserTest
extends GdUnitTestSuite
# TestSuite generated from
const __source = 'res://addons/gdUnit4/src/cmd/CmdArgumentParser.gd'
var option_a := CmdOption.new("-a", "some help text a", "some description a")
var option_f := CmdOption.new("-f, --foo", "some help text foo", "some description foo")
var option_b := CmdOption.new("-b, --bar", "-b <value>", "comand with required argument", TYPE_STRING)
var option_c := CmdOption.new("-c, --calc", "-c [value]", "command with optional argument", TYPE_STRING, true)
var option_x := CmdOption.new("-x", "some help text x", "some description x")
var _cmd_options :CmdOptions
func before():
# setup command options
_cmd_options = CmdOptions.new([
option_a,
option_f,
option_b,
option_c,
],
# advnaced options
[
option_x,
])
func test_parse_success():
var parser := CmdArgumentParser.new(_cmd_options, "CmdTool.gd")
assert_result(parser.parse([])).is_empty()
# check with godot cmd argumnents before tool argument
assert_result(parser.parse(["-d", "dir/dir/CmdTool.gd"])).is_empty()
# if valid argument set than don't show the help by default
var result := parser.parse(["-d", "dir/dir/CmdTool.gd", "-a"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-a"),
])
func test_parse_success_required_arg():
var parser := CmdArgumentParser.new(_cmd_options, "CmdTool.gd")
var result := parser.parse(["-d", "dir/dir/CmdTool.gd", "-a", "-b", "valueA", "-b", "valueB"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-a"),
CmdCommand.new("-b", ["valueA", "valueB"]),
])
# useing command long term
result = parser.parse(["-d", "dir/dir/CmdTool.gd", "-a", "--bar", "value"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-a"),
CmdCommand.new("-b", ["value"])
])
func test_parse_success_optional_arg():
var parser := CmdArgumentParser.new(_cmd_options, "CmdTool.gd")
# without argument
var result := parser.parse(["-d", "dir/dir/CmdTool.gd", "-c", "-a"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-c"),
CmdCommand.new("-a")
])
# without argument at end
result = parser.parse(["-d", "dir/dir/CmdTool.gd", "-a", "-c"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-a"),
CmdCommand.new("-c")
])
# with argument
result = parser.parse(["-d", "dir/dir/CmdTool.gd", "-c", "argument", "-a"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-c", ["argument"]),
CmdCommand.new("-a")
])
func test_parse_success_repead_cmd_args():
var parser := CmdArgumentParser.new(_cmd_options, "CmdTool.gd")
# without argument
var result := parser.parse(["-d", "dir/dir/CmdTool.gd", "-c", "argument", "-a"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-c", ["argument"]),
CmdCommand.new("-a")
])
# with repeading commands argument
result = parser.parse(["-d", "dir/dir/CmdTool.gd", "-c", "argument1", "-a", "-c", "argument2", "-c", "argument3"])
assert_result(result).is_success()
assert_array(result.value()).contains_exactly([
CmdCommand.new("-c", ["argument1", "argument2", "argument3"]),
CmdCommand.new("-a")
])
func test_parse_error():
var parser := CmdArgumentParser.new(_cmd_options, "CmdTool.gd")
assert_result(parser.parse([])).is_empty()
# if invalid arguemens set than return with error and show the help by default
assert_result(parser.parse(["-d", "dir/dir/CmdTool.gd", "-unknown"])).is_error()\
.contains_message("Unknown '-unknown' command!")