parser_test.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package parser
  2. import (
  3. "sort"
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestDefaultProtoParse(t *testing.T) {
  9. p := NewDefaultProtoParser()
  10. data, err := p.Parse("./test.proto")
  11. assert.Nil(t, err)
  12. assert.Equal(t, "base.proto", func() string {
  13. ip := data.Import[0]
  14. return ip.Filename
  15. }())
  16. assert.Equal(t, "test", data.Package.Name)
  17. assert.Equal(t, true, data.GoPackage == "go")
  18. assert.Equal(t, true, data.PbPackage == "_go")
  19. assert.Equal(t, []string{"Inline", "Inner", "TestMessage", "TestReply", "TestReq"},
  20. func() []string {
  21. var list []string
  22. for _, item := range data.Message {
  23. list = append(list, item.Name)
  24. }
  25. sort.Strings(list)
  26. return list
  27. }())
  28. assert.Equal(t, true, func() bool {
  29. if len(data.Service) != 1 {
  30. return false
  31. }
  32. s := data.Service[0]
  33. if s.Name != "TestService" {
  34. return false
  35. }
  36. rpcOne := s.RPC[0]
  37. return rpcOne.Name == "TestRpcOne" && rpcOne.RequestType == "TestReq" && rpcOne.ReturnsType == "TestReply"
  38. }())
  39. }
  40. func TestDefaultProtoParseCaseInvalidRequestType(t *testing.T) {
  41. p := NewDefaultProtoParser()
  42. _, err := p.Parse("./test_invalid_request.proto")
  43. assert.True(t, true, func() bool {
  44. return strings.Contains(err.Error(), "request type must defined in")
  45. }())
  46. }
  47. func TestDefaultProtoParseCaseInvalidResponseType(t *testing.T) {
  48. p := NewDefaultProtoParser()
  49. _, err := p.Parse("./test_invalid_response.proto")
  50. assert.True(t, true, func() bool {
  51. return strings.Contains(err.Error(), "response type must defined in")
  52. }())
  53. }
  54. func TestDefaultProtoParseError(t *testing.T) {
  55. p := NewDefaultProtoParser()
  56. _, err := p.Parse("./nil.proto")
  57. assert.NotNil(t, err)
  58. }
  59. func TestDefaultProtoParse_Option(t *testing.T) {
  60. p := NewDefaultProtoParser()
  61. data, err := p.Parse("./test_option.proto")
  62. assert.Nil(t, err)
  63. assert.Equal(t, "github.com/zeromicro/go-zero", data.GoPackage)
  64. assert.Equal(t, "go_zero", data.PbPackage)
  65. }
  66. func TestDefaultProtoParse_Option2(t *testing.T) {
  67. p := NewDefaultProtoParser()
  68. data, err := p.Parse("./test_option2.proto")
  69. assert.Nil(t, err)
  70. assert.Equal(t, "stream", data.GoPackage)
  71. assert.Equal(t, "stream", data.PbPackage)
  72. }