time_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package jsontype
  2. import (
  3. "strconv"
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestMilliTime_GetBSON(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. tm time.Time
  12. }{
  13. {
  14. name: "now",
  15. tm: time.Now(),
  16. },
  17. {
  18. name: "future",
  19. tm: time.Now().Add(time.Hour),
  20. },
  21. }
  22. for _, test := range tests {
  23. t.Run(test.name, func(t *testing.T) {
  24. got, err := MilliTime{test.tm}.GetBSON()
  25. assert.Nil(t, err)
  26. assert.Equal(t, test.tm, got)
  27. })
  28. }
  29. }
  30. func TestMilliTime_MarshalJSON(t *testing.T) {
  31. tests := []struct {
  32. name string
  33. tm time.Time
  34. }{
  35. {
  36. name: "now",
  37. tm: time.Now(),
  38. },
  39. {
  40. name: "future",
  41. tm: time.Now().Add(time.Hour),
  42. },
  43. }
  44. for _, test := range tests {
  45. t.Run(test.name, func(t *testing.T) {
  46. b, err := MilliTime{test.tm}.MarshalJSON()
  47. assert.Nil(t, err)
  48. assert.Equal(t, strconv.FormatInt(test.tm.UnixNano()/1e6, 10), string(b))
  49. })
  50. }
  51. }
  52. func TestMilliTime_Milli(t *testing.T) {
  53. tests := []struct {
  54. name string
  55. tm time.Time
  56. }{
  57. {
  58. name: "now",
  59. tm: time.Now(),
  60. },
  61. {
  62. name: "future",
  63. tm: time.Now().Add(time.Hour),
  64. },
  65. }
  66. for _, test := range tests {
  67. t.Run(test.name, func(t *testing.T) {
  68. n := MilliTime{test.tm}.Milli()
  69. assert.Equal(t, test.tm.UnixNano()/1e6, n)
  70. })
  71. }
  72. }
  73. func TestMilliTime_UnmarshalJSON(t *testing.T) {
  74. tests := []struct {
  75. name string
  76. tm time.Time
  77. }{
  78. {
  79. name: "now",
  80. tm: time.Now(),
  81. },
  82. {
  83. name: "future",
  84. tm: time.Now().Add(time.Hour),
  85. },
  86. }
  87. for _, test := range tests {
  88. t.Run(test.name, func(t *testing.T) {
  89. var mt MilliTime
  90. s := strconv.FormatInt(test.tm.UnixNano()/1e6, 10)
  91. err := mt.UnmarshalJSON([]byte(s))
  92. assert.Nil(t, err)
  93. s1, err := mt.MarshalJSON()
  94. assert.Nil(t, err)
  95. assert.Equal(t, s, string(s1))
  96. })
  97. }
  98. }