pttodo/pttodo/ts_test.go

70 lines
1.3 KiB
Go

package pttodo
import (
"encoding/json"
"strings"
"testing"
"time"
yaml "gopkg.in/yaml.v2"
)
func TestTSMarshalYaml(t *testing.T) {
t.Run("nonzero", func(t *testing.T) {
var ts TS
if b, err := yaml.Marshal(TS(5)); err != nil {
t.Fatal(err)
} else if s := string(b); strings.TrimSpace(s) != `5` {
t.Fatal(s)
} else if err := yaml.Unmarshal(b, &ts); err != nil {
t.Fatal(err)
} else if ts != 5 {
t.Fatal(ts)
}
})
t.Run("zero", func(t *testing.T) {
var ts TS
if b, err := yaml.Marshal(TS(0)); err != nil {
t.Fatal(err)
} else if s := string(b); strings.TrimSpace(s) == `0` {
t.Fatal(s)
} else if err := yaml.Unmarshal(b, &ts); err != nil {
t.Fatal(err)
} else if ts == 0 {
t.Fatal(ts)
}
})
}
func TestJSONTS(t *testing.T) {
ts := TS(time.Now().Unix())
js, err := json.Marshal(ts)
if err != nil {
t.Fatal(err)
}
var ts2 TS
if err := json.Unmarshal(js, &ts2); err != nil {
t.Fatal(err)
}
if ts != ts2 {
t.Fatal(ts2)
}
if err := json.Unmarshal([]byte(`123`), &ts2); err != nil {
t.Fatal(err)
}
if 123 != ts2 {
t.Fatal(ts2)
}
var ts3 TS
if b, err := json.Marshal(TS(0)); err != nil {
t.Fatal(err)
} else if err := json.Unmarshal(b, &ts3); err != nil {
t.Fatal(err)
} else if ts3 == (TS(0)) {
t.Fatal(ts3)
}
}