Files
pttodo/pttodo/ts_test.go
2021-12-31 22:59:13 -05:00

69 lines
1.3 KiB
Go

package pttodo
import (
"encoding/json"
"strings"
"testing"
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.HasSuffix(strings.TrimSpace(s), ` 1969`) {
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(1234567890)
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.Fatalf("want: %v, got: %v", ts, 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)
}
}