From ed2b19f2bbf787a888bf02eb707a17f4878f4109 Mon Sep 17 00:00:00 2001 From: Alex Flint Date: Sat, 23 Jan 2016 18:28:35 -0800 Subject: add support for time.Duration fields --- parse_test.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'parse_test.go') diff --git a/parse_test.go b/parse_test.go index f3e7350..5e9baf2 100644 --- a/parse_test.go +++ b/parse_test.go @@ -4,6 +4,7 @@ import ( "os" "strings" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -17,7 +18,7 @@ func parse(cmdline string, dest interface{}) error { return p.Parse(strings.Split(cmdline, " ")) } -func TestStringSingle(t *testing.T) { +func TestString(t *testing.T) { var args struct { Foo string } @@ -26,6 +27,42 @@ func TestStringSingle(t *testing.T) { assert.Equal(t, "bar", args.Foo) } +func TestInt(t *testing.T) { + var args struct { + Foo int + } + err := parse("--foo 7", &args) + require.NoError(t, err) + assert.EqualValues(t, 7, args.Foo) +} + +func TestUint(t *testing.T) { + var args struct { + Foo uint + } + err := parse("--foo 7", &args) + require.NoError(t, err) + assert.EqualValues(t, 7, args.Foo) +} + +func TestFloat(t *testing.T) { + var args struct { + Foo float32 + } + err := parse("--foo 3.4", &args) + require.NoError(t, err) + assert.EqualValues(t, 3.4, args.Foo) +} + +func TestDuration(t *testing.T) { + var args struct { + Foo time.Duration + } + err := parse("--foo 3ms", &args) + require.NoError(t, err) + assert.Equal(t, 3*time.Millisecond, args.Foo) +} + func TestMixed(t *testing.T) { var args struct { Foo string `arg:"-f"` -- cgit v1.2.3 From 64a4bab5506099047596a99d4a9b71de8d69798e Mon Sep 17 00:00:00 2001 From: Alex Flint Date: Sat, 23 Jan 2016 18:35:08 -0800 Subject: add test for invalid durations --- parse_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'parse_test.go') diff --git a/parse_test.go b/parse_test.go index 5e9baf2..c30809d 100644 --- a/parse_test.go +++ b/parse_test.go @@ -63,6 +63,14 @@ func TestDuration(t *testing.T) { assert.Equal(t, 3*time.Millisecond, args.Foo) } +func TestInvalidDuration(t *testing.T) { + var args struct { + Foo time.Duration + } + err := parse("--foo xxx", &args) + require.Error(t, err) +} + func TestMixed(t *testing.T) { var args struct { Foo string `arg:"-f"` -- cgit v1.2.3