From 8724aaf18312e54750540a9578e00d61b1c545d8 Mon Sep 17 00:00:00 2001 From: Eyal Posener Date: Thu, 14 Nov 2019 06:51:44 +0200 Subject: V2 --- compflag/compflag_test.go | 105 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 compflag/compflag_test.go (limited to 'compflag/compflag_test.go') 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"}) + }) +} -- cgit v1.2.3