diff options
| author | Alex Flint <[email protected]> | 2015-10-31 17:05:14 -0700 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2015-10-31 17:05:14 -0700 |
| commit | 8397a40f4cafd39c553df848854e022d33149fa5 (patch) | |
| tree | 1fa29ba484cac0114c072ed8da44e785c2c901d6 /parse_test.go | |
| parent | 408290f7c2a968a0de255813e125a9ebb0a9dda6 (diff) | |
positional arguments working
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) +} |
