120 lines
3.7 KiB
GDScript
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!")
|