isinit_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2019 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style.
  3. // license that can be found in the LICENSE file.
  4. package proto_test
  5. import (
  6. "fmt"
  7. "testing"
  8. "google.golang.org/protobuf/proto"
  9. testpb "google.golang.org/protobuf/internal/testprotos/test"
  10. )
  11. func TestIsInitializedErrors(t *testing.T) {
  12. for _, test := range []struct {
  13. m proto.Message
  14. want string
  15. }{
  16. {
  17. &testpb.TestRequired{},
  18. `proto: required field goproto.proto.test.TestRequired.required_field not set`,
  19. },
  20. {
  21. &testpb.TestRequiredForeign{
  22. OptionalMessage: &testpb.TestRequired{},
  23. },
  24. `proto: required field goproto.proto.test.TestRequired.required_field not set`,
  25. },
  26. {
  27. &testpb.TestRequiredForeign{
  28. RepeatedMessage: []*testpb.TestRequired{
  29. {RequiredField: proto.Int32(1)},
  30. {},
  31. },
  32. },
  33. `proto: required field goproto.proto.test.TestRequired.required_field not set`,
  34. },
  35. {
  36. &testpb.TestRequiredForeign{
  37. MapMessage: map[int32]*testpb.TestRequired{
  38. 1: {},
  39. },
  40. },
  41. `proto: required field goproto.proto.test.TestRequired.required_field not set`,
  42. },
  43. } {
  44. err := proto.IsInitialized(test.m)
  45. got := "<nil>"
  46. if err != nil {
  47. got = fmt.Sprintf("%q", err)
  48. }
  49. want := fmt.Sprintf("%q", test.want)
  50. if got != want {
  51. t.Errorf("IsInitialized(m):\n got: %v\nwant: %v\nMessage:\n%v", got, want, marshalText(test.m))
  52. }
  53. }
  54. }