utils_test.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package utils
  2. import (
  3. "fmt"
  4. "regexp"
  5. "strings"
  6. "testing"
  7. "time"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestInitStructWithDefaultTag(t *testing.T) {
  11. config := &struct {
  12. B bool `default:"true"`
  13. S string `default:"default string"`
  14. I int `default:"10"`
  15. T time.Duration `default:"100"`
  16. E int `default:""`
  17. }{}
  18. InitStructWithDefaultTag(config)
  19. assert.NotNil(t, config)
  20. assert.Equal(t, true, config.B)
  21. assert.Equal(t, "default string", config.S)
  22. assert.Equal(t, 10, config.I)
  23. assert.Equal(t, time.Duration(100), config.T)
  24. assert.Equal(t, 0, config.E)
  25. }
  26. func TestGetUUIDV4(t *testing.T) {
  27. uuid := GetUUIDV4()
  28. assert.Equal(t, 32, len(uuid))
  29. assert.NotEqual(t, GetUUIDV4(), GetUUIDV4())
  30. }
  31. func TestGetMD5Base64(t *testing.T) {
  32. assert.Equal(t, "ERIHLmRX2uZmssDdxQnnxQ==",
  33. GetMD5Base64([]byte("That's all folks!!")))
  34. assert.Equal(t, "GsJRdI3kAbAnHo/0+3wWJw==",
  35. GetMD5Base64([]byte("中文也没啥问题")))
  36. }
  37. func TestGetTimeInFormatRFC2616(t *testing.T) {
  38. s := GetTimeInFormatRFC2616()
  39. assert.Equal(t, 29, len(s))
  40. re := regexp.MustCompile(`^[A-Z][a-z]{2}, [0-9]{2} [A-Z][a-z]{2} [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$`)
  41. assert.True(t, re.MatchString(s))
  42. }
  43. func TestGetTimeInFormatISO8601(t *testing.T) {
  44. s := GetTimeInFormatISO8601()
  45. assert.Equal(t, 20, len(s))
  46. // 2006-01-02T15:04:05Z
  47. re := regexp.MustCompile(`^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$`)
  48. assert.True(t, re.MatchString(s))
  49. }
  50. func TestGetUrlFormedMap(t *testing.T) {
  51. m := make(map[string]string)
  52. m["key"] = "value"
  53. s := GetUrlFormedMap(m)
  54. assert.Equal(t, "key=value", s)
  55. m["key2"] = "http://domain/?key=value&key2=value2"
  56. s2 := GetUrlFormedMap(m)
  57. assert.Equal(t, "key=value&key2=http%3A%2F%2Fdomain%2F%3Fkey%3Dvalue%26key2%3Dvalue2", s2)
  58. }
  59. func TestGetTimeInFormatISO8601WithTZData(t *testing.T) {
  60. TZData = []byte(`"GMT"`)
  61. LoadLocationFromTZData = func(name string, data []byte) (location *time.Location, e error) {
  62. if strings.Contains(string(data), name) {
  63. location, _ = time.LoadLocation(name)
  64. }
  65. e = fmt.Errorf("There is a error in test.")
  66. return location, e
  67. }
  68. defer func() {
  69. err := recover()
  70. assert.NotNil(t, err)
  71. }()
  72. s := GetTimeInFormatISO8601()
  73. assert.Equal(t, 20, len(s))
  74. // 2006-01-02T15:04:05Z
  75. re := regexp.MustCompile(`^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$`)
  76. assert.True(t, re.MatchString(s))
  77. }
  78. func TestGetTimeInFormatRFC2616WithTZData(t *testing.T) {
  79. defer func() {
  80. err := recover()
  81. assert.NotNil(t, err)
  82. }()
  83. s := GetTimeInFormatRFC2616()
  84. assert.Equal(t, 29, len(s))
  85. re := regexp.MustCompile(`^[A-Z][a-z]{2}, [0-9]{2} [A-Z][a-z]{2} [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$`)
  86. assert.True(t, re.MatchString(s))
  87. }