| package arguments |
| |
| import ( |
| "testing" |
| |
| "github.com/google/go-cmp/cmp" |
| ) |
| |
| func TestParseView(t *testing.T) { |
| testCases := map[string]struct { |
| args []string |
| want *View |
| wantArgs []string |
| }{ |
| "nil": { |
| nil, |
| &View{NoColor: false, CompactWarnings: false}, |
| nil, |
| }, |
| "empty": { |
| []string{}, |
| &View{NoColor: false, CompactWarnings: false}, |
| []string{}, |
| }, |
| "none matching": { |
| []string{"-foo", "bar", "-baz"}, |
| &View{NoColor: false, CompactWarnings: false}, |
| []string{"-foo", "bar", "-baz"}, |
| }, |
| "no-color": { |
| []string{"-foo", "-no-color", "-baz"}, |
| &View{NoColor: true, CompactWarnings: false}, |
| []string{"-foo", "-baz"}, |
| }, |
| "compact-warnings": { |
| []string{"-foo", "-compact-warnings", "-baz"}, |
| &View{NoColor: false, CompactWarnings: true}, |
| []string{"-foo", "-baz"}, |
| }, |
| "both": { |
| []string{"-foo", "-no-color", "-compact-warnings", "-baz"}, |
| &View{NoColor: true, CompactWarnings: true}, |
| []string{"-foo", "-baz"}, |
| }, |
| "both, resulting in empty args": { |
| []string{"-no-color", "-compact-warnings"}, |
| &View{NoColor: true, CompactWarnings: true}, |
| []string{}, |
| }, |
| } |
| for name, tc := range testCases { |
| t.Run(name, func(t *testing.T) { |
| got, gotArgs := ParseView(tc.args) |
| if *got != *tc.want { |
| t.Errorf("unexpected result\n got: %#v\nwant: %#v", got, tc.want) |
| } |
| if !cmp.Equal(gotArgs, tc.wantArgs) { |
| t.Errorf("unexpected args\n got: %#v\nwant: %#v", gotArgs, tc.wantArgs) |
| } |
| }) |
| } |
| } |