-
Notifications
You must be signed in to change notification settings - Fork 0
/
time_test.go
66 lines (53 loc) · 1.78 KB
/
time_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package gotils_test
import (
"log"
"testing"
"github.com/korovkin/gotils"
. "github.com/onsi/gomega"
)
type TestStruct struct {
TSStart gotils.Time `json:"ts_start_sec,omitempty"`
TSEnd gotils.Time `json:"ts_end_sec,omitempty"`
}
func init() {
log.SetFlags(log.Ltime | log.Lshortfile | log.Lmicroseconds | log.Ldate)
}
func TestTime(t *testing.T) {
RegisterTestingT(t)
t.Run("zero_time", func(_ *testing.T) {
// 2022-12-29 23:40:50 +0000 UTC
// 2022-12-29 15:40:50 -0800 PST
// var ts gotils.Time
// log.Println("=> ts: zero:", ts)
// log.Println("=> ts: zero: json:", gotils.ToJSONString(ts))
response := &TestStruct{}
responseMap := map[string]interface{}{}
gotils.FromJSONString(gotils.ToJSONString(response), &responseMap)
Expect(responseMap["ts_start_sec"].(float64)).To(BeEquivalentTo(0))
Expect(responseMap["ts_end_sec"].(float64)).To(BeEquivalentTo(0))
})
t.Run("time", func(_ *testing.T) {
// 2022-12-29 23:40:50 +0000 UTC
// 2022-12-29 15:40:50 -0800 PST
ts := gotils.FromUnix(1672357250)
Expect(ts.UTC().Hour()).To(BeEquivalentTo(23))
Expect(ts.UTC().Minute()).To(BeEquivalentTo(40))
Expect(ts.UTC().Second()).To(BeEquivalentTo(50))
// serialize to JSON and back
{
response := &TestStruct{
TSStart: ts,
TSEnd: ts,
}
responseMap := map[string]interface{}{}
gotils.FromJSONString(gotils.ToJSONString(response), &responseMap)
// the value is in UNIX time:
Expect(responseMap["ts_start_sec"].(float64)).To(BeEquivalentTo(1672357250))
Expect(responseMap["ts_end_sec"].(float64)).To(BeEquivalentTo(1672357250))
// parse it:
responseParsed := &TestStruct{}
gotils.FromJSONString(gotils.ToJSONString(response), responseParsed)
// log.Println("=> responseParsed: ", gotils.ToJSONString(responseParsed))
}
})
}