package extra

import (
	"github.com/json-iterator/go"
	"github.com/stretchr/testify/require"
	"testing"
	"time"
)

func Test_time_as_int64(t *testing.T) {
	should := require.New(t)
	RegisterTimeAsInt64Codec(time.Nanosecond)
	output, err := jsoniter.Marshal(time.Unix(1497952257, 1002))
	should.Nil(err)
	should.Equal("1497952257000001002", string(output))
	var val time.Time
	should.Nil(jsoniter.Unmarshal(output, &val))
	should.Equal(int64(1497952257000001002), val.UnixNano())
}

func Test_time_as_int64_keep_microsecond(t *testing.T) {
	t.Skip("conflict")
	should := require.New(t)
	RegisterTimeAsInt64Codec(time.Microsecond)
	output, err := jsoniter.Marshal(time.Unix(1, 1002))
	should.Nil(err)
	should.Equal("1000001", string(output))
	var val time.Time
	should.Nil(jsoniter.Unmarshal(output, &val))
	should.Equal(int64(1000001000), val.UnixNano())
}