package main import "testing" func TestParsePickArgs(t *testing.T) { ok := map[string]struct { args []string input string plan string }{ "input only": {[]string{"in.pdf"}, "in.pdf", ""}, "input with -o": {[]string{"in.pdf", "-o", "p.json"}, "in.pdf", "p.json"}, "-o before input": {[]string{"-o", "p.json", "in.pdf"}, "in.pdf", "p.json"}, } for name, c := range ok { input, plan, err := parsePickArgs(c.args) if err != nil { t.Errorf("%s: unexpected error: %v", name, err) continue } if input != c.input || plan != c.plan { t.Errorf("%s: got input=%q plan=%q, want %q %q", name, input, plan, c.input, c.plan) } } bad := map[string][]string{ "no args": {}, "missing -o value": {"in.pdf", "-o"}, "unknown option": {"in.pdf", "-x"}, "extra positional": {"in.pdf", "extra.json"}, } for name, args := range bad { if _, _, err := parsePickArgs(args); err == nil { t.Errorf("%s: expected error, got nil", name) } } } func TestTerminalText(t *testing.T) { if got, want := terminalText("safe café"), "safe café"; got != want { t.Errorf("terminalText safe text = %q, want %q", got, want) } if got, want := terminalText("a\nb\x1b\u0085"), "a?b??"; got != want { t.Errorf("terminalText controls = %q, want %q", got, want) } }