From 6c60d2fe8acdbcdfd7ea408350fb8b5461833677 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Mon, 6 Feb 2017 14:16:30 +0100 Subject: generalise command parsing code --- logic/cmd_test.go | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 logic/cmd_test.go (limited to 'logic/cmd_test.go') 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) + } + } +} -- cgit v1.2.3