kevinschoon-pomo/vendor/github.com/jawher/mow.cli/values_test.go

138 lines
2.3 KiB
Go

package cli
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestBoolParam(t *testing.T) {
var into bool
param := newBoolValue(&into, false)
require.True(t, param.IsBoolFlag())
cases := []struct {
input string
err bool
result bool
string string
}{
{"true", false, true, "true"},
{"false", false, false, "false"},
{"123", true, false, ""},
{"", true, false, ""},
}
for _, cas := range cases {
t.Logf("testing with %q", cas.input)
err := param.Set(cas.input)
if cas.err {
require.Errorf(t, err, "value %q should have returned an error", cas.input)
continue
}
require.Equal(t, cas.result, into)
require.Equal(t, cas.string, param.String())
}
}
func TestStringParam(t *testing.T) {
var into string
param := newStringValue(&into, "")
cases := []struct {
input string
string string
}{
{"a", `"a"`},
{"", `""`},
}
for _, cas := range cases {
t.Logf("testing with %q", cas.input)
err := param.Set(cas.input)
require.NoError(t, err)
require.Equal(t, cas.input, into)
require.Equal(t, cas.string, param.String())
}
}
func TestIntParam(t *testing.T) {
var into int
param := newIntValue(&into, 0)
cases := []struct {
input string
err bool
result int
string string
}{
{"12", false, 12, "12"},
{"0", false, 0, "0"},
{"01", false, 1, "1"},
{"", true, 0, ""},
{"abc", true, 0, ""},
}
for _, cas := range cases {
t.Logf("testing with %q", cas.input)
err := param.Set(cas.input)
if cas.err {
require.Errorf(t, err, "value %q should have returned an error", cas.input)
continue
}
require.Equal(t, cas.result, into)
require.Equal(t, cas.string, param.String())
}
}
func TestStringsParam(t *testing.T) {
into := []string{}
param := newStringsValue(&into, nil)
param.Set("a")
param.Set("b")
require.Equal(t, []string{"a", "b"}, into)
require.Equal(t, `["a", "b"]`, param.String())
param.Clear()
require.Empty(t, into)
}
func TestIntsParam(t *testing.T) {
into := []int{}
param := newIntsValue(&into, nil)
err := param.Set("1")
require.NoError(t, err)
err = param.Set("2")
require.NoError(t, err)
require.Equal(t, []int{1, 2}, into)
require.Equal(t, `[1, 2]`, param.String())
err = param.Set("c")
require.Error(t, err)
require.Equal(t, []int{1, 2}, into)
param.Clear()
require.Empty(t, into)
}