args/arg_test.go

201 lines
2.7 KiB
Go
Executable File

package args
import (
"testing"
"time"
)
func TestNewArg(t *testing.T) {
NewArg(INT, "key", "help", 5)
}
func TestGets(t *testing.T) {
cases := []struct {
t Type
v interface{}
ok bool
}{
{
t: FLOAT,
v: "a",
ok: false,
},
{
t: FLOAT,
v: float32(1.0),
ok: true,
},
{
t: TIME,
v: "2019",
ok: false,
},
{
t: TIME,
v: time.Date(2019, 03, 22, 0, 0, 0, 0, time.UTC),
ok: true,
},
{
t: STRING,
v: 5,
ok: false,
},
{
t: DURATION,
v: 5,
ok: false,
},
{
t: BOOL,
v: 5,
ok: false,
},
{
t: INT,
v: "5",
ok: false,
},
{
t: STRING,
v: "5",
ok: true,
},
{
t: DURATION,
v: time.Duration(5),
ok: true,
},
{
t: BOOL,
v: true,
ok: true,
},
{
t: INT,
v: 5,
ok: true,
},
}
for _, c := range cases {
a := NewArg(c.t, "key", "help", c.v)
switch c.t {
case INT:
if (a.GetInt() == c.v) != c.ok {
t.Errorf("failed to get int: want %v, got %v", c.v, a.GetInt())
}
case STRING:
if (a.GetString() == c.v) != c.ok {
t.Errorf("failed to get string: want %v, got %v", c.v, a.GetString())
}
case BOOL:
if (a.GetBool() == c.v) != c.ok {
t.Errorf("failed to get bool: want %v, got %v", c.v, a.GetBool())
}
case DURATION:
if (a.GetDuration() == c.v) != c.ok {
t.Errorf("failed to get duration: want %v, got %v", c.v, a.GetDuration())
}
case TIME:
if (a.GetTime() == c.v) != c.ok {
t.Errorf("failed to get time: want %v, got %v", c.v, a.GetTime())
}
case FLOAT:
if (a.GetFloat() == c.v) != c.ok {
t.Errorf("failed to get float: want %v, got %v", c.v, a.GetFloat())
}
}
}
}
func TestSets(t *testing.T) {
cases := []struct {
t Type
v interface{}
ok bool
}{
{
t: FLOAT,
v: "a",
ok: false,
},
{
t: FLOAT,
v: "1.0",
ok: true,
},
{
t: FLOAT,
v: 1.0,
ok: true,
},
{
t: FLOAT,
v: 1,
ok: true,
},
{
t: FLOAT,
v: "1",
ok: true,
},
{
t: TIME,
v: "2019",
ok: false,
},
{
t: TIME,
v: "2019-03-22",
ok: true,
},
{
t: STRING,
v: 5,
ok: false,
},
{
t: DURATION,
v: 5,
ok: false,
},
{
t: BOOL,
v: 5,
ok: false,
},
{
t: INT,
v: "a",
ok: false,
},
{
t: STRING,
v: "5",
ok: true,
},
{
t: DURATION,
v: time.Duration(5),
ok: true,
},
{
t: BOOL,
v: true,
ok: true,
},
{
t: INT,
v: 5,
ok: true,
},
}
for i, c := range cases {
a := NewArg(c.t, "key", "help", nil)
if err := a.Set(c.v); (err == nil) != c.ok {
t.Errorf("[%d] failed to set %v: want ok=%v, got %v", i, c.t, c.ok, err)
}
}
}