Skip to content

Commit 6499bf9

Browse files
committed
add decode nil to time.Time support.
1 parent 2cf37f8 commit 6499bf9

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

io/time_decoder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| io/time_decoder.go |
88
| |
9-
| LastModified: Feb 20, 2022 |
9+
| LastModified: May 27, 2022 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -159,7 +159,7 @@ func (dec *Decoder) decodeTime(t reflect.Type, tag byte, p *time.Time) {
159159
return
160160
}
161161
switch tag {
162-
case TagEmpty, TagFalse:
162+
case TagNull, TagEmpty, TagFalse:
163163
*p = time.Unix(0, 0)
164164
case TagTrue:
165165
*p = time.Unix(0, 1)

io/time_decoder_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| |
77
| io/time_decoder_test.go |
88
| |
9-
| LastModified: Jun 05, 2021 |
9+
| LastModified: May 27, 2022 |
1010
| Author: Ma Bingyao <[email protected]> |
1111
| |
1212
\*________________________________________________________*/
@@ -34,12 +34,16 @@ func TestDecodeTime(t *testing.T) {
3434
assert.NoError(t, enc.Encode(t1))
3535
assert.NoError(t, enc.Encode(&t1))
3636
assert.NoError(t, enc.Encode(t1))
37+
assert.NoError(t, enc.Encode(nil))
38+
assert.NoError(t, enc.Encode(nil))
3739

3840
t2 := Time(t1)
3941
assert.NoError(t, enc.Encode(&t2))
4042
assert.NoError(t, enc.Encode(t2))
4143
assert.NoError(t, enc.Encode(&t2))
4244
assert.NoError(t, enc.Encode(t2))
45+
assert.NoError(t, enc.Encode(nil))
46+
assert.NoError(t, enc.Encode(nil))
4347

4448
dec := NewDecoder(([]byte)(sb.String())).Simple(false)
4549
var t3 *time.Time
@@ -54,6 +58,11 @@ func TestDecodeTime(t *testing.T) {
5458
assert.Equal(t, *t3, t1)
5559
dec.Decode(&t4)
5660
assert.Equal(t, t4, t1)
61+
dec.Decode(&t3)
62+
assert.Nil(t, t3)
63+
dec.Decode(&t4)
64+
assert.Equal(t, t4, time.Unix(0, 0))
65+
5766
dec.Decode(&t5)
5867
assert.Equal(t, *t5, t2)
5968
dec.Decode(&t6)
@@ -62,4 +71,8 @@ func TestDecodeTime(t *testing.T) {
6271
assert.Equal(t, *t5, t2)
6372
dec.Decode(&t6)
6473
assert.Equal(t, t6, t2)
74+
dec.Decode(&t5)
75+
assert.Nil(t, t5)
76+
dec.Decode(&t6)
77+
assert.Equal(t, t6, Time(time.Unix(0, 0)))
6578
}

0 commit comments

Comments
 (0)