github.com/kolbycrouch/elvish@v0.14.1-0.20210614162631-215b9ac1c423/pkg/edit/store_api_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"src.elv.sh/pkg/cli/tk"
     7  	"src.elv.sh/pkg/eval/vals"
     8  	"src.elv.sh/pkg/store"
     9  )
    10  
    11  func TestCommandHistory(t *testing.T) {
    12  	f := setup(storeOp(func(s store.Store) {
    13  		s.AddCmd("echo 0")
    14  		s.AddCmd("echo 1")
    15  		s.AddCmd("echo 2")
    16  		s.AddCmd("echo 2")
    17  		s.AddCmd("echo 1")
    18  		s.AddCmd("echo 3")
    19  		s.AddCmd("echo 1")
    20  	}))
    21  	defer f.Cleanup()
    22  
    23  	// TODO(xiaq): Test session history too. See NewHybridStore and NewMemStore.
    24  
    25  	evals(f.Evaler, `@cmds = (edit:command-history)`)
    26  	testGlobal(t, f.Evaler,
    27  		"cmds",
    28  		vals.MakeList(
    29  			cmdMap(1, "echo 0"),
    30  			cmdMap(2, "echo 1"),
    31  			cmdMap(3, "echo 2"),
    32  			cmdMap(4, "echo 2"),
    33  			cmdMap(5, "echo 1"),
    34  			cmdMap(6, "echo 3"),
    35  			cmdMap(7, "echo 1"),
    36  		))
    37  
    38  	evals(f.Evaler, `@cmds = (edit:command-history &newest-first)`)
    39  	testGlobal(t, f.Evaler,
    40  		"cmds",
    41  		vals.MakeList(
    42  			cmdMap(7, "echo 1"),
    43  			cmdMap(6, "echo 3"),
    44  			cmdMap(5, "echo 1"),
    45  			cmdMap(4, "echo 2"),
    46  			cmdMap(3, "echo 2"),
    47  			cmdMap(2, "echo 1"),
    48  			cmdMap(1, "echo 0"),
    49  		))
    50  
    51  	evals(f.Evaler, `@cmds = (edit:command-history &dedup)`)
    52  	testGlobal(t, f.Evaler,
    53  		"cmds",
    54  		vals.MakeList(
    55  			cmdMap(1, "echo 0"),
    56  			cmdMap(4, "echo 2"),
    57  			cmdMap(6, "echo 3"),
    58  			cmdMap(7, "echo 1"),
    59  		))
    60  
    61  	evals(f.Evaler, `@cmds = (edit:command-history &dedup &newest-first)`)
    62  	testGlobal(t, f.Evaler,
    63  		"cmds",
    64  		vals.MakeList(
    65  			cmdMap(7, "echo 1"),
    66  			cmdMap(6, "echo 3"),
    67  			cmdMap(4, "echo 2"),
    68  			cmdMap(1, "echo 0"),
    69  		))
    70  
    71  	evals(f.Evaler, `@cmds = (edit:command-history &dedup &newest-first &cmd-only)`)
    72  	testGlobal(t, f.Evaler,
    73  		"cmds",
    74  		vals.MakeList(
    75  			"echo 1",
    76  			"echo 3",
    77  			"echo 2",
    78  			"echo 0",
    79  		))
    80  }
    81  
    82  func cmdMap(id int, cmd string) vals.Map {
    83  	return vals.MakeMap("id", id, "cmd", cmd)
    84  }
    85  
    86  func TestInsertLastWord(t *testing.T) {
    87  	f := setup(storeOp(func(s store.Store) {
    88  		s.AddCmd("echo foo bar")
    89  	}))
    90  	defer f.Cleanup()
    91  
    92  	evals(f.Evaler, "edit:insert-last-word")
    93  	wantBuf := tk.CodeBuffer{Content: "bar", Dot: 3}
    94  	if buf := f.Editor.app.CodeArea().CopyState().Buffer; buf != wantBuf {
    95  		t.Errorf("buf = %v, want %v", buf, wantBuf)
    96  	}
    97  }