demo-protobuf3-optional/optional_test.go
2023-10-27 13:05:06 +08:00

73 lines
1.7 KiB
Go

package demo_protobuf3_optional
import (
"testing"
"google.golang.org/protobuf/proto"
)
func TestOptionalNilId(t *testing.T) {
noid := &WithOptional{
Username: "me",
Userid: nil,
}
t.Log(noid.String())
wiremessage, err := proto.Marshal(noid)
if err != nil {
t.Fatal("marshal failed: ", err)
}
unmarshaled := &WithOptional{}
if err := proto.Unmarshal(wiremessage, unmarshaled); err != nil {
t.Fatal("failed to unmarshal message: ", err)
}
t.Log("id: ", unmarshaled.Userid)
if unmarshaled.Userid != nil {
t.Fatalf("expected userid is nil, got %v", unmarshaled.Userid)
}
}
func TestOptionalZeroId(t *testing.T) {
id := int64(0)
noid := &WithOptional{
Username: "me",
Userid: &id,
}
t.Log(noid.String())
wiremessage, err := proto.Marshal(noid)
if err != nil {
t.Fatal("marshal failed: ", err)
}
unmarshaled := &WithOptional{}
if err := proto.Unmarshal(wiremessage, unmarshaled); err != nil {
t.Fatal("failed to unmarshal message: ", err)
}
if unmarshaled.Userid == nil || *unmarshaled.Userid != 0 {
t.Fatalf("expected userid is non nil 0, got %v", unmarshaled.Userid)
}
t.Log("id: ", unmarshaled.Userid)
}
func TestOptionalNonZeroId(t *testing.T) {
id := int64(1)
noid := &WithOptional{
Username: "me",
Userid: &id,
}
t.Log(noid.String())
wiremessage, err := proto.Marshal(noid)
if err != nil {
t.Fatal("marshal failed: ", err)
}
unmarshaled := &WithOptional{}
if err := proto.Unmarshal(wiremessage, unmarshaled); err != nil {
t.Fatal("failed to unmarshal message: ", err)
}
if unmarshaled.Userid == nil || *unmarshaled.Userid != 1 {
t.Fatalf("expected userid is non nil 1, got %v", unmarshaled.Userid)
}
t.Log("id: ", unmarshaled.Userid)
}