github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/test/level_2/struct_complex_test.go (about)

     1  package test
     2  
     3  import (
     4  	"github.com/stretchr/testify/require"
     5  	"github.com/batchcorp/thrift-iterator/test"
     6  	"github.com/batchcorp/thrift-iterator/test/level_2/struct_complex_test"
     7  	"testing"
     8  )
     9  
    10  func Test_marshal_struct_complex(t *testing.T) {
    11  	should := require.New(t)
    12  	for _, c := range test.MarshalCombinations[:] {
    13  		var obj struct_complex_test.TestObject
    14  		obj.Av = false
    15  		obj.Ap = &obj.Av
    16  		obj.Bv = 1
    17  		obj.Bp = &obj.Bv
    18  		obj.Cv = 2
    19  		obj.Cp = &obj.Cv
    20  		obj.Dv = 3
    21  		obj.Dp = &obj.Dv
    22  		obj.Ev = 4
    23  		obj.Ep = &obj.Ev
    24  		obj.Fv = 5
    25  		obj.Fp = &obj.Fv
    26  		obj.Gv = 3.1415926
    27  		obj.Gp = &obj.Gv
    28  		obj.Hv = "6"                        // 15
    29  		obj.Hp = &obj.Hv                    // 16
    30  		obj.Iv = []byte{7}                  // 17
    31  		obj.Ip = &obj.Iv                    // 18
    32  		obj.Jv = []string{"8"}              // 19
    33  		obj.Jp = &obj.Jv                    // 20
    34  		obj.Kv = map[string]bool{"9": true} // 21
    35  		obj.Kp = &obj.Kv
    36  		obj.Lv = map[int32]struct_complex_test.SubType{10: {A: 10}}
    37  		obj.Lp = &obj.Lv
    38  		obj.Mv = map[int32]map[int32]string{
    39  			101: {102: "103"},
    40  		}
    41  		obj.Mp = &obj.Mv
    42  		obj.Nv = [][]string{
    43  			{"201", "202"},
    44  		}
    45  		obj.Np = &obj.Nv
    46  		obj.Ov = 11
    47  		obj.Op = &obj.Ov
    48  		obj.Pv = struct_complex_test.Enum_B
    49  		obj.Pp = &obj.Pv
    50  		obj.Qv = map[int32][]string{
    51  			12: {"1201", "1201"},
    52  		}
    53  		obj.Qp = &obj.Qv
    54  		obj.Rv = []map[string][]map[string]int32{
    55  			{"foo": []map[string]int32{
    56  				{"foo1": 1801},
    57  				{"foo2": 1802},
    58  			}},
    59  			{"bar": []map[string]int32{
    60  				{"bar1": 1803},
    61  				{"bar2": 1804},
    62  			}},
    63  		}
    64  		obj.Rp = &obj.Rv
    65  
    66  		output, err := c.Marshal(obj)
    67  		should.NoError(err)
    68  		output1, err := c.Marshal(&obj)
    69  		should.NoError(err)
    70  		should.Equal(output, output1)
    71  
    72  		var val *struct_complex_test.TestObject
    73  		should.NoError(c.Unmarshal(output, &val))
    74  
    75  		should.Equal(obj.Av, val.Av)
    76  		should.Equal(*obj.Ap, *val.Ap)
    77  		should.Equal(obj.Bv, val.Bv)
    78  		should.Equal(obj.Bv, *val.Bp)
    79  		should.Equal(obj.Cv, val.Cv)
    80  		should.Equal(obj.Cv, *val.Cp)
    81  		should.Equal(obj.Dv, val.Dv)
    82  		should.Equal(obj.Dv, *val.Dp)
    83  		should.Equal(obj.Ev, val.Ev)
    84  		should.Equal(obj.Ev, *val.Ep)
    85  		should.Equal(obj.Fv, val.Fv)
    86  		should.Equal(obj.Fv, *val.Fp)
    87  		should.Equal(obj.Gv, val.Gv)
    88  		should.Equal(obj.Gv, *val.Gp)
    89  		should.Equal(obj.Hv, val.Hv)
    90  		should.Equal(obj.Hv, *val.Hp)
    91  		should.Equal(obj.Iv, val.Iv)
    92  		should.Equal(obj.Iv, *val.Ip)
    93  		should.Equal(obj.Jv, val.Jv)
    94  		should.Equal(obj.Jv, *val.Jp)
    95  		should.Equal(obj.Kv, val.Kv)
    96  		should.Equal(obj.Kv, *val.Kp)
    97  		should.Equal(obj.Lv, val.Lv)
    98  		should.Equal(obj.Lv, *val.Lp)
    99  		should.Equal(obj.Mv, val.Mv)
   100  		should.Equal(obj.Mv, *val.Mp)
   101  		should.Equal(obj.Nv, val.Nv)
   102  		should.Equal(obj.Nv, *val.Np)
   103  		should.Equal(obj.Ov, val.Ov)
   104  		should.Equal(obj.Ov, *val.Op)
   105  		should.Equal(obj.Pv, val.Pv)
   106  		should.Equal(obj.Pv, *val.Pp)
   107  		should.Equal(obj.Qv, val.Qv)
   108  		should.Equal(obj.Qv, *val.Qp)
   109  		should.Equal(obj.Rv, val.Rv)
   110  		should.Equal(obj.Rv, *val.Rp)
   111  	}
   112  }