mirror of
https://github.com/sst/opencode.git
synced 2025-08-23 14:34:08 +00:00
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package textarea
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/sst/opencode/internal/attachment"
|
|
)
|
|
|
|
func TestRemoveAttachmentAtCursor_ConvertsToText_WhenCursorAfterAttachment(t *testing.T) {
|
|
m := New()
|
|
m.InsertString("a ")
|
|
att := &attachment.Attachment{ID: "1", Display: "@file.txt"}
|
|
m.InsertAttachment(att)
|
|
m.InsertString(" b")
|
|
|
|
// Position cursor immediately after the attachment (index 3: 'a',' ',att,' ', 'b')
|
|
m.SetCursorColumn(3)
|
|
|
|
if ok := m.removeAttachmentAtCursor(); !ok {
|
|
t.Fatalf("expected removal to occur")
|
|
}
|
|
got := m.Value()
|
|
want := "a @file.txt b"
|
|
if got != want {
|
|
t.Fatalf("expected %q, got %q", want, got)
|
|
}
|
|
}
|
|
|
|
func TestRemoveAttachmentAtCursor_ConvertsToText_WhenCursorOnAttachment(t *testing.T) {
|
|
m := New()
|
|
m.InsertString("x ")
|
|
att := &attachment.Attachment{ID: "2", Display: "@img.png"}
|
|
m.InsertAttachment(att)
|
|
m.InsertString(" y")
|
|
|
|
// Position cursor on the attachment token (index 2: 'x',' ',att,' ', 'y')
|
|
m.SetCursorColumn(2)
|
|
|
|
if ok := m.removeAttachmentAtCursor(); !ok {
|
|
t.Fatalf("expected removal to occur")
|
|
}
|
|
got := m.Value()
|
|
want := "x @img.png y"
|
|
if got != want {
|
|
t.Fatalf("expected %q, got %q", want, got)
|
|
}
|
|
}
|
|
|
|
func TestRemoveAttachmentAtCursor_StartOfLine(t *testing.T) {
|
|
m := New()
|
|
att := &attachment.Attachment{ID: "3", Display: "@a.txt"}
|
|
m.InsertAttachment(att)
|
|
m.InsertString(" tail")
|
|
|
|
// Position cursor immediately after the attachment at start of line (index 1)
|
|
m.SetCursorColumn(1)
|
|
if ok := m.removeAttachmentAtCursor(); !ok {
|
|
t.Fatalf("expected removal to occur at start of line")
|
|
}
|
|
if got := m.Value(); got != "@a.txt tail" {
|
|
t.Fatalf("unexpected value: %q", got)
|
|
}
|
|
}
|
|
|
|
func TestRemoveAttachmentAtCursor_NoAttachment_NoChange(t *testing.T) {
|
|
m := New()
|
|
m.InsertString("hello world")
|
|
col := m.CursorColumn()
|
|
if ok := m.removeAttachmentAtCursor(); ok {
|
|
t.Fatalf("did not expect removal to occur")
|
|
}
|
|
if m.Value() != "hello world" || m.CursorColumn() != col {
|
|
t.Fatalf("value or cursor unexpectedly changed")
|
|
}
|
|
}
|