naming_strategy_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package extra
  2. import (
  3. "github.com/json-iterator/go"
  4. "github.com/stretchr/testify/require"
  5. "testing"
  6. )
  7. func Test_lower_case_with_underscores(t *testing.T) {
  8. should := require.New(t)
  9. should.Equal("hello_world", LowerCaseWithUnderscores("helloWorld"))
  10. should.Equal("hello_world", LowerCaseWithUnderscores("HelloWorld"))
  11. SetNamingStrategy(LowerCaseWithUnderscores)
  12. output, err := jsoniter.Marshal(struct {
  13. UserName string
  14. FirstLanguage string
  15. }{
  16. UserName: "taowen",
  17. FirstLanguage: "Chinese",
  18. })
  19. should.Nil(err)
  20. should.Equal(`{"user_name":"taowen","first_language":"Chinese"}`, string(output))
  21. }
  22. func Test_set_naming_strategy_with_overrides(t *testing.T) {
  23. should := require.New(t)
  24. SetNamingStrategy(LowerCaseWithUnderscores)
  25. output, err := jsoniter.Marshal(struct {
  26. UserName string `json:"UserName"`
  27. FirstLanguage string
  28. }{
  29. UserName: "taowen",
  30. FirstLanguage: "Chinese",
  31. })
  32. should.Nil(err)
  33. should.Equal(`{"UserName":"taowen","first_language":"Chinese"}`, string(output))
  34. }
  35. func Test_set_naming_strategy_with_omitempty(t *testing.T) {
  36. should := require.New(t)
  37. SetNamingStrategy(LowerCaseWithUnderscores)
  38. output, err := jsoniter.Marshal(struct {
  39. UserName string
  40. FirstLanguage string `json:",omitempty"`
  41. }{
  42. UserName: "taowen",
  43. })
  44. should.Nil(err)
  45. should.Equal(`{"user_name":"taowen"}`, string(output))
  46. }