// Copyright (c) 2016 Florian Fischer. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. 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") } cmd, err = ParseCmd(" q \t ") if err != nil { t.Errorf("Parsing \" q \\t \" should not return \"%v\"", err) } if cmd.Cmd != "q" { t.Errorf("Parsing \" q \\t \" should return \"q\" as command") } 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 + " 0" cmd, err = ParseCmd(s) if err == nil { t.Errorf("Parsing %v should return an error", s) } s = c + " 14" 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] != 2 || len(cmd.Argv) != 1 { t.Errorf("Parsing %v should return argv==[2]", 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) } } }