calendar_test.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  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 (
  20. dateTimeString = "Jan 2, 2006 at 3:04:05pm"
  21. bc300DateTime = time.Date(-300, 1, 2, 3, 4, 5, 0, time.UTC)
  22. )
  23. func TestDateTimeEn(t *testing.T) {
  24. en, err := ut.GetTranslator("en")
  25. Equal(t, err, nil)
  26. datetime, err := time.Parse(dateTimeString, dateTimeString)
  27. Equal(t, err, nil)
  28. // test the public method
  29. dt, err := en.FmtDateFullSafe(datetime)
  30. Equal(t, err, nil)
  31. Equal(t, dt, "Monday, January 2, 2006")
  32. dt = en.FmtDateFull(datetime)
  33. Equal(t, dt, "Monday, January 2, 2006")
  34. dt, err = en.FmtDateLongSafe(datetime)
  35. Equal(t, err, nil)
  36. Equal(t, dt, "January 2, 2006")
  37. dt = en.FmtDateLong(datetime)
  38. Equal(t, dt, "January 2, 2006")
  39. dt, err = en.FmtDateMediumSafe(datetime)
  40. Equal(t, err, nil)
  41. Equal(t, dt, "Jan 2, 2006")
  42. dt = en.FmtDateMedium(datetime)
  43. Equal(t, dt, "Jan 2, 2006")
  44. dt, err = en.FmtDateShortSafe(datetime)
  45. Equal(t, err, nil)
  46. Equal(t, dt, "1/2/06")
  47. dt = en.FmtDateShort(datetime)
  48. Equal(t, dt, "1/2/06")
  49. dt, err = en.FmtTimeFullSafe(datetime)
  50. Equal(t, err, nil)
  51. Equal(t, dt, "3:04:05 PM")
  52. dt = en.FmtTimeFull(datetime)
  53. Equal(t, dt, "3:04:05 PM")
  54. dt, err = en.FmtTimeLongSafe(datetime)
  55. Equal(t, err, nil)
  56. Equal(t, dt, "3:04:05 PM")
  57. dt = en.FmtTimeLong(datetime)
  58. Equal(t, dt, "3:04:05 PM")
  59. dt, err = en.FmtTimeMediumSafe(datetime)
  60. Equal(t, err, nil)
  61. Equal(t, dt, "3:04:05 PM")
  62. dt = en.FmtTimeMedium(datetime)
  63. Equal(t, dt, "3:04:05 PM")
  64. dt, err = en.FmtTimeShortSafe(datetime)
  65. Equal(t, err, nil)
  66. Equal(t, dt, "3:04 PM")
  67. dt = en.FmtTimeShort(datetime)
  68. Equal(t, dt, "3:04 PM")
  69. dt, err = en.FmtDateTimeFullSafe(datetime)
  70. Equal(t, err, nil)
  71. Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
  72. dt = en.FmtDateTimeFull(datetime)
  73. Equal(t, dt, "Monday, January 2, 2006 at 3:04:05 PM")
  74. dt, err = en.FmtDateTimeLongSafe(datetime)
  75. Equal(t, err, nil)
  76. Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
  77. dt = en.FmtDateTimeLong(datetime)
  78. Equal(t, dt, "January 2, 2006 at 3:04:05 PM")
  79. dt, err = en.FmtDateTimeMediumSafe(datetime)
  80. Equal(t, err, nil)
  81. Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
  82. dt = en.FmtDateTimeMedium(datetime)
  83. Equal(t, dt, "Jan 2, 2006, 3:04:05 PM")
  84. dt, err = en.FmtDateTimeShortSafe(datetime)
  85. Equal(t, err, nil)
  86. Equal(t, dt, "1/2/06, 3:04 PM")
  87. dt = en.FmtDateTimeShort(datetime)
  88. Equal(t, dt, "1/2/06, 3:04 PM")
  89. dt, err = en.FmtDateTimeSafe(datetime, "MMMM d yy")
  90. Equal(t, err, nil)
  91. Equal(t, dt, "January 2 06")
  92. dt = en.FmtDateTime(datetime, "MMMM d yy")
  93. Equal(t, err, nil)
  94. Equal(t, dt, "January 2 06")
  95. dt, err = en.FmtDateTimeSafe(datetime, "not a date pattern")
  96. NotEqual(t, err, nil)
  97. Equal(t, dt, "")
  98. Equal(t, err.Error(), "unknown datetime format unit: n")
  99. }
  100. func TestDateTimeTh(t *testing.T) {
  101. th, err := ut.GetTranslator("th")
  102. Equal(t, err, nil)
  103. datetime, err := time.Parse(dateTimeString, dateTimeString)
  104. Equal(t, err, nil)
  105. // test the public method
  106. dt, err := th.FmtDateFullSafe(datetime)
  107. Equal(t, err, nil)
  108. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม 2006 คริสต์ศักราช")
  109. dt, err = th.FmtDateFullSafe(bc300DateTime)
  110. Equal(t, err, nil)
  111. Equal(t, dt, "วันเสาร์ที่ 2 มกราคม ปีก่อนคริสต์ศักราช 300")
  112. dt = th.FmtDateFull(datetime)
  113. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม 2006 คริสต์ศักราช")
  114. dt = th.FmtDateFull(bc300DateTime)
  115. Equal(t, dt, "วันเสาร์ที่ 2 มกราคม ปีก่อนคริสต์ศักราช 300")
  116. dt, err = th.FmtDateLongSafe(datetime)
  117. Equal(t, err, nil)
  118. Equal(t, dt, "2 มกราคม 2006 ค.ศ.")
  119. dt, err = th.FmtDateLongSafe(bc300DateTime)
  120. Equal(t, err, nil)
  121. Equal(t, dt, "2 มกราคม ปีก่อน ค.ศ. 300")
  122. dt = th.FmtDateLong(datetime)
  123. Equal(t, dt, "2 มกราคม 2006 ค.ศ.")
  124. dt = th.FmtDateLong(bc300DateTime)
  125. Equal(t, dt, "2 มกราคม ปีก่อน ค.ศ. 300")
  126. dt, err = th.FmtDateMediumSafe(datetime)
  127. Equal(t, err, nil)
  128. Equal(t, dt, "2 ม.ค. 2006")
  129. dt = th.FmtDateMedium(datetime)
  130. Equal(t, dt, "2 ม.ค. 2006")
  131. dt, err = th.FmtDateShortSafe(datetime)
  132. Equal(t, err, nil)
  133. Equal(t, dt, "2/1/06")
  134. dt = th.FmtDateShort(datetime)
  135. Equal(t, dt, "2/1/06")
  136. dt, err = th.FmtTimeFullSafe(datetime)
  137. Equal(t, err, nil)
  138. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  139. dt = th.FmtTimeFull(datetime)
  140. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  141. dt, err = th.FmtTimeLongSafe(datetime)
  142. Equal(t, err, nil)
  143. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  144. dt = th.FmtTimeLong(datetime)
  145. Equal(t, dt, "15 นาฬิกา 04 นาที 05 วินาที")
  146. dt, err = th.FmtTimeMediumSafe(datetime)
  147. Equal(t, err, nil)
  148. Equal(t, dt, "15:04:05")
  149. dt = th.FmtTimeMedium(datetime)
  150. Equal(t, dt, "15:04:05")
  151. dt, err = th.FmtTimeShortSafe(datetime)
  152. Equal(t, err, nil)
  153. Equal(t, dt, "15:04")
  154. dt = th.FmtTimeShort(datetime)
  155. Equal(t, dt, "15:04")
  156. dt, err = th.FmtDateTimeFullSafe(datetime)
  157. Equal(t, err, nil)
  158. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม 2006 คริสต์ศักราช 15 นาฬิกา 04 นาที 05 วินาที")
  159. dt, err = th.FmtDateTimeFullSafe(bc300DateTime)
  160. Equal(t, err, nil)
  161. Equal(t, dt, "วันเสาร์ที่ 2 มกราคม ปีก่อนคริสต์ศักราช 300 3 นาฬิกา 04 นาที 05 วินาที")
  162. dt = th.FmtDateTimeFull(datetime)
  163. Equal(t, dt, "วันจันทร์ที่ 2 มกราคม 2006 คริสต์ศักราช 15 นาฬิกา 04 นาที 05 วินาที")
  164. dt = th.FmtDateTimeFull(bc300DateTime)
  165. Equal(t, dt, "วันเสาร์ที่ 2 มกราคม ปีก่อนคริสต์ศักราช 300 3 นาฬิกา 04 นาที 05 วินาที")
  166. dt, err = th.FmtDateTimeLongSafe(datetime)
  167. Equal(t, err, nil)
  168. Equal(t, dt, "2 มกราคม 2006 ค.ศ. 15 นาฬิกา 04 นาที 05 วินาที")
  169. dt, err = th.FmtDateTimeLongSafe(bc300DateTime)
  170. Equal(t, err, nil)
  171. Equal(t, dt, "2 มกราคม ปีก่อน ค.ศ. 300 3 นาฬิกา 04 นาที 05 วินาที")
  172. dt = th.FmtDateTimeLong(datetime)
  173. Equal(t, dt, "2 มกราคม 2006 ค.ศ. 15 นาฬิกา 04 นาที 05 วินาที")
  174. dt = th.FmtDateTimeLong(bc300DateTime)
  175. Equal(t, dt, "2 มกราคม ปีก่อน ค.ศ. 300 3 นาฬิกา 04 นาที 05 วินาที")
  176. dt, err = th.FmtDateTimeMediumSafe(datetime)
  177. Equal(t, err, nil)
  178. Equal(t, dt, "2 ม.ค. 2006 15:04:05")
  179. dt = th.FmtDateTimeMedium(datetime)
  180. Equal(t, dt, "2 ม.ค. 2006 15:04:05")
  181. dt, err = th.FmtDateTimeShortSafe(datetime)
  182. Equal(t, err, nil)
  183. Equal(t, dt, "2/1/06 15:04")
  184. dt = th.FmtDateTimeShort(datetime)
  185. Equal(t, dt, "2/1/06 15:04")
  186. dt, err = th.FmtDateTimeSafe(datetime, "MMMM d yy")
  187. Equal(t, err, nil)
  188. Equal(t, dt, "มกราคม 2 06")
  189. dt = th.FmtDateTime(datetime, "MMMM d yy")
  190. Equal(t, err, nil)
  191. Equal(t, dt, "มกราคม 2 06")
  192. dt, err = th.FmtDateTimeSafe(datetime, "not a date pattern")
  193. NotEqual(t, err, nil)
  194. Equal(t, dt, "")
  195. Equal(t, err.Error(), "unknown datetime format unit: n")
  196. }