39 lines
886 B
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)
|
|
}
|
|
})
|
|
}
|
|
}
|