commands: Wrote tests for command option validation

This commit is contained in:
Matt Bell 2014-10-08 14:30:27 -07:00 committed by Juan Batiz-Benet
parent 15b7388c0e
commit dd682963a2

60
commands/command_test.go Normal file
View File

@ -0,0 +1,60 @@
package commands
import "testing"
func TestOptionValidation(t *testing.T) {
cmd := Command{
Options: []Option{
Option{ []string{ "b", "beep" }, Int },
Option{ []string{ "B", "boop" }, String },
},
f: func(req *Request) (interface{}, error) {
return nil, nil
},
}
req := NewRequest()
req.options["foo"] = 5
_, err := cmd.Call(nil, req)
if err == nil {
t.Error("Should have failed (unrecognized command)")
}
req = NewRequest()
req.options["beep"] = 5
req.options["b"] = 10
_, err = cmd.Call(nil, req)
if err == nil {
t.Error("Should have failed (duplicate options)")
}
req = NewRequest()
req.options["beep"] = "foo"
_, err = cmd.Call(nil, req)
if err == nil {
t.Error("Should have failed (incorrect type)")
}
req = NewRequest()
req.options["beep"] = 5
_, err = cmd.Call(nil, req)
if err != nil {
t.Error("Should have passed")
}
req = NewRequest()
req.options["beep"] = 5
req.options["boop"] = "test"
_, err = cmd.Call(nil, req)
if err != nil {
t.Error("Should have passed")
}
req = NewRequest()
req.options["b"] = 5
req.options["B"] = "test"
_, err = cmd.Call(nil, req)
if err != nil {
t.Error("Should have passed")
}
}