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 }