aboutsummaryrefslogtreecommitdiff
path: root/logic/cmd_test.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2017-02-06 14:16:30 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2017-02-06 14:27:31 +0100
commit6c60d2fe8acdbcdfd7ea408350fb8b5461833677 (patch)
tree478447348aa2213133bd2dafb59c83eddd77a246 /logic/cmd_test.go
parentc433780cfacc384e424adb31187045ddf6a45650 (diff)
downloadgoffel-6c60d2fe8acdbcdfd7ea408350fb8b5461833677.tar.gz
goffel-6c60d2fe8acdbcdfd7ea408350fb8b5461833677.zip
generalise command parsing code
Diffstat (limited to 'logic/cmd_test.go')
-rw-r--r--logic/cmd_test.go130
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)
+ }
+ }
+}