diff options
| author | Eyal Posener <[email protected]> | 2019-11-14 06:51:44 +0200 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2019-11-18 01:05:47 +0200 |
| commit | 8724aaf18312e54750540a9578e00d61b1c545d8 (patch) | |
| tree | d3e736b4fb279975bbcc017ae1bad53e454c5773 /compflag/compflag_test.go | |
| parent | 05b68ffc813dd10c420993cb1cf927b346c057b8 (diff) | |
V2
Diffstat (limited to 'compflag/compflag_test.go')
| -rw-r--r-- | compflag/compflag_test.go | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/compflag/compflag_test.go b/compflag/compflag_test.go new file mode 100644 index 0000000..1e8dea5 --- /dev/null +++ b/compflag/compflag_test.go @@ -0,0 +1,105 @@ +package compflag + +import ( + "flag" + "testing" + + "github.com/posener/complete" + "github.com/stretchr/testify/assert" +) + +func TestBool(t *testing.T) { + t.Parallel() + + t.Run("complete default off", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Bool("a", false, "") + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"-a", "-h"}) + }) + + t.Run("complete default on", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Bool("a", true, "") + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"false"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=", []string{"false"}) + }) +} + +func TestString(t *testing.T) { + t.Parallel() + + t.Run("options invalid not checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.String("a", "", "", OptValues("1", "2")) + err := cmd.Parse([]string{"-a", "3"}) + assert.NoError(t, err) + assert.Equal(t, "3", *value) + }) + + t.Run("options valid checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.String("a", "", "", OptValues("1", "2"), OptCheck()) + err := cmd.Parse([]string{"-a", "2"}) + assert.NoError(t, err) + assert.Equal(t, "2", *value) + }) + + t.Run("options invalid checked", func(t *testing.T) { + var cmd FlagSet + _ = cmd.String("a", "", "", OptValues("1", "2"), OptCheck()) + err := cmd.Parse([]string{"-a", "3"}) + assert.Error(t, err) + }) + + t.Run("complete", func(t *testing.T) { + var cmd FlagSet + _ = cmd.String("a", "", "", OptValues("1", "2")) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"1", "2"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=", []string{"1", "2"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a 1", []string{"1"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1"}) + }) +} + +func TestInt(t *testing.T) { + t.Parallel() + + t.Run("options invalid not checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.Int("a", 0, "", OptValues("1", "2")) + err := cmd.Parse([]string{"-a", "3"}) + assert.NoError(t, err) + assert.Equal(t, 3, *value) + }) + + t.Run("options valid checked", func(t *testing.T) { + var cmd FlagSet + value := cmd.Int("a", 0, "", OptValues("1", "2"), OptCheck()) + err := cmd.Parse([]string{"-a", "2"}) + assert.NoError(t, err) + assert.Equal(t, 2, *value) + }) + + t.Run("options invalid checked", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Int("a", 0, "", OptValues("1", "2"), OptCheck()) + err := cmd.Parse([]string{"-a", "3"}) + assert.Error(t, err) + }) + + t.Run("options invalid int value", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Int("a", 0, "", OptValues("1", "2", "x"), OptCheck()) + err := cmd.Parse([]string{"-a", "x"}) + assert.Error(t, err) + }) + + t.Run("complete", func(t *testing.T) { + var cmd FlagSet + _ = cmd.Int("a", 0, "", OptValues("1", "2")) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"1", "2"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=", []string{"1", "2"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a 1", []string{"1"}) + complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1"}) + }) +} |
