138 lines
1.9 KiB
Go
138 lines
1.9 KiB
Go
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: 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())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSets(t *testing.T) {
|
|
cases := []struct {
|
|
t Type
|
|
v interface{}
|
|
ok bool
|
|
}{
|
|
{
|
|
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)
|
|
}
|
|
}
|
|
}
|