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  }