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