1package modes
2
3import (
4 "errors"
5 "testing"
6
7 "github.com/bnema/zut/packages/tui"
8)
9
10func TestResolveClipboardTextConvertsClipboardKeyToPaste(t *testing.T) {
11 key, resolved, err := resolveClipboardText(tui.Key{Kind: tui.KeyPasteClipboard, Ctrl: true}, func() (string, bool, error) {
12 return "pasted\ntext", true, nil
13 })
14 if err != nil {
15 t.Fatal(err)
16 }
17 if !resolved || key.Kind != tui.KeyPaste || key.Paste != "pasted\ntext" {
18 t.Fatalf("key = %#v, resolved = %v", key, resolved)
19 }
20}
21
22func TestResolveClipboardTextPreservesClipboardKeyWithoutText(t *testing.T) {
23 original := tui.Key{Kind: tui.KeyPasteClipboard, Ctrl: true}
24 key, resolved, err := resolveClipboardText(original, func() (string, bool, error) {
25 return "", false, nil
26 })
27 if err != nil {
28 t.Fatal(err)
29 }
30 if resolved || key != original {
31 t.Fatalf("key = %#v, resolved = %v, want original unresolved key", key, resolved)
32 }
33}
34
35func TestResolveClipboardTextReturnsReadError(t *testing.T) {
36 want := errors.New("clipboard unavailable")
37 _, resolved, err := resolveClipboardText(tui.Key{Kind: tui.KeyPasteClipboard}, func() (string, bool, error) {
38 return "", false, want
39 })
40 if resolved || !errors.Is(err, want) {
41 t.Fatalf("resolved = %v, err = %v, want %v", resolved, err, want)
42 }
43}
44
45func TestSingleLinePaste(t *testing.T) {
46 if got := singleLinePaste(" claude\n opus\t5 "); got != "claude opus 5" {
47 t.Fatalf("singleLinePaste = %q", got)
48 }
49}