github.com/fananchong/cstruct-go@v0.0.0-20220616060855-b65d9a2f2e17/tests/nil_test.go (about)

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