calendar_test.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package ut_test
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/go-playground/universal-translator"
  6. _ "github.com/go-playground/universal-translator/resources/locales"
  7. . "gopkg.in/go-playground/assert.v1"
  8. )
  9. // NOTES:
  10. // - Run "go test" to run tests
  11. // - Run "gocov test | gocov report" to report on test converage by file
  12. // - Run "gocov test | gocov annotate -" to report on all code and functions, those ,marked with "MISS" were never called
  13. //
  14. // or
  15. //
  16. // -- may be a good idea to change to output path to somewherelike /tmp
  17. // go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html
  18. //
  19. var dateTimeString = "Jan 2, 2006 at 3:04:05pm"
  20. func TestDateTimeEn(t *testing.T) {
  21. en, err := ut.GetTranslator("en")
  22. Equal(t, err, nil)
  23. datetime, err := time.Parse(dateTimeString, dateTimeString)
  24. Equal(t, err, nil)
  25. // test the public method
  26. dt, err := en.FmtDateFullSafe(datetime)
  27. Equal(t, err, nil)
  28. Equal(t, dt, "Monday, January 2, 2006")
  29. dt = en.FmtDateFull(datetime)
  30. Equal(t, dt, "Monday, January 2, 2006")
  31. dt, err = en.FmtDateLongSafe(datetime)
  32. Equal(t, err, nil)
  33. Equal(t, dt, "January 2, 2006")
  34. dt = en.FmtDateLong(datetime)
  35. Equal(t, dt, "January 2, 2006")
  36. dt, err = en.FmtDateMediumSafe(datetime)
  37. Equal(t, err, nil)
  38. Equal(t, dt, "Jan 2, 2006")
  39. dt = en.FmtDateMedium(datetime)
  40. Equal(t, dt, "Jan 2, 2006")
  41. dt, err = en.FmtDateShortSafe(datetime)
  42. Equal(t, err, nil)
  43. Equal(t, dt, "1/2/06")
  44. dt = en.FmtDateShort(datetime)
  45. Equal(t, dt, "1/2/06")
  46. dt, err = en.FmtTimeFullSafe(datetime)
  47. Equal(t, err, nil)
  48. Equal(t, dt, "3:04:05 PM")
  49. dt = en.FmtTimeFull(datetime)
  50. Equal(t, dt, "3:04:05 PM")
  51. dt, err = en.FmtTimeLongSafe(datetime)
  52. Equal(t, err, nil)
  53. Equal(t, dt, "3:04:05 PM")
  54. dt = en.FmtTimeLong(datetime)
  55. Equal(t, dt, "3:04:05 PM")
  56. dt, err = en.FmtTimeMediumSafe(datetime)
  57. Equal(t, err, nil)
  58. Equal(t, dt, "3:04:05 PM")
  59. dt = en.FmtTimeMedium(datetime)
  60. Equal(t, dt, "3:04:05 PM")
  61. dt, err = en.FmtTimeShortSafe(datetime)
  62. Equal(t, err, nil)
  63. Equal(t, dt, "3:04 PM")
  64. dt = en.FmtTimeShort(datetime)
  65. Equal(t, dt, "3:04 PM")
  66. dt, err = en.FmtDateTimeFullSafe(datetime)
  67. Equal(t, err, nil)
  68. Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
  69. dt = en.FmtDateTimeFull(datetime)
  70. Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
  71. dt, err = en.FmtDateTimeLongSafe(datetime)
  72. Equal(t, err, nil)
  73. Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
  74. dt = en.FmtDateTimeLong(datetime)
  75. Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
  76. dt, err = en.FmtDateTimeMediumSafe(datetime)
  77. Equal(t, err, nil)
  78. Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
  79. dt = en.FmtDateTimeMedium(datetime)
  80. Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
  81. dt, err = en.FmtDateTimeShortSafe(datetime)
  82. Equal(t, err, nil)
  83. Equal(t, dt, "1/2/06, 3:04 PM")
  84. dt = en.FmtDateTimeShort(datetime)
  85. Equal(t, dt, "1/2/06, 3:04 PM")
  86. dt, err = en.FmtDateTimeSafe(datetime, "MMMM d yy")
  87. Equal(t, err, nil)
  88. Equal(t, dt, "January 2 06")
  89. dt = en.FmtDateTime(datetime, "MMMM d yy")
  90. Equal(t, err, nil)
  91. Equal(t, dt, "January 2 06")
  92. dt, err = en.FmtDateTimeSafe(datetime, "not a date pattern")
  93. NotEqual(t, err, nil)
  94. Equal(t, dt, "")
  95. Equal(t, err.Error(), "unknown datetime format unit: n")
  96. }
  97. func TestDateTimeTh(t *testing.T) {
  98. th, err := ut.GetTranslator("th")
  99. Equal(t, err, nil)
  100. datetime, err := time.Parse(dateTimeString, dateTimeString)
  101. Equal(t, err, nil)
  102. bcDateTime := time.Date(-300, 1, 2, 3, 4, 5, 0, time.UTC)
  103. dt, err := th.FmtDateFullSafe(bcDateTime)
  104. Equal(t, err, nil)
  105. Equal(t, dt, "วันเสาร์ที่ 2 มกราคม ปีก่อน ค.ศ. 300")
  106. // test the public method
  107. dt, err = th.FmtDateFullSafe(datetime)
  108. Equal(t, err, nil)
  109. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม ค.ศ. 2006")
  110. dt = th.FmtDateFull(datetime)
  111. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม ค.ศ. 2006")
  112. dt, err = th.FmtDateLongSafe(datetime)
  113. Equal(t, err, nil)
  114. Equal(t, dt, "2 มกราคม ค.ศ. 2006")
  115. dt = th.FmtDateLong(datetime)
  116. Equal(t, dt, "2 มกราคม ค.ศ. 2006")
  117. dt, err = th.FmtDateMediumSafe(datetime)
  118. Equal(t, err, nil)
  119. Equal(t, dt, "2 ม.ค. 2006")
  120. dt = th.FmtDateMedium(datetime)
  121. Equal(t, dt, "2 ม.ค. 2006")
  122. dt, err = th.FmtDateShortSafe(datetime)
  123. Equal(t, err, nil)
  124. Equal(t, dt, "2/1/06")
  125. dt = th.FmtDateShort(datetime)
  126. Equal(t, dt, "2/1/06")
  127. dt, err = th.FmtTimeFullSafe(datetime)
  128. Equal(t, err, nil)
  129. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  130. dt = th.FmtTimeFull(datetime)
  131. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  132. dt, err = th.FmtTimeLongSafe(datetime)
  133. Equal(t, err, nil)
  134. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  135. dt = th.FmtTimeLong(datetime)
  136. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  137. dt, err = th.FmtTimeMediumSafe(datetime)
  138. Equal(t, err, nil)
  139. Equal(t, dt, "15:04:05")
  140. dt = th.FmtTimeMedium(datetime)
  141. Equal(t, dt, "15:04:05")
  142. dt, err = th.FmtTimeShortSafe(datetime)
  143. Equal(t, err, nil)
  144. Equal(t, dt, "15:04")
  145. dt = th.FmtTimeShort(datetime)
  146. Equal(t, dt, "15:04")
  147. dt, err = th.FmtDateTimeFullSafe(datetime)
  148. Equal(t, err, nil)
  149. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
  150. dt = th.FmtDateTimeFull(datetime)
  151. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
  152. dt, err = th.FmtDateTimeLongSafe(datetime)
  153. Equal(t, err, nil)
  154. Equal(t, dt, "2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
  155. dt = th.FmtDateTimeLong(datetime)
  156. Equal(t, dt, "2 มกราคม ค.ศ. 2006 15 นาฬิกา 04 นาที 05 วินาที")
  157. dt, err = th.FmtDateTimeMediumSafe(datetime)
  158. Equal(t, err, nil)
  159. Equal(t, dt, "2 ม.ค. 2006 15:04:05")
  160. dt = th.FmtDateTimeMedium(datetime)
  161. Equal(t, dt, "2 ม.ค. 2006 15:04:05")
  162. dt, err = th.FmtDateTimeShortSafe(datetime)
  163. Equal(t, err, nil)
  164. Equal(t, dt, "2/1/06 15:04")
  165. dt = th.FmtDateTimeShort(datetime)
  166. Equal(t, dt, "2/1/06 15:04")
  167. dt, err = th.FmtDateTimeSafe(datetime, "MMMM d yy")
  168. Equal(t, err, nil)
  169. Equal(t, dt, "มกราคม 2 06")
  170. dt = th.FmtDateTime(datetime, "MMMM d yy")
  171. Equal(t, err, nil)
  172. Equal(t, dt, "มกราคม 2 06")
  173. dt, err = th.FmtDateTimeSafe(datetime, "not a date pattern")
  174. NotEqual(t, err, nil)
  175. Equal(t, dt, "")
  176. Equal(t, err.Error(), "unknown datetime format unit: n")
  177. }