HEX
Server: LiteSpeed
System: Linux in-mum-web785.main-hosting.eu 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
User: u338768758 (338768758)
PHP: 8.3.30
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/go/pkg/mod/google.golang.org/protobuf@v1.26.0/internal/testprotos/nullable/methods_test.go
// Copyright 2021 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.

// Only test compatibility with the Marshal/Unmarshal functionality with
// pure protobuf reflection since there is no support for nullable fields
// in the table-driven implementation.
// +build protoreflect

package nullable

import (
	"testing"

	"github.com/google/go-cmp/cmp"
	"google.golang.org/protobuf/proto"
	"google.golang.org/protobuf/reflect/protoreflect"
	"google.golang.org/protobuf/testing/protocmp"
)

func init() {
	testMethods = func(t *testing.T, mt protoreflect.MessageType) {
		m1 := mt.New()
		populated := testPopulateMessage(t, m1, 2)
		b, err := proto.Marshal(m1.Interface())
		if err != nil {
			t.Errorf("proto.Marshal error: %v", err)
		}
		if populated && len(b) == 0 {
			t.Errorf("len(proto.Marshal) = 0, want >0")
		}
		m2 := mt.New()
		if err := proto.Unmarshal(b, m2.Interface()); err != nil {
			t.Errorf("proto.Unmarshal error: %v", err)
		}
		if diff := cmp.Diff(m1.Interface(), m2.Interface(), protocmp.Transform()); diff != "" {
			t.Errorf("message mismatch:\n%v", diff)
		}
		proto.Reset(m2.Interface())
		testEmptyMessage(t, m2, true)
		proto.Merge(m2.Interface(), m1.Interface())
		if diff := cmp.Diff(m1.Interface(), m2.Interface(), protocmp.Transform()); diff != "" {
			t.Errorf("message mismatch:\n%v", diff)
		}
	}
}