blob: d935d3a0c69f59d8f7454adf255dd892e9c98f47 [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"
Joe Tsai09217f02019-09-06 16:57:46 -07009 "strings"
Damien Neil4686e232019-04-05 13:31:40 -070010 "testing"
11
Damien Neile89e6242019-05-13 23:55:40 -070012 "google.golang.org/protobuf/proto"
Damien Neil4686e232019-04-05 13:31:40 -070013
Damien Neile89e6242019-05-13 23:55:40 -070014 testpb "google.golang.org/protobuf/internal/testprotos/test"
Damien Neil4686e232019-04-05 13:31:40 -070015)
16
17func TestIsInitializedErrors(t *testing.T) {
18 for _, test := range []struct {
19 m proto.Message
20 want string
21 }{
22 {
23 &testpb.TestRequired{},
Joe Tsai09217f02019-09-06 16:57:46 -070024 `goproto.proto.test.TestRequired.required_field`,
Damien Neil4686e232019-04-05 13:31:40 -070025 },
26 {
27 &testpb.TestRequiredForeign{
28 OptionalMessage: &testpb.TestRequired{},
29 },
Joe Tsai09217f02019-09-06 16:57:46 -070030 `goproto.proto.test.TestRequired.required_field`,
Damien Neil4686e232019-04-05 13:31:40 -070031 },
32 {
33 &testpb.TestRequiredForeign{
34 RepeatedMessage: []*testpb.TestRequired{
Damien Neila8a2cea2019-07-10 16:17:16 -070035 {RequiredField: proto.Int32(1)},
Damien Neil4686e232019-04-05 13:31:40 -070036 {},
37 },
38 },
Joe Tsai09217f02019-09-06 16:57:46 -070039 `goproto.proto.test.TestRequired.required_field`,
Damien Neil4686e232019-04-05 13:31:40 -070040 },
41 {
42 &testpb.TestRequiredForeign{
43 MapMessage: map[int32]*testpb.TestRequired{
44 1: {},
45 },
46 },
Joe Tsai09217f02019-09-06 16:57:46 -070047 `goproto.proto.test.TestRequired.required_field`,
Damien Neil4686e232019-04-05 13:31:40 -070048 },
49 } {
50 err := proto.IsInitialized(test.m)
51 got := "<nil>"
52 if err != nil {
53 got = fmt.Sprintf("%q", err)
54 }
Joe Tsai09217f02019-09-06 16:57:46 -070055 if !strings.Contains(got, test.want) {
56 t.Errorf("IsInitialized(m):\n got: %v\nwant contains: %v\nMessage:\n%v", got, test.want, marshalText(test.m))
Damien Neil4686e232019-04-05 13:31:40 -070057 }
58 }
59}