OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / tendermint / go-wire / time_test.go
1 package wire
2
3 import (
4         "fmt"
5         "testing"
6         "time"
7
8         "github.com/stretchr/testify/assert"
9 )
10
11 type Input struct {
12         Date time.Time `json:"date"`
13 }
14
15 func TestJSONTimeParse(t *testing.T) {
16         cases := []struct {
17                 input    string
18                 expected time.Time
19                 encoded  string
20         }{
21                 {
22                         "2017-03-31T16:45:15Z",
23                         time.Date(2017, 3, 31, 16, 45, 15, 0, time.UTC),
24                         "2017-03-31T16:45:15.000Z",
25                 },
26                 {
27                         "2017-03-31T16:45:15.972Z",
28                         time.Date(2017, 3, 31, 16, 45, 15, 972000000, time.UTC),
29                         "2017-03-31T16:45:15.972Z",
30                 },
31                 {
32                         "2017-03-31T16:45:15.972167Z",
33                         time.Date(2017, 3, 31, 16, 45, 15, 972167000, time.UTC),
34                         "2017-03-31T16:45:15.972Z",
35                 },
36         }
37
38         for _, tc := range cases {
39                 var err error
40                 var parsed Input
41                 data := []byte(fmt.Sprintf(`{"date":"%s"}`, tc.input))
42                 ReadJSONPtr(&parsed, data, &err)
43                 if assert.Nil(t, err, "%s: %+v", tc.input, err) {
44                         assert.Equal(t, tc.expected, parsed.Date)
45                         out := JSONBytes(parsed)
46                         assert.Equal(t, fmt.Sprintf(`{"date":"%s"}`, tc.encoded), string(out))
47                 }
48         }
49 }