gitee.com/quant1x/gox@v1.7.6/encoding/binary/cstruct/tests/nil_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"fmt"
     5  	"gitee.com/quant1x/gox/encoding/binary/cstruct"
     6  	"testing"
     7  )
     8  
     9  type mystruct11 struct {
    10  	F5  []byte
    11  	S0  *mystruct2
    12  	F18 []bool
    13  	F19 []int8
    14  	F20 []uint8
    15  	F21 []int16
    16  	F22 []uint16
    17  	F23 []int32
    18  	F24 []uint32
    19  	F25 []int64
    20  	F26 []uint64
    21  	F27 []float32
    22  	F28 []float64
    23  	F29 []string
    24  	F30 []*mystruct4
    25  	F31 [][]byte
    26  	F32 [0]int8
    27  }
    28  
    29  func Test_NIL1(t *testing.T) {
    30  	a := &mystruct11{}
    31  	buf_l, _ := cstruct.Pack(a)
    32  	b := &mystruct11{}
    33  	if err := cstruct.Unpack(buf_l, b); err != nil {
    34  		fmt.Println(err)
    35  		t.Error("出错啦!#0")
    36  		return
    37  	}
    38  }
    39  
    40  func Test_NIL2(t *testing.T) {
    41  	a := &mystruct11{}
    42  	a.S0 = &mystruct2{}
    43  	a.S0.F3 = 988.07
    44  	a.S0.F4 = "world1"
    45  	a.S0.S1.F5 = []byte("world1")
    46  	a.F30 = []*mystruct4{&mystruct4{}, nil, &mystruct4{}}
    47  	a.F31 = [][]byte{[]byte("hello1"), []byte{}, nil, nil, []byte{}, []byte("world2")}
    48  
    49  	buf_l, _ := cstruct.Pack(a)
    50  	b := &mystruct11{}
    51  	if err := cstruct.Unpack(buf_l, b); err != nil {
    52  		fmt.Println(err)
    53  		t.Error("出错啦!#0")
    54  		return
    55  	}
    56  
    57  	if a.S0.F3 != b.S0.F3 {
    58  		t.Error("出错啦!#18")
    59  		return
    60  	}
    61  	t.Log(b.S0.F3)
    62  	if a.S0.F4 != b.S0.F4 {
    63  		t.Error("出错啦!#19")
    64  		return
    65  	}
    66  	t.Log(b.S0.F4)
    67  	if len(a.S0.S1.F5) != len(b.S0.S1.F5) {
    68  		t.Error("出错啦!#20")
    69  		return
    70  	}
    71  	t.Log(b.S0.S1.F5)
    72  	for i := 0; i < len(a.S0.S1.F5); i++ {
    73  		if a.S0.S1.F5[i] != b.S0.S1.F5[i] {
    74  			t.Error("出错啦!#20")
    75  			return
    76  		}
    77  	}
    78  
    79  	if len(a.F30) != len(b.F30) {
    80  		t.Error("出错啦!#33")
    81  		return
    82  	}
    83  	for i := 0; i < len(a.F30); i++ {
    84  		if a.F30[i] != nil && a.F30[i].F6 != b.F30[i].F6 {
    85  			t.Error("出错啦!#33")
    86  			return
    87  		}
    88  		if a.F30[i] != nil && a.F30[i].F7 != b.F30[i].F7 {
    89  			t.Error("出错啦!#33")
    90  			return
    91  		}
    92  	}
    93  	t.Log(b.F30)
    94  
    95  	if len(a.F31) != len(b.F31) {
    96  		t.Error("出错啦!#34")
    97  		return
    98  	}
    99  	for i := 0; i < len(a.F31); i++ {
   100  		if string(a.F31[i]) != string(b.F31[i]) {
   101  			t.Error("出错啦!#34")
   102  			return
   103  		}
   104  	}
   105  	t.Log(b.F31)
   106  }