@@ -8,41 +8,47 @@ import (
88 "fmt"
99 "github.com/stretchr/testify/assert"
1010 "testing"
11+ "time"
1112)
1213
1314func TestDateManager_parseStrictDateOptionalTimeOrEpochMillis (t * testing.T ) {
15+ empty := time.Time {}
1416 tests := []struct {
15- missing any
16- wantUnixTimestamp int64
17- wantParsingSucceeded bool
17+ input any
18+ wantedTimestamp time. Time
19+ wantedParsingSucceeded bool
1820 }{
19- {nil , - 1 , false },
20- {"2024" , 1704067200000 , true },
21- {int64 (123 ), 123 , true },
22- {"4234324223" , 4234324223 , true },
23- {"4234" , 71444937600000 , true },
24- {"42340" , 42340 , true },
25- {"42340.234" , 42340 , true },
26- {"2024/02" , - 1 , false },
27- {"2024-02" , 1706745600000 , true },
28- {"2024-2" , - 1 , false },
29- {"2024-02-02" , 1706832000000 , true },
30- {"2024-02-3" , - 1 , false },
31- {"2024-02-30" , - 1 , false },
32- {"2024-02-25T1" , 1708822800000 , true }, // this fails in Kibana, so we're better
33- {"2024-02-25T13:00:00" , 1708866000000 , true },
34- {"2024-02-25 13:00:00" , - 1 , false },
35- {"2024-02-25T13:11" , 1708866660000 , true },
36- {"2024-02-25T25:00:00" , - 1 , false },
37- {"2024-02-25T13:00:00+05" , 1708848000000 , true },
38- {"2024-02-25T13:00:00+05:00" , 1708848000000 , true },
21+ {nil , empty , false },
22+ {"2024" , time .UnixMilli (1704067200000 ), true },
23+ {int64 (123 ), time .UnixMilli (123 ), true },
24+ {"4234324223" , time .UnixMilli (4234324223 ), true },
25+ {"4234" , time .UnixMilli (71444937600000 ), true },
26+ {"42340" , time .UnixMilli (42340 ), true },
27+ {"42340.234" , time .UnixMilli (42340 ), true },
28+ {"2024/02" , empty , false },
29+ {"2024-02" , time .UnixMilli (1706745600000 ), true },
30+ {"2024-2" , empty , false },
31+ {"2024-02-02" , time .UnixMilli (1706832000000 ), true },
32+ {"2024-02-3" , empty , false },
33+ {"2024-02-30" , empty , false },
34+ {"2024-02-25T1" , time .UnixMilli (1708822800000 ), true }, // this fails in Kibana, so we're better
35+ {"2024-02-25T13:00:00" , time .UnixMilli (1708866000000 ), true },
36+ {"2024-02-25 13:00:00" , empty , false },
37+ {"2024-02-25T13:11" , time .UnixMilli (1708866660000 ), true },
38+ {"2024-02-25T25:00:00" , empty , false },
39+ {"2024-02-25T13:00:00+05" , time .UnixMilli (1708848000000 ), true },
40+ {"2024-02-25T13:00:00+05:00" , time .UnixMilli (1708848000000 ), true },
41+ {"2024-02-25T13:00:00.123" , time .UnixMilli (1708866000123 ), true },
42+ {"2024-02-25T13:00:00.123Z" , time .UnixMilli (1708866000123 ), true },
43+ {"2024-02-25T13:00:00.123456789" , time .Unix (1708866000 , 123456789 ), true },
44+ {"2024-02-25T13:00:00.123456789Z" , time .Unix (1708866000 , 123456789 ), true },
3945 }
4046 for _ , tt := range tests {
41- t .Run (fmt .Sprintf ("%v" , tt .missing ), func (t * testing.T ) {
47+ t .Run (fmt .Sprintf ("%v" , tt .input ), func (t * testing.T ) {
4248 dm := NewDateManager (context .Background ())
43- gotUnixTs , gotParsingSucceeded := dm .parseStrictDateOptionalTimeOrEpochMillis (tt .missing )
44- assert .Equalf (t , tt .wantUnixTimestamp , gotUnixTs , "MissingInDateHistogramToUnixTimestamp(%v)" , tt .missing )
45- assert .Equalf (t , tt .wantParsingSucceeded , gotParsingSucceeded , "MissingInDateHistogramToUnixTimestamp(%v)" , tt .missing )
49+ gotUnixTs , gotParsingSucceeded := dm .parseStrictDateOptionalTimeOrEpochMillis (tt .input )
50+ assert .Truef (t , tt .wantedTimestamp . Equal ( gotUnixTs ) , "MissingInDateHistogramToUnixTimestamp(%v)" , tt .input )
51+ assert .Equalf (t , tt .wantedParsingSucceeded , gotParsingSucceeded , "MissingInDateHistogramToUnixTimestamp(%v)" , tt .input )
4652 })
4753 }
4854}
0 commit comments