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} }