summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2015-10-31 17:05:14 -0700
committerAlex Flint <[email protected]>2015-10-31 17:05:14 -0700
commit8397a40f4cafd39c553df848854e022d33149fa5 (patch)
tree1fa29ba484cac0114c072ed8da44e785c2c901d6 /parse_test.go
parent408290f7c2a968a0de255813e125a9ebb0a9dda6 (diff)
positional arguments working
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go44
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)
+}