github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/timex/jsontime_test.go (about)

     1  package timex_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  	"fmt"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/bingoohuang/gg/pkg/timex"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestUnmashalMsg(t *testing.T) {
    15  	fmt.Println(time.Now().Format(time.RFC3339))
    16  	p, _ := time.ParseInLocation("2006-01-02 15:04:05.000", "2020-03-18 10:51:54.198", time.Local)
    17  
    18  	j := `{
    19  		"O": "",
    20  		"A": "123",
    21  		"F": 123,
    22  		"B": "2020-03-18 10:51:54.198",
    23  		"C": "2020-03-18 10:51:54,198",
    24  		"E": "2020-03-18T10:51:54,198",
    25  		"d": "2020-03-18T10:51:54.198000Z",
    26  		"G": "XYZ"
    27  	}`
    28  
    29  	var (
    30  		zero time.Time
    31  		msg  Msg
    32  	)
    33  
    34  	err := json.Unmarshal([]byte(j), &msg)
    35  
    36  	assert.True(t, errors.Is(err, timex.ErrUnknownTimeFormat))
    37  
    38  	assert.Equal(t, timex.JSONTime(time.Unix(0, 123*1000000)), msg.A)
    39  	assert.Equal(t, timex.JSONTime(time.Unix(0, 123*1000000)), msg.F)
    40  
    41  	assert.Equal(t, timex.JSONTime(zero), msg.O)
    42  	assert.Equal(t, timex.JSONTime(p), msg.B)
    43  	assert.Equal(t, timex.JSONTime(p), msg.C)
    44  	assert.Equal(t, p, time.Time(msg.D).Local().Add(-8*time.Hour))
    45  	assert.Equal(t, timex.JSONTime(p), msg.E)
    46  	assert.Equal(t, time.Time(msg.D).Format("20060102150405"), "20200318105154")
    47  }
    48  
    49  type Msg struct {
    50  	O timex.JSONTime
    51  	A timex.JSONTime
    52  	B timex.JSONTime
    53  	C timex.JSONTime
    54  	E timex.JSONTime
    55  	F timex.JSONTime
    56  	D timex.JSONTime `json:"d"`
    57  	G timex.JSONTime
    58  }