|
|
|
|
@ -67,24 +67,37 @@ func TestGetString(t *testing.T) { |
|
|
|
|
assert.Equal(t, "1562723913000", s64_1) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
location, _ = time.LoadLocation("America/New_York") |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func TestConvertDateLayout(t *testing.T) { |
|
|
|
|
t.Parallel() |
|
|
|
|
|
|
|
|
|
tests := map[string]struct { |
|
|
|
|
layout string |
|
|
|
|
location *time.Location |
|
|
|
|
timestamp string |
|
|
|
|
expected time.Time |
|
|
|
|
}{ |
|
|
|
|
"custom layout with year": { |
|
|
|
|
"2006 Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"2019 Jul 15 01:02:03", |
|
|
|
|
time.Date(2019, 7, 15, 1, 2, 3, 0, time.UTC), |
|
|
|
|
}, |
|
|
|
|
"custom layout without year": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"Jul 15 01:02:03", |
|
|
|
|
time.Date(time.Now().Year(), 7, 15, 1, 2, 3, 0, time.UTC), |
|
|
|
|
}, |
|
|
|
|
"custom layout with year and location": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
location, |
|
|
|
|
"Jul 15 01:02:03", |
|
|
|
|
time.Date(time.Now().Year(), 7, 15, 1, 2, 3, 0, location), |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for testName, testData := range tests { |
|
|
|
|
@ -93,7 +106,7 @@ func TestConvertDateLayout(t *testing.T) { |
|
|
|
|
t.Run(testName, func(t *testing.T) { |
|
|
|
|
t.Parallel() |
|
|
|
|
|
|
|
|
|
parser := convertDateLayout(testData.layout) |
|
|
|
|
parser := convertDateLayout(testData.layout, testData.location) |
|
|
|
|
parsed, err := parser(testData.timestamp) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Errorf("convertDateLayout() parser returned an unexpected error = %v", err) |
|
|
|
|
@ -110,6 +123,7 @@ func TestParseTimestampWithoutYear(t *testing.T) { |
|
|
|
|
|
|
|
|
|
tests := map[string]struct { |
|
|
|
|
layout string |
|
|
|
|
location *time.Location |
|
|
|
|
timestamp string |
|
|
|
|
now time.Time |
|
|
|
|
expected time.Time |
|
|
|
|
@ -117,13 +131,31 @@ func TestParseTimestampWithoutYear(t *testing.T) { |
|
|
|
|
}{ |
|
|
|
|
"parse timestamp within current year": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"Jul 15 01:02:03", |
|
|
|
|
time.Date(2019, 7, 14, 0, 0, 0, 0, time.UTC), |
|
|
|
|
time.Date(2019, 7, 15, 1, 2, 3, 0, time.UTC), |
|
|
|
|
nil, |
|
|
|
|
}, |
|
|
|
|
"parse timestamp with location DST": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
location, |
|
|
|
|
"Jul 15 01:02:03", |
|
|
|
|
time.Date(2019, 7, 14, 0, 0, 0, 0, time.UTC), |
|
|
|
|
time.Date(2019, 7, 15, 1, 2, 3, 0, location), |
|
|
|
|
nil, |
|
|
|
|
}, |
|
|
|
|
"parse timestamp with location non DST": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
location, |
|
|
|
|
"Jan 15 01:02:03", |
|
|
|
|
time.Date(2019, 7, 14, 0, 0, 0, 0, time.UTC), |
|
|
|
|
time.Date(2019, 1, 15, 1, 2, 3, 0, location), |
|
|
|
|
nil, |
|
|
|
|
}, |
|
|
|
|
"parse timestamp on 31th Dec and today is 1st Jan": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"Dec 31 23:59:59", |
|
|
|
|
time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC), |
|
|
|
|
time.Date(2018, 12, 31, 23, 59, 59, 0, time.UTC), |
|
|
|
|
@ -131,6 +163,7 @@ func TestParseTimestampWithoutYear(t *testing.T) { |
|
|
|
|
}, |
|
|
|
|
"parse timestamp on 1st Jan and today is 31st Dec": { |
|
|
|
|
"Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"Jan 01 01:02:03", |
|
|
|
|
time.Date(2018, 12, 31, 23, 59, 59, 0, time.UTC), |
|
|
|
|
time.Date(2019, 1, 1, 1, 2, 3, 0, time.UTC), |
|
|
|
|
@ -138,6 +171,7 @@ func TestParseTimestampWithoutYear(t *testing.T) { |
|
|
|
|
}, |
|
|
|
|
"error if the input layout actually includes the year component": { |
|
|
|
|
"2006 Jan 02 15:04:05", |
|
|
|
|
nil, |
|
|
|
|
"2019 Jan 01 01:02:03", |
|
|
|
|
time.Date(2019, 1, 1, 1, 2, 3, 0, time.UTC), |
|
|
|
|
time.Date(2019, 1, 1, 1, 2, 3, 0, time.UTC), |
|
|
|
|
@ -151,7 +185,7 @@ func TestParseTimestampWithoutYear(t *testing.T) { |
|
|
|
|
t.Run(testName, func(t *testing.T) { |
|
|
|
|
t.Parallel() |
|
|
|
|
|
|
|
|
|
parsed, err := parseTimestampWithoutYear(testData.layout, testData.timestamp, testData.now) |
|
|
|
|
parsed, err := parseTimestampWithoutYear(testData.layout, testData.location, testData.timestamp, testData.now) |
|
|
|
|
if ((err != nil) != (testData.err != nil)) || (err != nil && testData.err != nil && err.Error() != testData.err.Error()) { |
|
|
|
|
t.Errorf("parseTimestampWithoutYear() expected error = %v, actual error = %v", testData.err, err) |
|
|
|
|
return |
|
|
|
|
|