summaryrefslogtreecommitdiff
path: root/compflag/compflag_test.go
diff options
context:
space:
mode:
authorEyal Posener <[email protected]>2019-11-14 06:51:44 +0200
committerEyal Posener <[email protected]>2019-11-18 01:05:47 +0200
commit8724aaf18312e54750540a9578e00d61b1c545d8 (patch)
treed3e736b4fb279975bbcc017ae1bad53e454c5773 /compflag/compflag_test.go
parent05b68ffc813dd10c420993cb1cf927b346c057b8 (diff)
V2
Diffstat (limited to 'compflag/compflag_test.go')
-rw-r--r--compflag/compflag_test.go105
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"})
+ })
+}