# A bare command.
command
---
Command { name: "command", args: [], prefix: None, silent: false }

# Commands with arguments.
foo arg
bar key=value
baz arg key=value
---
Command { name: "foo", args: [Argument { key: None, value: "arg" }], prefix: None, silent: false }
Command { name: "bar", args: [Argument { key: Some("key"), value: "value" }], prefix: None, silent: false }
Command { name: "baz", args: [Argument { key: None, value: "arg" }, Argument { key: Some("key"), value: "value" }], prefix: None, silent: false }

# Commands with prefixes.
a: foo arg
b: bar key=value
---
a: Command { name: "foo", args: [Argument { key: None, value: "arg" }], prefix: Some("a"), silent: false }
b: Command { name: "bar", args: [Argument { key: Some("key"), value: "value" }], prefix: Some("b"), silent: false }

# Both prefixes, commands, and argument identifiers can be whitespace, but not
# empty (tested under errors/).
" ": " " " "=" "
---
 : Command { name: " ", args: [Argument { key: Some(" "), value: " " }], prefix: Some(" "), silent: false }

# Empty argument values are fine.
command ""
command arg=""
command arg=
---
Command { name: "command", args: [Argument { key: None, value: "" }], prefix: None, silent: false }
Command { name: "command", args: [Argument { key: Some("arg"), value: "" }], prefix: None, silent: false }
Command { name: "command", args: [Argument { key: Some("arg"), value: "" }], prefix: None, silent: false }
