diff --git a/commands/command_test.go b/commands/command_test.go new file mode 100644 index 000000000..f08e37560 --- /dev/null +++ b/commands/command_test.go @@ -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") + } +}