70 lines
1.3 KiB
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)
|
|
}
|
|
}
|