diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-06 14:16:30 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-06 14:27:31 +0100 |
| commit | 6c60d2fe8acdbcdfd7ea408350fb8b5461833677 (patch) | |
| tree | 478447348aa2213133bd2dafb59c83eddd77a246 /logic/cmd_test.go | |
| parent | c433780cfacc384e424adb31187045ddf6a45650 (diff) | |
| download | goffel-6c60d2fe8acdbcdfd7ea408350fb8b5461833677.tar.gz goffel-6c60d2fe8acdbcdfd7ea408350fb8b5461833677.zip | |
generalise command parsing code
Diffstat (limited to 'logic/cmd_test.go')
| -rw-r--r-- | logic/cmd_test.go | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/logic/cmd_test.go b/logic/cmd_test.go new file mode 100644 index 0000000..01dfc0c --- /dev/null +++ b/logic/cmd_test.go @@ -0,0 +1,130 @@ +package logic + +import "testing" + +func TestParseCmd(t *testing.T) { + cmd, err := ParseCmd("") + if err == nil { + t.Errorf("Parsing an empty string should return an error") + } + + for _, s := range []string{"d", "p", "h"} { + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != s { + t.Errorf("Parsing %v should return \"%v\" as command", s, s) + } + } + + for _, c := range []string{"i", "c"} { + cmd, err := ParseCmd(c) + if err == nil { + t.Errorf("Parsing %v should return an error", c) + } + s := c + " -1" + cmd, err = ParseCmd(s) + if err == nil { + t.Errorf("Parsing %v should return an error", s) + } + s = c + " 13" + cmd, err = ParseCmd(s) + if err == nil { + t.Errorf("Parsing %v should return an error", s) + } + s = c + " boom!" + cmd, err = ParseCmd(s) + if err == nil { + t.Errorf("Parsing %v should return an error", s) + } + s = c + " 3" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != c { + t.Errorf("Parsing %v should return \"%v\" as command", s, c) + } + if cmd.Argc != 1 { + t.Errorf("Parsing %v should return argc==1", s) + } + if cmd.Argv[0] != 3 || len(cmd.Argv) != 1 { + t.Errorf("Parsing %v should return argv==[3]", s) + } + s = c + " FullHouse" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != c { + t.Errorf("Parsing %v should return \"%v\" as command", s, c) + } + if cmd.Argc != 1 { + t.Errorf("Parsing %v should return argc==1", s) + } + if cmd.Argv[0] != 8 || len(cmd.Argv) != 1 { + t.Errorf("Parsing %v should return argv==[8]", s) + } + } + + s := "r" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing r should not return \"%v\"", err) + } + if cmd.Cmd != "r" { + t.Errorf("Parsing r should return \"r\" as command") + } + + s = "r 1" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != "r" { + t.Errorf("Parsing %v should return \"r\" as command", s) + } + if cmd.Argc != 1 { + t.Errorf("Parsing %v should return argc==1", s) + } + if cmd.Argv[0] != 1 || len(cmd.Argv) != 1 { + t.Errorf("Parsing %v should return argv==[1]", s) + } + + s = "r 1 3 4" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != "r" { + t.Errorf("Parsing %v should return \"r\" as command", s) + } + if cmd.Argc != 3 { + t.Errorf("Parsing %v should return argc==3", s) + } + r := []int{1, 3, 4} + for i, v := range r { + if cmd.Argv[i] != v { + t.Errorf("Parsing %v should return argv==%v", s, r) + } + } + + s = "r 1 2 3 4 5 hut" + cmd, err = ParseCmd(s) + if err != nil { + t.Errorf("Parsing %v should not return \"%v\"", s, err) + } + if cmd.Cmd != "r" { + t.Errorf("Parsing %v should return \"r\" as command", s) + } + if cmd.Argc != 5 { + t.Errorf("Parsing %v should return argc==5", s) + } + r = []int{1, 2, 3, 4, 5} + for i, v := range r { + if cmd.Argv[i] != v { + t.Errorf("Parsing %v should return argv==%v", s, r) + } + } +} |
