diff options
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go index 6ee3541..d03cbfd 100644 --- a/parse_test.go +++ b/parse_test.go @@ -250,6 +250,30 @@ func TestMap(t *testing.T) { assert.Equal(t, 3, args.Values["c"]) } +func TestMapPositional(t *testing.T) { + var args struct { + Values map[string]int `arg:"positional"` + } + err := parse("a=1 b=2 c=3", &args) + require.NoError(t, err) + assert.Len(t, args.Values, 3) + assert.Equal(t, 1, args.Values["a"]) + assert.Equal(t, 2, args.Values["b"]) + assert.Equal(t, 3, args.Values["c"]) +} + +func TestMapWithSeparate(t *testing.T) { + var args struct { + Values map[string]int `arg:"separate"` + } + err := parse("--values a=1 --values b=2 --values c=3", &args) + require.NoError(t, err) + assert.Len(t, args.Values, 3) + assert.Equal(t, 1, args.Values["a"]) + assert.Equal(t, 2, args.Values["b"]) + assert.Equal(t, 3, args.Values["c"]) +} + func TestPlaceholder(t *testing.T) { var args struct { Input string `arg:"positional" placeholder:"SRC"` @@ -718,6 +742,17 @@ func TestEnvironmentVariableSliceArgumentWrongType(t *testing.T) { assert.Error(t, err) } +func TestEnvironmentVariableMap(t *testing.T) { + var args struct { + Foo map[int]string `arg:"env"` + } + setenv(t, "FOO", "1=one,99=ninetynine") + MustParse(&args) + assert.Len(t, args.Foo, 2) + assert.Equal(t, "one", args.Foo[1]) + assert.Equal(t, "ninetynine", args.Foo[99]) +} + func TestEnvironmentVariableIgnored(t *testing.T) { var args struct { Foo string `arg:"env"` |
