iso6801_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package util
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "time"
  6. )
  7. func TestISO8601Time(t *testing.T) {
  8. now := NewISO6801Time(time.Now().UTC())
  9. data, err := json.Marshal(now)
  10. if err != nil {
  11. t.Fatal(err)
  12. }
  13. _, err = time.Parse(`"`+formatISO8601+`"`, string(data))
  14. if err != nil {
  15. t.Fatal(err)
  16. }
  17. var now2 ISO6801Time
  18. err = json.Unmarshal(data, &now2)
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. if now != now2 {
  23. t.Errorf("Time %s does not equal expected %s", now2, now)
  24. }
  25. if now.String() != now2.String() {
  26. t.Fatalf("String format for %s does not equal expected %s", now2, now)
  27. }
  28. type TestTimeStruct struct {
  29. A int
  30. B *ISO6801Time
  31. }
  32. var testValue TestTimeStruct
  33. err = json.Unmarshal([]byte("{\"A\": 1, \"B\":\"\"}"), &testValue)
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. t.Logf("%v", testValue)
  38. if !testValue.B.IsDefault() {
  39. t.Fatal("Invaid Unmarshal result for ISO6801Time from empty value")
  40. }
  41. t.Logf("ISO6801Time String(): %s", now2.String())
  42. }
  43. func TestISO8601TimeWithoutSeconds(t *testing.T) {
  44. const dateStr = "\"2015-10-02T12:36Z\""
  45. var date ISO6801Time
  46. err := json.Unmarshal([]byte(dateStr), &date)
  47. if err != nil {
  48. t.Fatal(err)
  49. }
  50. const dateStr2 = "\"2015-10-02T12:36:00Z\""
  51. var date2 ISO6801Time
  52. err = json.Unmarshal([]byte(dateStr2), &date2)
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. if date != date2 {
  57. t.Error("The two dates shoudl be equal.")
  58. }
  59. }
  60. func TestISO8601TimeInt(t *testing.T) {
  61. const dateStr = "1405544146000"
  62. var date ISO6801Time
  63. err := json.Unmarshal([]byte(dateStr), &date)
  64. if err != nil {
  65. t.Fatal(err)
  66. }
  67. t.Logf("date: %s", date)
  68. }