func TestTextMarshalling(t *testing.T) { var d date.Date cases := []struct { value date.Date want string }{ {date.New(-11111, time.February, 3), "-11111-02-03"}, {date.New(-1, time.December, 31), "-0001-12-31"}, {date.New(0, time.January, 1), "0000-01-01"}, {date.New(1, time.January, 1), "0001-01-01"}, {date.New(1970, time.January, 1), "1970-01-01"}, {date.New(2012, time.June, 25), "2012-06-25"}, {date.New(12345, time.June, 7), "+12345-06-07"}, } for _, c := range cases { bytes, err := c.value.MarshalText() if err != nil { t.Errorf("Text(%v) marshal error %v", c, err) } else if string(bytes) != c.want { t.Errorf("Text(%v) == %v, want %v", c.value, string(bytes), c.want) } else { err = d.UnmarshalText(bytes) if err != nil { t.Errorf("Text(%v) unmarshal error %v", c.value, err) } } } }
func TestInvalidText(t *testing.T) { cases := []struct { value string want string }{ {`not-a-date`, `Date.ParseISO: cannot parse not-a-date`}, {`215-08-15`, `Date.ParseISO: cannot parse 215-08-15`}, } for _, c := range cases { var d date.Date err := d.UnmarshalText([]byte(c.value)) if err == nil || err.Error() != c.want { t.Errorf("InvalidText(%v) == %v, want %v", c.value, err, c.want) } } }