Anki/duration_test.go

39 lines
886 B
Go

package main
import (
"testing"
"time"
"gopkg.in/yaml.v2"
)
func TestDurationYAML(t *testing.T) {
cases := map[string]time.Duration{
"": 0,
"1s": time.Second,
"1m1s": time.Minute + time.Second,
"1h1s": time.Hour + time.Second,
"1d": 24 * time.Hour,
"1w": 7 * 24 * time.Hour,
"1w2d3h4m5s": 7*24*time.Hour + 2*24*time.Hour + 3*time.Hour + 4*time.Minute + 5*time.Second,
}
for name, wantd := range cases {
want := wantd
t.Run(name, func(t *testing.T) {
var d1, d2 duration
if err := yaml.Unmarshal([]byte(name), &d1); err != nil {
t.Error(err)
} else if time.Duration(d1) != want {
t.Error(d1)
} else if b, err := yaml.Marshal(d1); err != nil {
t.Error(err)
} else if err := yaml.Unmarshal(b, &d2); err != nil {
t.Error(err)
} else if d1 != d2 {
t.Error(d1, d2)
}
})
}
}