gitee.com/quant1x/gox@v1.21.2/encoding/binary/cstruct/tests/x_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 mystruct44 struct {
    10  	F37 uint16
    11  	F38 [5]int32
    12  }
    13  
    14  type mystruct4 struct {
    15  	F6 int8
    16  	F7 int16
    17  }
    18  
    19  type mystruct3 struct {
    20  	F5 []byte
    21  }
    22  
    23  type mystruct2 struct {
    24  	F3 float64
    25  	F4 string
    26  	S1 mystruct3
    27  }
    28  
    29  type mystruct1 struct {
    30  	F1  bool
    31  	F2  float32
    32  	F3  float64
    33  	F4  string
    34  	F5  []byte
    35  	F6  int8
    36  	F7  int16
    37  	F9  int32
    38  	F11 int64
    39  	F12 uint8
    40  	F13 uint16
    41  	S0  *mystruct2
    42  	S1  mystruct44
    43  	S2  mystruct44
    44  	S3  mystruct44
    45  	F15 uint32
    46  	F17 uint64
    47  	F18 []bool
    48  	F19 []int8
    49  	F20 []uint8
    50  	F21 []int16
    51  	F22 []uint16
    52  	F23 []int32
    53  	F24 []uint32
    54  	F25 []int64
    55  	F26 []uint64
    56  	F27 []float32
    57  	F28 []float64
    58  	F29 []string
    59  	F30 []*mystruct4
    60  	F31 [][]byte
    61  	F32 [5]int8
    62  	F33 [6]byte
    63  	F34 [7]uint8
    64  	F35 [4]bool
    65  }
    66  
    67  func Test_LE1(t *testing.T) {
    68  	a := &mystruct1{S0: &mystruct2{}}
    69  	a.F1 = true
    70  	a.F2 = 0.98
    71  	a.F3 = 999888888.777
    72  	a.F4 = "hello1hello2hello3hello4hello5hello6hello7hello8hello9hello0"
    73  	a.F5 = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
    74  	a.F6 = -128
    75  	a.F7 = -32768
    76  	a.F9 = -2147483648
    77  	a.F11 = -9223372036854775808
    78  	a.F12 = 255
    79  	a.F13 = 65535
    80  	a.F15 = 4294967295
    81  	a.F17 = 18446744073709551615
    82  	a.F18 = []bool{false, true, true, false, true}
    83  	a.F19 = []int8{1, -1, 0, 127, -128}
    84  	a.F20 = []uint8{0, 1, 2, 127, 255}
    85  	a.F21 = []int16{1, -1, 0, 32767, -32768}
    86  	a.F22 = []uint16{0, 1, 2, 32767, 65535}
    87  	a.F23 = []int32{1, -1, 0, 2147483647, -2147483648}
    88  	a.F24 = []uint32{0, 1, 2, 2147483647, 4294967295}
    89  	a.F25 = []int64{1, -1, 0, 9223372036854775807, -9223372036854775808}
    90  	a.F26 = []uint64{0, 1, 2, 9223372036854775807, 18446744073709551615}
    91  	a.F27 = []float32{0.98, -1, 0, -0.98}
    92  	a.F28 = []float64{0, 999888888.777, 2, -999888888.777}
    93  	a.F29 = []string{"hello", "", "world", "", "123"}
    94  	a.F30 = []*mystruct4{&mystruct4{1, 2}, &mystruct4{10, 20}, &mystruct4{100, 200}, &mystruct4{11, 21}}
    95  	a.F31 = [][]byte{[]byte("hello1"), []byte{}, []byte("world1"), []byte("hello2"), []byte{}, []byte("world2")}
    96  	a.F32 = [5]int8{0, 1, 2, 3, 4}
    97  	a.F33 = [6]byte{'h', 'e', 'l', 'l', 'o', '1'}
    98  	a.F34 = [7]uint8{0, 1, 2, 3, 4, 5, 6}
    99  	a.F35 = [4]bool{true, false, false, true}
   100  
   101  	a.S0.F3 = 988.07
   102  	a.S0.F4 = "world1"
   103  	a.S0.S1.F5 = []byte("world1")
   104  
   105  	a.S1.F37 = 65535
   106  	a.S1.F38 = [5]int32{1, -1, 0, 2147483647, -2147483648}
   107  	a.S2.F37 = 1
   108  	a.S2.F38 = [5]int32{1, -1, 0, 1, -2}
   109  	a.S3.F37 = 65535
   110  	a.S3.F38 = [5]int32{3, -3, 0, 3, -3}
   111  
   112  	test1(t, a)
   113  }
   114  
   115  func Test_LE2(t *testing.T) {
   116  	a := &mystruct1{S0: &mystruct2{}}
   117  	a.F1 = false
   118  	a.F2 = -0.98
   119  	a.F3 = -999888888.777
   120  	a.F4 = ""
   121  	a.F5 = []byte{}
   122  	a.F6 = 127
   123  	a.F7 = 32767
   124  	a.F9 = 2147483647
   125  	a.F11 = 9223372036854775807
   126  	a.F12 = 1
   127  	a.F13 = 1
   128  	a.F15 = 1
   129  	a.F17 = 1
   130  	a.F18 = []bool{}
   131  	a.F19 = []int8{}
   132  	a.F20 = []uint8{}
   133  	a.F21 = []int16{}
   134  	a.F22 = []uint16{}
   135  	a.F23 = []int32{}
   136  	a.F24 = []uint32{}
   137  	a.F25 = []int64{}
   138  	a.F26 = []uint64{}
   139  	a.F27 = []float32{}
   140  	a.F28 = []float64{}
   141  	a.F29 = []string{}
   142  	a.F30 = []*mystruct4{}
   143  	a.F31 = [][]byte{}
   144  
   145  	a.S0.F3 = 988.07
   146  	a.S0.F4 = "world2"
   147  	a.S0.S1.F5 = []byte("world2")
   148  
   149  	test1(t, a)
   150  }
   151  
   152  func test1(t *testing.T, a *mystruct1) {
   153  	buf_l, _ := cstruct.Pack(a)
   154  	b := &mystruct1{S0: &mystruct2{}}
   155  	if err := cstruct.Unpack(buf_l, b); err != nil {
   156  		fmt.Println(err)
   157  		t.Error("出错啦!#0")
   158  		return
   159  	}
   160  
   161  	if a.F1 != b.F1 {
   162  		t.Error("出错啦!#1")
   163  		return
   164  	}
   165  	t.Log(b.F1)
   166  	if a.F2 != b.F2 {
   167  		t.Error("出错啦!#2")
   168  		return
   169  	}
   170  	t.Log(b.F2)
   171  	if a.F3 != b.F3 {
   172  		t.Error("出错啦!#3")
   173  		return
   174  	}
   175  	t.Log(b.F3)
   176  	if a.F4 != b.F4 {
   177  		t.Error("出错啦!#4")
   178  		return
   179  	}
   180  	t.Log(b.F4)
   181  	if len(a.F5) != len(b.F5) {
   182  		t.Error("出错啦!#5")
   183  		return
   184  	}
   185  	t.Log(b.F5)
   186  	for i := 0; i < len(a.F5); i++ {
   187  		if a.F5[i] != a.F5[i] {
   188  			t.Error("出错啦!#5")
   189  			return
   190  		}
   191  	}
   192  	if a.F6 != b.F6 {
   193  		t.Error("出错啦!#6")
   194  		return
   195  	}
   196  	t.Log(b.F6)
   197  	if a.F7 != b.F7 {
   198  		t.Error("出错啦!#7")
   199  		return
   200  	}
   201  	t.Log(b.F7)
   202  	if a.F9 != b.F9 {
   203  		t.Error("出错啦!#9")
   204  		return
   205  	}
   206  	t.Log(b.F9)
   207  	if a.F11 != b.F11 {
   208  		t.Error("出错啦!#11")
   209  		return
   210  	}
   211  	t.Log(b.F11)
   212  	if a.F12 != b.F12 {
   213  		t.Error("出错啦!#12")
   214  		return
   215  	}
   216  	t.Log(b.F12)
   217  	if a.F13 != b.F13 {
   218  		t.Error("出错啦!#13")
   219  		return
   220  	}
   221  	t.Log(b.F13)
   222  	if a.F15 != b.F15 {
   223  		t.Error("出错啦!#15")
   224  		return
   225  	}
   226  	t.Log(b.F15)
   227  	if a.F17 != b.F17 {
   228  		t.Error("出错啦!#17")
   229  		return
   230  	}
   231  	t.Log(b.F17)
   232  	if a.S0.F3 != b.S0.F3 {
   233  		t.Error("出错啦!#18")
   234  		return
   235  	}
   236  	t.Log(b.S0.F3)
   237  	if a.S0.F4 != b.S0.F4 {
   238  		t.Error("出错啦!#19")
   239  		return
   240  	}
   241  	t.Log(b.S0.F4)
   242  	if len(a.S0.S1.F5) != len(b.S0.S1.F5) {
   243  		t.Error("出错啦!#20")
   244  		return
   245  	}
   246  	t.Log(b.S0.S1.F5)
   247  	for i := 0; i < len(a.S0.S1.F5); i++ {
   248  		if a.S0.S1.F5[i] != b.S0.S1.F5[i] {
   249  			t.Error("出错啦!#20")
   250  			return
   251  		}
   252  	}
   253  
   254  	if len(a.F18) != len(b.F18) {
   255  		t.Error("出错啦!#21")
   256  		return
   257  	}
   258  	for i := 0; i < len(a.F18); i++ {
   259  		if a.F18[i] != b.F18[i] {
   260  			t.Error("出错啦!#21")
   261  			return
   262  		}
   263  	}
   264  	t.Log(b.F18)
   265  
   266  	if len(a.F19) != len(b.F19) {
   267  		t.Error("出错啦!#22")
   268  		return
   269  	}
   270  	for i := 0; i < len(a.F19); i++ {
   271  		if a.F19[i] != b.F19[i] {
   272  			t.Error("出错啦!#22")
   273  			return
   274  		}
   275  	}
   276  	t.Log(b.F19)
   277  
   278  	if len(a.F20) != len(b.F20) {
   279  		t.Error("出错啦!#23")
   280  		return
   281  	}
   282  	for i := 0; i < len(a.F20); i++ {
   283  		if a.F20[i] != b.F20[i] {
   284  			t.Error("出错啦!#23")
   285  			return
   286  		}
   287  	}
   288  	t.Log(b.F20)
   289  
   290  	if len(a.F21) != len(b.F21) {
   291  		t.Error("出错啦!#24")
   292  		return
   293  	}
   294  	for i := 0; i < len(a.F21); i++ {
   295  		if a.F21[i] != b.F21[i] {
   296  			t.Error("出错啦!#24")
   297  			return
   298  		}
   299  	}
   300  	t.Log(b.F21)
   301  
   302  	if len(a.F22) != len(b.F22) {
   303  		t.Error("出错啦!#25")
   304  		return
   305  	}
   306  	for i := 0; i < len(a.F22); i++ {
   307  		if a.F22[i] != b.F22[i] {
   308  			t.Error("出错啦!#25")
   309  			return
   310  		}
   311  	}
   312  	t.Log(b.F22)
   313  
   314  	if len(a.F23) != len(b.F23) {
   315  		t.Error("出错啦!#26")
   316  		return
   317  	}
   318  	for i := 0; i < len(a.F23); i++ {
   319  		if a.F23[i] != b.F23[i] {
   320  			t.Error("出错啦!#26")
   321  			return
   322  		}
   323  	}
   324  	t.Log(b.F23)
   325  
   326  	if len(a.F24) != len(b.F24) {
   327  		t.Error("出错啦!#27")
   328  		return
   329  	}
   330  	for i := 0; i < len(a.F24); i++ {
   331  		if a.F24[i] != b.F24[i] {
   332  			t.Error("出错啦!#27")
   333  			return
   334  		}
   335  	}
   336  	t.Log(b.F24)
   337  
   338  	if len(a.F25) != len(b.F25) {
   339  		t.Error("出错啦!#28")
   340  		return
   341  	}
   342  	for i := 0; i < len(a.F25); i++ {
   343  		if a.F25[i] != b.F25[i] {
   344  			t.Error("出错啦!#28")
   345  			return
   346  		}
   347  	}
   348  	t.Log(b.F25)
   349  
   350  	if len(a.F26) != len(b.F26) {
   351  		t.Error("出错啦!#29")
   352  		return
   353  	}
   354  	for i := 0; i < len(a.F26); i++ {
   355  		if a.F26[i] != b.F26[i] {
   356  			t.Error("出错啦!#29")
   357  			return
   358  		}
   359  	}
   360  	t.Log(b.F26)
   361  
   362  	if len(a.F27) != len(b.F27) {
   363  		t.Error("出错啦!#30")
   364  		return
   365  	}
   366  	for i := 0; i < len(a.F27); i++ {
   367  		if a.F27[i] != b.F27[i] {
   368  			t.Error("出错啦!#30")
   369  			return
   370  		}
   371  	}
   372  	t.Log(b.F27)
   373  
   374  	if len(a.F28) != len(b.F28) {
   375  		t.Error("出错啦!#31")
   376  		return
   377  	}
   378  	for i := 0; i < len(a.F28); i++ {
   379  		if a.F28[i] != b.F28[i] {
   380  			t.Error("出错啦!#31")
   381  			return
   382  		}
   383  	}
   384  	t.Log(b.F28)
   385  
   386  	if len(a.F29) != len(b.F29) {
   387  		t.Error("出错啦!#32")
   388  		return
   389  	}
   390  	for i := 0; i < len(a.F29); i++ {
   391  		if a.F29[i] != b.F29[i] {
   392  			t.Error("出错啦!#32")
   393  			return
   394  		}
   395  	}
   396  	t.Log(b.F29)
   397  
   398  	if len(a.F30) != len(b.F30) {
   399  		t.Error("出错啦!#33")
   400  		return
   401  	}
   402  	for i := 0; i < len(a.F30); i++ {
   403  		if a.F30[i].F6 != b.F30[i].F6 {
   404  			t.Error("出错啦!#33")
   405  			return
   406  		}
   407  		if a.F30[i].F7 != b.F30[i].F7 {
   408  			t.Error("出错啦!#33")
   409  			return
   410  		}
   411  	}
   412  	t.Log(b.F30)
   413  
   414  	if len(a.F31) != len(b.F31) {
   415  		t.Error("出错啦!#34")
   416  		return
   417  	}
   418  	for i := 0; i < len(a.F31); i++ {
   419  		if string(a.F31[i]) != string(b.F31[i]) {
   420  			t.Error("出错啦!#34")
   421  			return
   422  		}
   423  	}
   424  	t.Log(b.F31)
   425  	t.Log(b.F32)
   426  	t.Log(b.F33)
   427  	t.Log(b.F34)
   428  	t.Log(b.F35)
   429  	t.Log(b.S1)
   430  	t.Log(b.S2)
   431  	t.Log(b.S3)
   432  }