mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2024-12-29 12:17:48 +00:00
9b22b9382e
The old implementation had the behavior where a nil wrapper value: m := new(foopb.Message) m.OneofField = (*foopb.Message_OneofUint32)(nil) was functionally equivalent to it being directly set to nil: m := new(foopb.Message) m.OneofField = nil preserve this semantic in both the table-drive implementation and the reflection implementation. Change-Id: Ie44d51e044d4822e61d0e646fbc44aa8d9b90c1f Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189559 Reviewed-by: Herbie Ong <herbie@google.com>
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
// 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)
|
|
}
|
|
}
|