github.com/kolbycrouch/elvish@v0.14.1-0.20210614162631-215b9ac1c423/pkg/store/storetest/shared_var.go (about)

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