1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package timeutils
- import (
- "fmt"
- "testing"
- "time"
- )
- func TestGetTimestamp(t *testing.T) {
- now := time.Now()
- cases := []struct{ in, expected string }{
- {"0", "-62167305600"}, // 0 gets parsed year 0
- // Partial RFC3339 strings get parsed with second precision
- {"2006-01-02T15:04:05.999999999+07:00", "1136189045"},
- {"2006-01-02T15:04:05.999999999Z", "1136214245"},
- {"2006-01-02T15:04:05.999999999", "1136214245"},
- {"2006-01-02T15:04:05", "1136214245"},
- {"2006-01-02T15:04", "1136214240"},
- {"2006-01-02T15", "1136214000"},
- {"2006-01-02T", "1136160000"},
- {"2006-01-02", "1136160000"},
- {"2006", "1136073600"},
- {"2015-05-13T20:39:09Z", "1431549549"},
- // unix timestamps returned as is
- {"1136073600", "1136073600"},
- // Durations
- {"1m", fmt.Sprintf("%d", now.Add(-1*time.Minute).Unix())},
- {"1.5h", fmt.Sprintf("%d", now.Add(-90*time.Minute).Unix())},
- {"1h30m", fmt.Sprintf("%d", now.Add(-90*time.Minute).Unix())},
- // String fallback
- {"invalid", "invalid"},
- }
- for _, c := range cases {
- o := GetTimestamp(c.in, now)
- if o != c.expected {
- t.Fatalf("wrong value for '%s'. expected:'%s' got:'%s'", c.in, c.expected, o)
- }
- }
- }
|