package main import ( "slices" "testing" ) func TestParseBatchArgs(t *testing.T) { cases := []struct { args []string verb string rest []string ok bool }{ {[]string{"submit", "targets.json"}, "submit", []string{"targets.json"}, true}, {[]string{"submit", "-"}, "submit", []string{"-"}, true}, {[]string{"status", "job-123"}, "status", []string{"job-123"}, true}, {[]string{"status", "--results", "job-123"}, "status", []string{"--results", "job-123"}, true}, {[]string{"get", "job-123", "4"}, "get", []string{"job-123", "4"}, true}, {[]string{"cancel", "job-123"}, "cancel", []string{"job-123"}, true}, {[]string{}, "", nil, false}, {[]string{"submit"}, "", nil, false}, {[]string{"status"}, "", nil, false}, {[]string{"status", "a", "b"}, "", nil, false}, {[]string{"status", "--results"}, "", nil, false}, {[]string{"get", "job-123"}, "", nil, false}, {[]string{"get", "job-123", "x"}, "", nil, false}, {[]string{"get", "job-123", "-1"}, "", nil, false}, {[]string{"cancel"}, "", nil, false}, {[]string{"bogus", "x"}, "", nil, false}, } for _, c := range cases { verb, rest, err := parseBatchArgs(c.args) if c.ok { if err != nil { t.Errorf("%v: unexpected error %v", c.args, err) continue } if verb != c.verb || !slices.Equal(rest, c.rest) { t.Errorf("%v: got verb=%q rest=%q", c.args, verb, rest) } } else if err == nil { t.Errorf("%v: want an error", c.args) } } }