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) } }