| // 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 ( |
| "testing" |
| |
| "google.golang.org/protobuf/proto" |
| |
| testpb "google.golang.org/protobuf/internal/testprotos/test" |
| ) |
| |
| func TestReset(t *testing.T) { |
| m := &testpb.TestAllTypes{ |
| OptionalSfixed64: proto.Int64(5), |
| RepeatedInt32: []int32{}, |
| RepeatedFloat: []float32{1.234, 5.678}, |
| MapFixed64Fixed64: map[uint64]uint64{5: 7}, |
| MapStringString: map[string]string{}, |
| OptionalForeignMessage: &testpb.ForeignMessage{}, |
| OneofField: (*testpb.TestAllTypes_OneofUint32)(nil), |
| OneofOptional: (*testpb.TestAllTypes_OneofOptionalUint32)(nil), |
| } |
| m.ProtoReflect().SetUnknown([]byte{}) |
| |
| proto.Reset(m) |
| |
| if m.OptionalSfixed64 != nil { |
| t.Errorf("m.OptionalSfixed64 = %p, want nil", m.OptionalSfixed64) |
| } |
| if m.RepeatedInt32 != nil { |
| t.Errorf("m.RepeatedInt32 = %p, want nil", m.RepeatedInt32) |
| } |
| if m.RepeatedFloat != nil { |
| t.Errorf("m.RepeatedFloat = %p, want nil", m.RepeatedFloat) |
| } |
| if m.MapFixed64Fixed64 != nil { |
| t.Errorf("m.MapFixed64Fixed64 = %p, want nil", m.MapFixed64Fixed64) |
| } |
| if m.MapStringString != nil { |
| t.Errorf("m.MapStringString = %p, want nil", m.MapStringString) |
| } |
| if m.OptionalForeignMessage != nil { |
| t.Errorf("m.OptionalForeignMessage = %p, want nil", m.OptionalForeignMessage) |
| } |
| if m.OneofField != nil { |
| t.Errorf("m.OneofField = %p, want nil", m.OneofField) |
| } |
| if m.OneofOptional != nil { |
| t.Errorf("m.OneofOptional = %p, want nil", m.OneofOptional) |
| } |
| |
| if got := m.ProtoReflect().GetUnknown(); got != nil { |
| t.Errorf("m.ProtoReflect().GetUnknown() = %d, want nil", got) |
| } |
| } |