src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/edit/insert_api_test.go (about) 1 package edit 2 3 import ( 4 "testing" 5 6 "src.elv.sh/pkg/cli/term" 7 ) 8 9 func TestInsert_Abbr(t *testing.T) { 10 f := setup(t) 11 12 evals(f.Evaler, `set edit:abbr = [&x=full]`) 13 f.TTYCtrl.Inject(term.K('x'), term.K('\n')) 14 15 if code := <-f.codeCh; code != "full" { 16 t.Errorf("abbreviation expanded to %q, want %q", code, "full") 17 } 18 } 19 20 func TestInsert_Binding(t *testing.T) { 21 f := setup(t) 22 23 evals(f.Evaler, 24 `var called = 0`, 25 `set edit:insert:binding[x] = { set called = (+ $called 1) }`) 26 27 f.TTYCtrl.Inject(term.K('x'), term.K('\n')) 28 29 if code := <-f.codeCh; code != "" { 30 t.Errorf("code = %q, want %q", code, "") 31 } 32 if called, _ := f.Evaler.Global().Index("called"); called != 1 { 33 t.Errorf("called = %v, want 1", called) 34 } 35 } 36 37 func TestInsert_QuotePaste(t *testing.T) { 38 f := setup(t) 39 40 evals(f.Evaler, `set edit:insert:quote-paste = $true`) 41 42 f.TTYCtrl.Inject( 43 term.PasteSetting(true), 44 term.K('>'), 45 term.PasteSetting(false), 46 term.K('\n')) 47 48 wantCode := `'>'` 49 if code := <-f.codeCh; code != wantCode { 50 t.Errorf("Got code %q, want %q", code, wantCode) 51 } 52 } 53 54 func TestToggleQuotePaste(t *testing.T) { 55 f := setup(t) 56 57 evals(f.Evaler, 58 `var v0 = $edit:insert:quote-paste`, 59 `edit:toggle-quote-paste`, 60 `var v1 = $edit:insert:quote-paste`, 61 `edit:toggle-quote-paste`, 62 `var v2 = $edit:insert:quote-paste`) 63 64 v0 := getGlobal(f.Evaler, "v0").(bool) 65 v1 := getGlobal(f.Evaler, "v1").(bool) 66 v2 := getGlobal(f.Evaler, "v2").(bool) 67 if v1 == v0 { 68 t.Errorf("got v1 = v0") 69 } 70 if v2 == v1 { 71 t.Errorf("got v2 = v1") 72 } 73 }