1
0
mirror of https://github.com/Luzifer/rconfig.git synced 2024-09-19 00:43:00 +00:00
rconfig/time_test.go
Knut Ahlers f4e07b507a
Add support for time.Time flags
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2018-09-18 00:19:51 +02:00

52 lines
1014 B
Go

package rconfig
import (
"fmt"
"testing"
"time"
)
func TestParseTime(t *testing.T) {
type ts struct {
Test time.Time `flag:"time"`
TestS time.Time `flag:"other-time,o"`
TestDef time.Time `default:"2006-01-02T15:04:05.999999999Z"`
TestDE time.Time `default:"18.09.2018 20:25:31"`
}
var (
err error
args []string
cfg ts
)
for _, tf := range timeParserFormats {
expect := time.Now().Format(tf)
cfg = ts{}
args = []string{
fmt.Sprintf("--time=%s", expect),
"-o", expect,
}
if err = parse(&cfg, args); err != nil {
t.Fatalf("Time format %q did not parse: %s", tf, err)
}
for name, ti := range map[string]time.Time{
"Long flag": cfg.Test,
"Short flag": cfg.TestS,
"Default flag": cfg.TestDef,
"DE flag": cfg.TestDE,
} {
if ti.IsZero() {
t.Errorf("%s did parse to zero with format %q", name, tf)
}
}
if e := cfg.Test.Format(tf); e != expect {
t.Errorf("Parsed time %q did not match expectation %q", e, expect)
}
}
}