func TestJsonFullCircleProtoToStd(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) protoMsg := NewPopulatedProtoTypes(popr, true) j := &jsonpb.Marshaler{} protoData, err := j.MarshalToString(protoMsg) if err != nil { t.Fatal(err) } stdMsg := &StdTypes{} if err2 := jsonpb.UnmarshalString(protoData, stdMsg); err2 != nil { t.Fatal(err) } stdData, err := j.MarshalToString(stdMsg) if err != nil { t.Fatal(err) } protoMsgOut := &ProtoTypes{} if err3 := jsonpb.UnmarshalString(stdData, protoMsgOut); err3 != nil { t.Fatal(err) } if !protoMsg.Equal(protoMsgOut) { t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut) } }
func TestSizeMessageJSON(t *testing.T) { popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano())) p := NewPopulatedSizeMessage(popr, true) marshaler := github_com_gogo_protobuf_jsonpb.Marshaller{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatal(err) } msg := &SizeMessage{} err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatal(err) } if !p.Equal(msg) { t.Fatalf("%#v !Json Equal %#v", msg, p) } }
func TestFooJSON(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedFoo(popr, true) marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Foo{} err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p) } }
func TestFloatingPointJSON(t *testing.T) { popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano())) p := NewPopulatedFloatingPoint(popr, true) marshaler := github_com_gogo_protobuf_jsonpb.Marshaller{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatal(err) } msg := &FloatingPoint{} err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatal(err) } if err := p.VerboseEqual(msg); err != nil { t.Fatalf("%#v !VerboseProto %#v, since %v", msg, p, err) } if !p.Equal(msg) { t.Fatalf("%#v !Json Equal %#v", msg, p) } }
func TestAllMapsOrderedJSON(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedAllMapsOrdered(popr, true) marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &AllMapsOrdered{} err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if err := p.VerboseEqual(msg); err != nil { t.Fatalf("seed = %d, %#v !VerboseProto %#v, since %v", seed, msg, p, err) } if !p.Equal(msg) { t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p) } }
func handle(req *pb.ConformanceRequest) *pb.ConformanceResponse { var err error var msg pb.TestAllTypes switch p := req.Payload.(type) { case *pb.ConformanceRequest_ProtobufPayload: err = proto.Unmarshal(p.ProtobufPayload, &msg) case *pb.ConformanceRequest_JsonPayload: err = jsonpb.UnmarshalString(p.JsonPayload, &msg) if err != nil && err.Error() == "unmarshaling Any not supported yet" { return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_Skipped{ Skipped: err.Error(), }, } } default: return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_RuntimeError{ RuntimeError: "unknown request payload type", }, } } if err != nil { return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_ParseError{ ParseError: err.Error(), }, } } switch req.RequestedOutputFormat { case pb.WireFormat_PROTOBUF: p, err := proto.Marshal(&msg) if err != nil { return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_SerializeError{ SerializeError: err.Error(), }, } } return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_ProtobufPayload{ ProtobufPayload: p, }, } case pb.WireFormat_JSON: p, err := jsonMarshaler.MarshalToString(&msg) if err != nil { return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_SerializeError{ SerializeError: err.Error(), }, } } return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_JsonPayload{ JsonPayload: p, }, } default: return &pb.ConformanceResponse{ Result: &pb.ConformanceResponse_RuntimeError{ RuntimeError: "unknown output format", }, } } }