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 }