github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/edit/vars_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/markusbkk/elvish/pkg/eval"
     7  	"github.com/markusbkk/elvish/pkg/eval/errs"
     8  	. "github.com/markusbkk/elvish/pkg/eval/evaltest"
     9  	"github.com/markusbkk/elvish/pkg/eval/vals"
    10  )
    11  
    12  func TestAddVar(t *testing.T) {
    13  	TestWithSetup(t, func(ev *eval.Evaler) {
    14  		ev.ExtendGlobal(eval.BuildNs().AddGoFn("add-var", addVar))
    15  	},
    16  		That("add-var foo bar").Then("put $foo").Puts("bar"),
    17  
    18  		// Qualified name
    19  		That("add-var a:b ''").Throws(
    20  			errs.BadValue{
    21  				What:  "name argument to edit:add-var",
    22  				Valid: "unqualified variable name", Actual: "a:b"}),
    23  		// Bad type
    24  		That("add-var a~ ''").Throws(ErrorWithType(vals.WrongType{})),
    25  	)
    26  }
    27  
    28  func TestAddVars(t *testing.T) {
    29  	TestWithSetup(t, func(ev *eval.Evaler) {
    30  		ev.ExtendGlobal(eval.BuildNs().AddGoFn("add-vars", addVars))
    31  	},
    32  		That("add-vars [&foo=bar]").Then("put $foo").Puts("bar"),
    33  		That("add-vars [&a=A &b=B]").Then("put $a $b").Puts("A", "B"),
    34  
    35  		// Non-string key
    36  		That("add-vars [&[]='']").Throws(
    37  			errs.BadValue{
    38  				What:  "key of argument to edit:add-vars",
    39  				Valid: "string", Actual: "list"}),
    40  
    41  		// Qualified name
    42  		That("add-vars [&a:b='']").Throws(
    43  			errs.BadValue{
    44  				What:  "key of argument to edit:add-vars",
    45  				Valid: "unqualified variable name", Actual: "a:b"}),
    46  		// Bad type
    47  		That("add-vars [&a~='']").Throws(ErrorWithType(vals.WrongType{})),
    48  	)
    49  }