// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style. // license that can be found in the LICENSE file. package proto_test import ( "fmt" "testing" "google.golang.org/protobuf/proto" testpb "google.golang.org/protobuf/internal/testprotos/test" ) func TestIsInitializedErrors(t *testing.T) { for _, test := range []struct { m proto.Message want string }{ { &testpb.TestRequired{}, `proto: required field goproto.proto.test.TestRequired.required_field not set`, }, { &testpb.TestRequiredForeign{ OptionalMessage: &testpb.TestRequired{}, }, `proto: required field goproto.proto.test.TestRequired.required_field not set`, }, { &testpb.TestRequiredForeign{ RepeatedMessage: []*testpb.TestRequired{ {RequiredField: proto.Int32(1)}, {}, }, }, `proto: required field goproto.proto.test.TestRequired.required_field not set`, }, { &testpb.TestRequiredForeign{ MapMessage: map[int32]*testpb.TestRequired{ 1: {}, }, }, `proto: required field goproto.proto.test.TestRequired.required_field not set`, }, } { err := proto.IsInitialized(test.m) got := "" if err != nil { got = fmt.Sprintf("%q", err) } want := fmt.Sprintf("%q", test.want) if got != want { t.Errorf("IsInitialized(m):\n got: %v\nwant: %v\nMessage:\n%v", got, want, marshalText(test.m)) } } }