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 }