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