201 lines
2.7 KiB
Go
Executable File
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)
|
|
}
|
|
}
|
|
}
|