//go:build !darwin || !appstore
|
|
package textoutput
|
|
import (
|
"errors"
|
"testing"
|
)
|
|
type fakePaster struct {
|
pasteErr error
|
typeErr error
|
pasted string
|
typed string
|
}
|
|
func (p *fakePaster) Paste(text string, keepClipboard bool) error {
|
p.pasted = text
|
return p.pasteErr
|
}
|
|
func (p *fakePaster) TypeText(text string) error {
|
p.typed = text
|
return p.typeErr
|
}
|
|
func TestDefaultRouterUsesExistingPastePath(t *testing.T) {
|
paster := &fakePaster{}
|
router := NewRouter(paster)
|
|
result := router.Output("recognized text", false)
|
if !result.OK || result.Method != "legacy_clipboard_paste" {
|
t.Fatalf("result = %+v", result)
|
}
|
if paster.pasted != "recognized text" || paster.typed != "" {
|
t.Fatalf("paster = %+v", paster)
|
}
|
}
|
|
func TestDefaultRouterUsesLegacyTypeFallback(t *testing.T) {
|
paster := &fakePaster{pasteErr: errors.New("paste denied")}
|
router := NewRouter(paster)
|
|
result := router.Output("recognized text", false)
|
if !result.OK || result.Method != "legacy_type_fallback" {
|
t.Fatalf("result = %+v", result)
|
}
|
if paster.typed != "recognized text" {
|
t.Fatalf("typed = %q", paster.typed)
|
}
|
}
|
|
func TestDefaultRouterKeepsTextOnOutputFailure(t *testing.T) {
|
paster := &fakePaster{pasteErr: errors.New("paste denied"), typeErr: errors.New("type denied")}
|
router := NewRouter(paster)
|
|
result := router.Output("recognized text", false)
|
if result.OK || result.Text != "recognized text" {
|
t.Fatalf("result = %+v", result)
|
}
|
if router.LastResult().Text != "recognized text" {
|
t.Fatalf("last result = %+v", router.LastResult())
|
}
|
}
|