diff options
Diffstat (limited to 'main_test.go')
| -rw-r--r-- | main_test.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000..680e821 --- /dev/null +++ b/main_test.go @@ -0,0 +1,46 @@ +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) + } +} |