blob: 72dd1087ec126d30341cfc16a9b8783fb6c60347 [file] [log] [blame]
Damien Neil4686e232019-04-05 13:31:40 -07001// 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
5package proto_test
6
7import (
8 "fmt"
9 "testing"
10
Damien Neile89e6242019-05-13 23:55:40 -070011 "google.golang.org/protobuf/proto"
Damien Neil4686e232019-04-05 13:31:40 -070012
Damien Neile89e6242019-05-13 23:55:40 -070013 testpb "google.golang.org/protobuf/internal/testprotos/test"
Damien Neil4686e232019-04-05 13:31:40 -070014)
15
16func TestIsInitializedErrors(t *testing.T) {
17 for _, test := range []struct {
18 m proto.Message
19 want string
20 }{
21 {
22 &testpb.TestRequired{},
Damien Neil3d0706a2019-07-09 11:40:49 -070023 `proto: required field goproto.proto.test.TestRequired.required_field not set`,
Damien Neil4686e232019-04-05 13:31:40 -070024 },
25 {
26 &testpb.TestRequiredForeign{
27 OptionalMessage: &testpb.TestRequired{},
28 },
Damien Neil3d0706a2019-07-09 11:40:49 -070029 `proto: required field goproto.proto.test.TestRequired.required_field not set`,
Damien Neil4686e232019-04-05 13:31:40 -070030 },
31 {
32 &testpb.TestRequiredForeign{
33 RepeatedMessage: []*testpb.TestRequired{
Damien Neila8a2cea2019-07-10 16:17:16 -070034 {RequiredField: proto.Int32(1)},
Damien Neil4686e232019-04-05 13:31:40 -070035 {},
36 },
37 },
Damien Neil3d0706a2019-07-09 11:40:49 -070038 `proto: required field goproto.proto.test.TestRequired.required_field not set`,
Damien Neil4686e232019-04-05 13:31:40 -070039 },
40 {
41 &testpb.TestRequiredForeign{
42 MapMessage: map[int32]*testpb.TestRequired{
43 1: {},
44 },
45 },
Damien Neil3d0706a2019-07-09 11:40:49 -070046 `proto: required field goproto.proto.test.TestRequired.required_field not set`,
Damien Neil4686e232019-04-05 13:31:40 -070047 },
48 } {
49 err := proto.IsInitialized(test.m)
50 got := "<nil>"
51 if err != nil {
52 got = fmt.Sprintf("%q", err)
53 }
54 want := fmt.Sprintf("%q", test.want)
55 if got != want {
56 t.Errorf("IsInitialized(m):\n got: %v\nwant: %v\nMessage:\n%v", got, want, marshalText(test.m))
57 }
58 }
59}