diff options
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/parse_test.go b/parse_test.go index 4864ebc..b8e3fa7 100644 --- a/parse_test.go +++ b/parse_test.go @@ -25,14 +25,16 @@ func TestMixed(t *testing.T) { var args struct { Foo string `arg:"-f"` Bar int + Baz uint `arg:"positional"` Ham bool Spam float32 } args.Bar = 3 - err := ParseFrom(&args, split("-spam=1.2 -ham -f xyz")) + err := ParseFrom(&args, split("123 -spam=1.2 -ham -f xyz")) require.NoError(t, err) assert.Equal(t, "xyz", args.Foo) assert.Equal(t, 3, args.Bar) + assert.Equal(t, uint(123), args.Baz) assert.Equal(t, true, args.Ham) assert.Equal(t, 1.2, args.Spam) } @@ -86,3 +88,43 @@ func TestCaseSensitive2(t *testing.T) { assert.False(t, args.Lower) assert.True(t, args.Upper) } + +func TestPositional(t *testing.T) { + var args struct { + Input string `arg:"positional"` + Output string `arg:"positional"` + } + err := ParseFrom(&args, split("foo")) + require.NoError(t, err) + assert.Equal(t, "foo", args.Input) + assert.Equal(t, "", args.Output) +} + +func TestRequiredPositional(t *testing.T) { + var args struct { + Input string `arg:"positional"` + Output string `arg:"positional,required"` + } + err := ParseFrom(&args, split("foo")) + assert.Error(t, err) +} + +func TestTooManyPositional(t *testing.T) { + var args struct { + Input string `arg:"positional"` + Output string `arg:"positional"` + } + err := ParseFrom(&args, split("foo bar baz")) + assert.Error(t, err) +} + +func TestMultiple(t *testing.T) { + var args struct { + Foo []int + Bar []string + } + err := ParseFrom(&args, split("--foo 1 2 3 --bar x y z")) + require.NoError(t, err) + assert.Equal(t, []int{1, 2, 3}, args.Foo) + assert.Equal(t, []string{"x", "y", "z"}, args.Bar) +} |
