diff options
| author | Eyal Posener <[email protected]> | 2019-11-27 21:33:55 +0200 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2019-11-27 21:33:55 +0200 |
| commit | 85f1fe4e1db7dcf16589bba19ba7807b60740d45 (patch) | |
| tree | 12583ca2ebd1d9fa67489bb2eabea5497e27e49b /compflag/compflag_test.go | |
| parent | 8a431c416eef27c58cc8309a305418ee3e9a7880 (diff) | |
Add duration flag
Diffstat (limited to 'compflag/compflag_test.go')
| -rw-r--r-- | compflag/compflag_test.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/compflag/compflag_test.go b/compflag/compflag_test.go index 73dc2c1..9d062e2 100644 --- a/compflag/compflag_test.go +++ b/compflag/compflag_test.go @@ -3,6 +3,7 @@ package compflag import ( "flag" "testing" + "time" "github.com/posener/complete/v2" "github.com/posener/complete/v2/predict" @@ -104,3 +105,47 @@ func TestInt(t *testing.T) { complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1"}) }) } + +func TestDuration(t *testing.T) { + t.Parallel() + + t.Run("options invalid not checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.Duration("a", 0, "", predict.OptValues("1s", "1m")) + err := cmd.Parse([]string{"-a", "1h"}) + assert.NoError(t, err) + assert.Equal(t, time.Hour, *value) + }) + + t.Run("options valid checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"), predict.OptCheck()) + err := cmd.Parse([]string{"-a", "1m"}) + assert.NoError(t, err) + assert.Equal(t, time.Minute, *value) + }) + + t.Run("options invalid checked", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"), predict.OptCheck()) + err := cmd.Parse([]string{"-a", "1h"}) + assert.Error(t, err) + }) + + t.Run("options invalid duration value", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Duration("a", 0, "", predict.OptValues("1h", "1m", "1"), predict.OptCheck()) + err := cmd.Parse([]string{"-a", "1"}) + assert.Error(t, err) + }) + + t.Run("complete", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Duration("a", 0, "", predict.OptValues("1s", "1m")) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"1s", "1m"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=", []string{"1s", "1m"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a 1", []string{"1s", "1m"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1s", "1m"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1m", []string{"1m"}) + }) +} |
