61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package args
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewArgSet(t *testing.T) {
|
|
NewArgSet()
|
|
}
|
|
|
|
func TestAppend(t *testing.T) {
|
|
as := NewArgSet()
|
|
as.Append(INT, "key", "help", nil)
|
|
if len(as.args) != 1 || *as.args[0] != *NewArg(INT, "key", "help", nil) {
|
|
t.Errorf("argset.Append failed: got %v, want %v", *as.args[0], *NewArg(INT, "key", "help", nil))
|
|
}
|
|
}
|
|
|
|
func TestParse(t *testing.T) {
|
|
osArgs := append([]string{}, os.Args[:]...)
|
|
defer func() {
|
|
os.Args = osArgs
|
|
}()
|
|
os.Args = []string{"nothing", "-testkeyFlag", "5"}
|
|
os.Setenv("testkeyEnv", "9")
|
|
as := NewArgSet()
|
|
as.Append(INT, "testkeyFlag", "help", 1)
|
|
as.Append(INT, "testkeyEnv", "help", 2)
|
|
as.Append(INT, "testkeyDefault", "help", 3)
|
|
if err := as.Parse(); err != nil {
|
|
t.Fatalf("cannot parse legal: %v", err)
|
|
} else if arg := as.Get("testkeyFlag"); arg == nil || arg.Value != 5 {
|
|
t.Errorf("cannot set from flag: got %v", arg)
|
|
} else if arg := as.Get("testkeyEnv"); arg == nil || arg.Value != 9 {
|
|
t.Errorf("cannot set from env: got %v", arg)
|
|
} else if arg := as.Get("testkeyDefault"); arg == nil || arg.Value != 3 {
|
|
t.Errorf("cannot set from default: got %v", arg)
|
|
}
|
|
|
|
os.Args = []string{"nothing", "-testkey5", "bad"}
|
|
as = NewArgSet()
|
|
as.Append(INT, "testkey4", "help", "4")
|
|
if err := as.Parse(); err == nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestGet(t *testing.T) {
|
|
as := NewArgSet()
|
|
as.Append(INT, "testkey1", "help", 1)
|
|
as.Append(INT, "testkey2", "help", 2)
|
|
as.Append(INT, "testkey3", "help", 3)
|
|
if err := as.Parse(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if as.Get("testkey1") == nil {
|
|
t.Errorf("cannot get parsed at %q", "testkey1")
|
|
}
|
|
}
|