src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/edit/state_api_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"src.elv.sh/pkg/cli/tk"
     7  )
     8  
     9  func TestInsertAtDot(t *testing.T) {
    10  	f := setup(t)
    11  
    12  	f.SetCodeBuffer(tk.CodeBuffer{Content: "ab", Dot: 1})
    13  	evals(f.Evaler, `edit:insert-at-dot XYZ`)
    14  
    15  	testCodeBuffer(t, f.Editor, tk.CodeBuffer{Content: "aXYZb", Dot: 4})
    16  }
    17  
    18  func TestReplaceInput(t *testing.T) {
    19  	f := setup(t)
    20  
    21  	f.SetCodeBuffer(tk.CodeBuffer{Content: "ab", Dot: 1})
    22  	evals(f.Evaler, `edit:replace-input XYZ`)
    23  
    24  	testCodeBuffer(t, f.Editor, tk.CodeBuffer{Content: "XYZ", Dot: 3})
    25  }
    26  
    27  func TestDot(t *testing.T) {
    28  	f := setup(t)
    29  
    30  	f.SetCodeBuffer(tk.CodeBuffer{Content: "code", Dot: 4})
    31  	evals(f.Evaler, `set edit:-dot = 0`)
    32  
    33  	testCodeBuffer(t, f.Editor, tk.CodeBuffer{Content: "code", Dot: 0})
    34  }
    35  
    36  func TestDotOutOfBoundary(t *testing.T) {
    37  	f := setup(t)
    38  
    39  	f.SetCodeBuffer(tk.CodeBuffer{Content: "", Dot: 0})
    40  	evals(f.Evaler, "var err = ?(set edit:-dot = 10)[reason]")
    41  	testGlobal(t, f.Evaler, "err", errDotOutOfBoundary)
    42  }
    43  
    44  func TestCurrentCommand(t *testing.T) {
    45  	f := setup(t)
    46  
    47  	evals(f.Evaler, `set edit:current-command = code`)
    48  
    49  	testCodeBuffer(t, f.Editor, tk.CodeBuffer{Content: "code", Dot: 4})
    50  }
    51  
    52  func testCodeBuffer(t *testing.T, ed *Editor, wantBuf tk.CodeBuffer) {
    53  	t.Helper()
    54  	if buf := codeArea(ed.app).CopyState().Buffer; buf != wantBuf {
    55  		t.Errorf("content = %v, want %v", buf, wantBuf)
    56  	}
    57  }