...

Text file src/github.com/gogo/protobuf/test/types/types_test.go.in

Documentation: github.com/gogo/protobuf/test/types

     1// Protocol Buffers for Go with Gadgets
     2//
     3// Copyright (c) 2016, The GoGo Authors. All rights reserved.
     4// http://github.com/gogo/protobuf
     5//
     6// Redistribution and use in source and binary forms, with or without
     7// modification, are permitted provided that the following conditions are
     8// met:
     9//
    10//     * Redistributions of source code must retain the above copyright
    11// notice, this list of conditions and the following disclaimer.
    12//     * Redistributions in binary form must reproduce the above
    13// copyright notice, this list of conditions and the following disclaimer
    14// in the documentation and/or other materials provided with the
    15// distribution.
    16//
    17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    19// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    20// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    21// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    22// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    23// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    24// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    25// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    26// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    27// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    28
    29package types
    30
    31import (
    32	"testing"
    33	"time"
    34	math_rand "math/rand"
    35
    36	"github.com/gogo/protobuf/proto"
    37	"github.com/gogo/protobuf/jsonpb"
    38)
    39
    40func TestFullCircleProtoToStd(t *testing.T) {
    41	seed := time.Now().UnixNano()
    42	popr := math_rand.New(math_rand.NewSource(seed))
    43	protoMsg := NewPopulatedProtoTypes(popr, true)
    44	protoData, err := proto.Marshal(protoMsg)
    45	if err != nil {
    46		t.Fatal(err)
    47	}
    48	stdMsg := &StdTypes{}
    49	if err2 := proto.Unmarshal(protoData, stdMsg); err2 != nil {
    50		t.Fatal(err)
    51	}
    52	stdData, err := proto.Marshal(stdMsg)
    53	if err != nil {
    54		t.Fatal(err)
    55	}
    56	protoMsgOut := &ProtoTypes{}
    57	if err3 := proto.Unmarshal(stdData, protoMsgOut); err3 != nil {
    58		t.Fatal(err)
    59	}
    60	if !protoMsg.Equal(protoMsgOut) {
    61		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
    62	}
    63}
    64
    65func TestJsonFullCircleProtoToStd(t *testing.T) {
    66	seed := time.Now().UnixNano()
    67	popr := math_rand.New(math_rand.NewSource(seed))
    68	protoMsg := NewPopulatedProtoTypes(popr, true)
    69	j := &jsonpb.Marshaler{}
    70	protoData, err := j.MarshalToString(protoMsg)
    71	if err != nil {
    72		t.Fatal(err)
    73	}
    74	stdMsg := &StdTypes{}
    75	if err2 := jsonpb.UnmarshalString(protoData, stdMsg); err2 != nil {
    76		t.Fatal(err)
    77	}
    78	stdData, err := j.MarshalToString(stdMsg)
    79	if err != nil {
    80		t.Fatal(err)
    81	}
    82	protoMsgOut := &ProtoTypes{}
    83	if err3 := jsonpb.UnmarshalString(stdData, protoMsgOut); err3 != nil {
    84		t.Fatal(err)
    85	}
    86	if !protoMsg.Equal(protoMsgOut) {
    87		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
    88	}
    89}
    90
    91func TestFullCircleRepProtoToStd(t *testing.T) {
    92	seed := time.Now().UnixNano()
    93	popr := math_rand.New(math_rand.NewSource(seed))
    94	protoMsg := NewPopulatedRepProtoTypes(popr, true)
    95	protoData, err := proto.Marshal(protoMsg)
    96	if err != nil {
    97		t.Fatal(err)
    98	}
    99	stdMsg := &RepStdTypes{}
   100	if err2 := proto.Unmarshal(protoData, stdMsg); err2 != nil {
   101		t.Fatal(err)
   102	}
   103	stdData, err := proto.Marshal(stdMsg)
   104	if err != nil {
   105		t.Fatal(err)
   106	}
   107	protoMsgOut := &RepProtoTypes{}
   108	if err3 := proto.Unmarshal(stdData, protoMsgOut); err3 != nil {
   109		t.Fatal(err)
   110	}
   111	if !protoMsg.Equal(protoMsgOut) {
   112		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   113	}
   114}
   115
   116func TestJsonFullCircleRepProtoToStd(t *testing.T) {
   117	seed := time.Now().UnixNano()
   118	popr := math_rand.New(math_rand.NewSource(seed))
   119	protoMsg := NewPopulatedRepProtoTypes(popr, true)
   120	j := &jsonpb.Marshaler{}
   121	protoData, err := j.MarshalToString(protoMsg)
   122	if err != nil {
   123		t.Fatal(err)
   124	}
   125	stdMsg := &RepStdTypes{}
   126	if err2 := jsonpb.UnmarshalString(protoData, stdMsg); err2 != nil {
   127		t.Fatal(err)
   128	}
   129	stdData, err := j.MarshalToString(stdMsg)
   130	if err != nil {
   131		t.Fatal(err)
   132	}
   133	protoMsgOut := &RepProtoTypes{}
   134	if err3 := jsonpb.UnmarshalString(stdData, protoMsgOut); err3 != nil {
   135		t.Fatal(err)
   136	}
   137	if !protoMsg.Equal(protoMsgOut) {
   138		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   139	}
   140}
   141
   142
   143func TestFullCircleMapProtoToStd(t *testing.T) {
   144	seed := time.Now().UnixNano()
   145	popr := math_rand.New(math_rand.NewSource(seed))
   146	protoMsg := NewPopulatedMapProtoTypes(popr, true)
   147	protoData, err := proto.Marshal(protoMsg)
   148	if err != nil {
   149		t.Fatal(err)
   150	}
   151	stdMsg := &MapStdTypes{}
   152	if err2 := proto.Unmarshal(protoData, stdMsg); err2 != nil {
   153		t.Fatal(err)
   154	}
   155	stdData, err := proto.Marshal(stdMsg)
   156	if err != nil {
   157		t.Fatal(err)
   158	}
   159	protoMsgOut := &MapProtoTypes{}
   160	if err3 := proto.Unmarshal(stdData, protoMsgOut); err3 != nil {
   161		t.Fatal(err)
   162	}
   163	if !protoMsg.Equal(protoMsgOut) {
   164		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   165	}
   166}
   167
   168func TestJsonFullCircleMapProtoToStd(t *testing.T) {
   169	seed := time.Now().UnixNano()
   170	popr := math_rand.New(math_rand.NewSource(seed))
   171	protoMsg := NewPopulatedMapProtoTypes(popr, true)
   172	j := &jsonpb.Marshaler{}
   173	protoData, err := j.MarshalToString(protoMsg)
   174	if err != nil {
   175		t.Fatal(err)
   176	}
   177	stdMsg := &MapStdTypes{}
   178	if err2 := jsonpb.UnmarshalString(protoData, stdMsg); err2 != nil {
   179		t.Fatal(err)
   180	}
   181	stdData, err := j.MarshalToString(stdMsg)
   182	if err != nil {
   183		t.Fatal(err)
   184	}
   185	protoMsgOut := &MapProtoTypes{}
   186	if err3 := jsonpb.UnmarshalString(stdData, protoMsgOut); err3 != nil {
   187		t.Fatal(err)
   188	}
   189	if !protoMsg.Equal(protoMsgOut) {
   190		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   191	}
   192}
   193
   194func TestFullCircleOneofProtoToStd(t *testing.T) {
   195	seed := time.Now().UnixNano()
   196	popr := math_rand.New(math_rand.NewSource(seed))
   197	protoMsg := NewPopulatedOneofProtoTypes(popr, true)
   198	protoData, err := proto.Marshal(protoMsg)
   199	if err != nil {
   200		t.Fatal(err)
   201	}
   202	stdMsg := &OneofStdTypes{}
   203	if err2 := proto.Unmarshal(protoData, stdMsg); err2 != nil {
   204		t.Fatal(err)
   205	}
   206	stdData, err := proto.Marshal(stdMsg)
   207	if err != nil {
   208		t.Fatal(err)
   209	}
   210	protoMsgOut := &OneofProtoTypes{}
   211	if err3 := proto.Unmarshal(stdData, protoMsgOut); err3 != nil {
   212		t.Fatal(err)
   213	}
   214	if !protoMsg.Equal(protoMsgOut) {
   215		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   216	}
   217}
   218
   219func TestJsonFullCircleOneofProtoToStd(t *testing.T) {
   220	seed := time.Now().UnixNano()
   221	popr := math_rand.New(math_rand.NewSource(seed))
   222	protoMsg := NewPopulatedOneofProtoTypes(popr, true)
   223	j := &jsonpb.Marshaler{}
   224	protoData, err := j.MarshalToString(protoMsg)
   225	if err != nil {
   226		t.Fatal(err)
   227	}
   228	stdMsg := &OneofStdTypes{}
   229	if err2 := jsonpb.UnmarshalString(protoData, stdMsg); err2 != nil {
   230		t.Fatal(err)
   231	}
   232	stdData, err := j.MarshalToString(stdMsg)
   233	if err != nil {
   234		t.Fatal(err)
   235	}
   236	protoMsgOut := &OneofProtoTypes{}
   237	if err3 := jsonpb.UnmarshalString(stdData, protoMsgOut); err3 != nil {
   238		t.Fatal(err)
   239	}
   240	if !protoMsg.Equal(protoMsgOut) {
   241		t.Fatalf("want %#v got %#v", protoMsg, protoMsgOut)
   242	}
   243}

View as plain text