summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go')
-rw-r--r--dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go159
1 files changed, 159 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go b/dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go
new file mode 100644
index 0000000..ef131dc
--- /dev/null
+++ b/dependencies/pkg/mod/github.com/jessevdk/go-flags@v1.5.0/convert_test.go
@@ -0,0 +1,159 @@
+package flags
+
+import (
+ "testing"
+ "time"
+)
+
+func expectConvert(t *testing.T, o *Option, expected string) {
+ s, err := convertToString(o.value, o.tag)
+
+ if err != nil {
+ t.Errorf("Unexpected error: %v", err)
+ return
+ }
+
+ assertString(t, s, expected)
+}
+
+func TestConvertToString(t *testing.T) {
+ d, _ := time.ParseDuration("1h2m4s")
+
+ var opts = struct {
+ String string `long:"string"`
+
+ Int int `long:"int"`
+ Int8 int8 `long:"int8"`
+ Int16 int16 `long:"int16"`
+ Int32 int32 `long:"int32"`
+ Int64 int64 `long:"int64"`
+
+ Uint uint `long:"uint"`
+ Uint8 uint8 `long:"uint8"`
+ Uint16 uint16 `long:"uint16"`
+ Uint32 uint32 `long:"uint32"`
+ Uint64 uint64 `long:"uint64"`
+
+ Float32 float32 `long:"float32"`
+ Float64 float64 `long:"float64"`
+
+ Duration time.Duration `long:"duration"`
+
+ Bool bool `long:"bool"`
+
+ IntSlice []int `long:"int-slice"`
+ IntFloatMap map[int]float64 `long:"int-float-map"`
+
+ PtrBool *bool `long:"ptr-bool"`
+ Interface interface{} `long:"interface"`
+
+ Int32Base int32 `long:"int32-base" base:"16"`
+ Uint32Base uint32 `long:"uint32-base" base:"16"`
+ }{
+ "string",
+
+ -2,
+ -1,
+ 0,
+ 1,
+ 2,
+
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+
+ 1.2,
+ -3.4,
+
+ d,
+ true,
+
+ []int{-3, 4, -2},
+ map[int]float64{-2: 4.5},
+
+ new(bool),
+ float32(5.2),
+
+ -5823,
+ 4232,
+ }
+
+ p := NewNamedParser("test", Default)
+ grp, _ := p.AddGroup("test group", "", &opts)
+
+ expects := []string{
+ "string",
+ "-2",
+ "-1",
+ "0",
+ "1",
+ "2",
+
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+
+ "1.2",
+ "-3.4",
+
+ "1h2m4s",
+ "true",
+
+ "[-3, 4, -2]",
+ "{-2:4.5}",
+
+ "false",
+ "5.2",
+
+ "-16bf",
+ "1088",
+ }
+
+ for i, v := range grp.Options() {
+ expectConvert(t, v, expects[i])
+ }
+}
+
+func TestConvertToStringInvalidIntBase(t *testing.T) {
+ var opts = struct {
+ Int int `long:"int" base:"no"`
+ }{
+ 2,
+ }
+
+ p := NewNamedParser("test", Default)
+ grp, _ := p.AddGroup("test group", "", &opts)
+ o := grp.Options()[0]
+
+ _, err := convertToString(o.value, o.tag)
+
+ if err != nil {
+ err = newErrorf(ErrMarshal, "%v", err)
+ }
+
+ assertError(t, err, ErrMarshal, "strconv.ParseInt: parsing \"no\": invalid syntax")
+}
+
+func TestConvertToStringInvalidUintBase(t *testing.T) {
+ var opts = struct {
+ Uint uint `long:"uint" base:"no"`
+ }{
+ 2,
+ }
+
+ p := NewNamedParser("test", Default)
+ grp, _ := p.AddGroup("test group", "", &opts)
+ o := grp.Options()[0]
+
+ _, err := convertToString(o.value, o.tag)
+
+ if err != nil {
+ err = newErrorf(ErrMarshal, "%v", err)
+ }
+
+ assertError(t, err, ErrMarshal, "strconv.ParseInt: parsing \"no\": invalid syntax")
+}