func TestEmptyFields(t *testing.T, hashers oi.ProtoHashers) {
	hasher := hashers.DefaultHasher
	testCases := []ti.TestCase{
		{
			Protos: []proto.Message{
				&pb2_latest.Empty{},
				&pb3_latest.Empty{},
				&pb2_latest.Repetitive{StringField: []string{}},
				&pb3_latest.Repetitive{StringField: []string{}},
				&pb2_latest.StringMaps{StringToString: map[string]string{}},
				&pb3_latest.StringMaps{StringToString: map[string]string{}},
				&pb3_latest.Simple{BoolField: false},
				&pb3_latest.Simple{BytesField: []byte{}},
				&pb3_latest.Simple{DoubleField: 0},
				&pb3_latest.Simple{DoubleField: 0.0},
				&pb3_latest.Simple{Fixed32Field: 0},
				&pb3_latest.Simple{Fixed64Field: 0},
				&pb3_latest.Simple{FloatField: 0},
				&pb3_latest.Simple{FloatField: 0.0},
				&pb3_latest.Simple{Int32Field: 0},
				&pb3_latest.Simple{Int64Field: 0},
				&pb3_latest.Simple{Sfixed32Field: 0},
				&pb3_latest.Simple{Sfixed64Field: 0},
				&pb3_latest.Simple{Sint32Field: 0},
				&pb3_latest.Simple{Sint64Field: 0},
				&pb3_latest.Simple{StringField: ""},
				&pb3_latest.Simple{Uint32Field: 0},
				&pb3_latest.Simple{Uint64Field: 0},
			},
			EquivalentJSONString: "{}",
			EquivalentObject:     map[string]interface{}{},
			ExpectedHashString:   "18ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4",
		},
	}
	for _, tc := range testCases {
		tc.Check(t, hasher)
	}
}
TestEmptyFields checks that empty proto fields are handled properly.
package tests
import (
	"testing"
	"github.com/golang/protobuf/proto"
	oi "github.com/deepmind/objecthash-proto/internal"
	pb2_latest "github.com/deepmind/objecthash-proto/test_protos/generated/latest/proto2"
	pb3_latest "github.com/deepmind/objecthash-proto/test_protos/generated/latest/proto3"
	ti "github.com/deepmind/objecthash-proto/tests/internal"
)