github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/mods/store/store_test.go (about)

     1  package store
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/markusbkk/elvish/pkg/eval"
     7  	. "github.com/markusbkk/elvish/pkg/eval/evaltest"
     8  	"github.com/markusbkk/elvish/pkg/store"
     9  	"github.com/markusbkk/elvish/pkg/store/storedefs"
    10  	"github.com/markusbkk/elvish/pkg/testutil"
    11  )
    12  
    13  func TestStore(t *testing.T) {
    14  	testutil.InTempDir(t)
    15  	s, err := store.NewStore("db")
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  	ns := Ns(s)
    20  
    21  	setup := func(ev *eval.Evaler) {
    22  		ev.ExtendGlobal(eval.BuildNs().AddNs("store", ns))
    23  	}
    24  	TestWithSetup(t, setup,
    25  		// Add commands
    26  		That("store:next-cmd-seq").Puts(1),
    27  		That("store:add-cmd foo").Puts(1),
    28  		That("store:add-cmd bar").Puts(2),
    29  		That("store:add-cmd baz").Puts(3),
    30  		That("store:next-cmd-seq").Puts(4),
    31  		// Query commands
    32  		That("store:cmd 1").Puts("foo"),
    33  		That("store:cmds 1 4").Puts(cmd("foo", 1), cmd("bar", 2), cmd("baz", 3)),
    34  		That("store:cmds 2 3").Puts(cmd("bar", 2)),
    35  		That("store:next-cmd 1 f").Puts(cmd("foo", 1)),
    36  		That("store:prev-cmd 3 b").Puts(cmd("bar", 2)),
    37  		// Delete commands
    38  		That("store:del-cmd 2").DoesNothing(),
    39  		That("store:cmds 1 4").Puts(cmd("foo", 1), cmd("baz", 3)),
    40  
    41  		// Add directories
    42  		That("store:add-dir /foo").DoesNothing(),
    43  		That("store:add-dir /bar").DoesNothing(),
    44  		// Query directories
    45  		That("store:dirs").Puts(
    46  			dir("/bar", store.DirScoreIncrement),
    47  			dir("/foo", store.DirScoreIncrement*store.DirScoreDecay)),
    48  		// Delete directories
    49  		That("store:del-dir /foo").DoesNothing(),
    50  		That("store:dirs").Puts(
    51  			dir("/bar", store.DirScoreIncrement)),
    52  
    53  		// Set shared variables
    54  		That("store:set-shared-var foo lorem").DoesNothing(),
    55  		That("store:set-shared-var bar ipsum").DoesNothing(),
    56  		// Query shared variables
    57  		That("store:shared-var foo").Puts("lorem"),
    58  		That("store:shared-var bar").Puts("ipsum"),
    59  		// Delete shared variables
    60  		That("store:del-shared-var foo").DoesNothing(),
    61  		That("store:shared-var foo").Throws(store.ErrNoSharedVar),
    62  	)
    63  }
    64  
    65  func cmd(s string, i int) storedefs.Cmd     { return storedefs.Cmd{Text: s, Seq: i} }
    66  func dir(s string, f float64) storedefs.Dir { return storedefs.Dir{Path: s, Score: f} }