forked from luno/luno-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
time_test.go
90 lines (81 loc) · 1.55 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package luno_test
import (
"testing"
"time"
luno "github.com/luno/luno-go"
)
func TestTimeUnmarshalJSON(t *testing.T) {
type testCase struct {
in []byte
err bool
exp luno.Time
}
testCases := []testCase{
testCase{
err: true,
},
testCase{
in: []byte{},
err: true,
},
testCase{
in: []byte("abc"),
err: true,
},
testCase{
in: []byte("123456"),
exp: luno.Time(time.Unix(0, 123456e6)),
},
testCase{
in: []byte("-123456"),
exp: luno.Time(time.Unix(0, -123456e6)),
},
}
var act luno.Time
for _, test := range testCases {
err := (&act).UnmarshalJSON(test.in)
if err != nil {
if !test.err {
t.Errorf("Expected unmarshalling %q to fail", string(test.in))
}
continue
}
if act != test.exp {
t.Errorf("Expected %q to unmarshal as %v, got %v",
string(test.in), test.exp, act)
}
}
}
func TestTimeMarshalJSON(t *testing.T) {
type testCase struct {
in luno.Time
exp string
}
now := time.Now()
testCases := []testCase{
testCase{
in: luno.Time{},
exp: time.Time{}.String(),
},
testCase{
in: luno.Time(now),
exp: now.String(),
},
testCase{
in: luno.Time(time.Date(2006, 1, 2, 3, 4, 5, 999, time.UTC)),
exp: time.Date(2006, 1, 2, 3, 4, 5, 999, time.UTC).String(),
},
}
for _, test := range testCases {
b, err := test.in.MarshalJSON()
if err != nil {
t.Errorf("Expected marshalling %v to succeed", test.in)
continue
}
act := string(b)
if act != test.exp {
t.Errorf("Expected %v to marshal as %q, got %q",
test.in, test.exp, act)
}
}
}