github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/store/storetest/shared_var.go (about) 1 package storetest 2 3 import ( 4 "testing" 5 6 "github.com/markusbkk/elvish/pkg/store" 7 "github.com/markusbkk/elvish/pkg/store/storedefs" 8 ) 9 10 // TestSharedVar tests the shared variable functionality of a Store. 11 func TestSharedVar(t *testing.T, tStore storedefs.Store) { 12 varname := "foo" 13 value1 := "lorem ipsum" 14 value2 := "o mores, o tempora" 15 16 // Getting an nonexistent variable should return ErrNoSharedVar. 17 _, err := tStore.SharedVar(varname) 18 if !matchErr(err, store.ErrNoSharedVar) { 19 t.Error("want ErrNoSharedVar, got", err) 20 } 21 22 // Setting a variable for the first time creates it. 23 err = tStore.SetSharedVar(varname, value1) 24 if err != nil { 25 t.Error("want no error, got", err) 26 } 27 v, err := tStore.SharedVar(varname) 28 if v != value1 || err != nil { 29 t.Errorf("want %q and no error, got %q and %v", value1, v, err) 30 } 31 32 // Setting an existing variable updates its value. 33 err = tStore.SetSharedVar(varname, value2) 34 if err != nil { 35 t.Error("want no error, got", err) 36 } 37 v, err = tStore.SharedVar(varname) 38 if v != value2 || err != nil { 39 t.Errorf("want %q and no error, got %q and %v", value2, v, err) 40 } 41 42 // After deleting a variable, access to it cause ErrNoSharedVar. 43 err = tStore.DelSharedVar(varname) 44 if err != nil { 45 t.Error("want no error, got", err) 46 } 47 _, err = tStore.SharedVar(varname) 48 if !matchErr(err, store.ErrNoSharedVar) { 49 t.Error("want ErrNoSharedVar, got", err) 50 } 51 }