1 package kotlinx.serialization.protobuf 2 3 import kotlinx.serialization.HexConverter 4 import kotlinx.serialization.Serializable 5 import kotlinx.serialization.decodeFromByteArray 6 import kotlinx.serialization.encodeToByteArray 7 import kotlin.test.Test 8 import kotlin.test.assertEquals 9 10 class ProtobufHugeClassTest { 11 @Serializable 12 data class Lists64( 13 val field0: List<Int>, 14 val field1: List<Int>, 15 val field2: List<Int>, 16 val field3: List<Int>, 17 val field4: List<Int>, 18 val field5: List<Int>, 19 val field6: List<Int>, 20 val field7: List<Int>, 21 val field8: List<Int>, 22 val field9: List<Int>, 23 24 val field10: List<Int>, 25 val field11: List<Int>, 26 val field12: List<Int>, 27 val field13: List<Int>, 28 val field14: List<Int>, 29 val field15: List<Int>, 30 val field16: List<Int>, 31 val field17: List<Int>, 32 val field18: List<Int>, 33 val field19: List<Int>, 34 35 val field20: List<Int>, 36 val field21: List<Int>, 37 val field22: List<Int>, 38 val field23: List<Int>, 39 val field24: List<Int>, 40 val field25: List<Int>, 41 val field26: List<Int>, 42 val field27: List<Int>, 43 val field28: List<Int>, 44 val field29: List<Int>, 45 46 val field30: List<Int>, 47 val field31: List<Int>, 48 val field32: List<Int>, 49 val field33: List<Int>, 50 val field34: List<Int>, 51 val field35: List<Int>, 52 val field36: List<Int>, 53 val field37: List<Int>, 54 val field38: List<Int>, 55 val field39: List<Int>, 56 57 val field40: List<Int>, 58 val field41: List<Int>, 59 val field42: List<Int>, 60 val field43: List<Int>, 61 val field44: List<Int>, 62 val field45: List<Int>, 63 val field46: List<Int>, 64 val field47: List<Int>, 65 val field48: List<Int>, 66 val field49: List<Int>, 67 68 val field50: List<Int>, 69 val field51: List<Int>, 70 val field52: List<Int>, 71 val field53: List<Int>, 72 val field54: List<Int>, 73 val field55: List<Int>, 74 val field56: List<Int>, 75 val field57: List<Int>, 76 val field58: List<Int>, 77 val field59: List<Int>, 78 79 val field60: List<Int>, 80 val field61: List<Int>, 81 val field62: List<Int>, 82 val field63: List<Int> 83 ) 84 85 @Serializable 86 data class Values70( 87 val field0: Int?, 88 val field1: Int?, 89 val field2: Int?, 90 val field3: Int?, 91 val field4: Int?, 92 val field5: Int?, 93 val field6: Int?, 94 val field7: Int?, 95 val field8: Int?, 96 val field9: Int?, 97 98 val field10: Int?, 99 val field11: Int?, 100 val field12: Int?, 101 val field13: Int?, 102 val field14: Int?, 103 val field15: Int?, 104 val field16: Int?, 105 val field17: Int?, 106 val field18: Int?, 107 val field19: Int?, 108 109 val field20: Int?, 110 val field21: Int?, 111 val field22: Int?, 112 val field23: Int?, 113 val field24: Int?, 114 val field25: Int?, 115 val field26: Int?, 116 val field27: Int?, 117 val field28: Int?, 118 val field29: Int?, 119 120 val field30: Int?, 121 val field31: Int?, 122 val field32: Int?, 123 val field33: Int?, 124 val field34: Int?, 125 val field35: Int?, 126 val field36: Int?, 127 val field37: Int?, 128 val field38: Int?, 129 val field39: Int?, 130 131 val field40: Int?, 132 val field41: Int?, 133 val field42: Int?, 134 val field43: Int?, 135 val field44: Int?, 136 val field45: Int?, 137 val field46: Int?, 138 val field47: Int?, 139 val field48: Int?, 140 val field49: Int?, 141 142 val field50: Int?, 143 val field51: Int?, 144 val field52: Int?, 145 val field53: Int?, 146 val field54: Int?, 147 val field55: Int?, 148 val field56: Int?, 149 val field57: Int?, 150 val field58: Int?, 151 val field59: Int?, 152 153 val field60: Int?, 154 val field61: Int?, 155 val field62: Int?, 156 val field63: Int?, 157 val field64: Int?, 158 val field65: Int?, 159 val field66: Int?, 160 val field67: Int?, 161 val field68: Int?, 162 val field69: Int? 163 ) 164 165 @Serializable 166 data class Values128( 167 val field0: Int?, 168 val field1: Int?, 169 val field2: Int?, 170 val field3: Int?, 171 val field4: Int?, 172 val field5: Int?, 173 val field6: Int?, 174 val field7: Int?, 175 val field8: Int?, 176 val field9: Int?, 177 178 val field10: Int?, 179 val field11: Int?, 180 val field12: Int?, 181 val field13: Int?, 182 val field14: Int?, 183 val field15: Int?, 184 val field16: Int?, 185 val field17: Int?, 186 val field18: Int?, 187 val field19: Int?, 188 189 val field20: Int?, 190 val field21: Int?, 191 val field22: Int?, 192 val field23: Int?, 193 val field24: Int?, 194 val field25: Int?, 195 val field26: Int?, 196 val field27: Int?, 197 val field28: Int?, 198 val field29: Int?, 199 200 val field30: Int?, 201 val field31: Int?, 202 val field32: Int?, 203 val field33: Int?, 204 val field34: Int?, 205 val field35: Int?, 206 val field36: Int?, 207 val field37: Int?, 208 val field38: Int?, 209 val field39: Int?, 210 211 val field40: Int?, 212 val field41: Int?, 213 val field42: Int?, 214 val field43: Int?, 215 val field44: Int?, 216 val field45: Int?, 217 val field46: Int?, 218 val field47: Int?, 219 val field48: Int?, 220 val field49: Int?, 221 222 val field50: Int?, 223 val field51: Int?, 224 val field52: Int?, 225 val field53: Int?, 226 val field54: Int?, 227 val field55: Int?, 228 val field56: Int?, 229 val field57: Int?, 230 val field58: Int?, 231 val field59: Int?, 232 233 val field60: Int?, 234 val field61: Int?, 235 val field62: Int?, 236 val field63: Int?, 237 val field64: Int?, 238 val field65: Int?, 239 val field66: Int?, 240 val field67: Int?, 241 val field68: Int?, 242 val field69: Int?, 243 244 val field70: Int?, 245 val field71: Int?, 246 val field72: Int?, 247 val field73: Int?, 248 val field74: Int?, 249 val field75: Int?, 250 val field76: Int?, 251 val field77: Int?, 252 val field78: Int?, 253 val field79: Int?, 254 255 val field80: Int?, 256 val field81: Int?, 257 val field82: Int?, 258 val field83: Int?, 259 val field84: Int?, 260 val field85: Int?, 261 val field86: Int?, 262 val field87: Int?, 263 val field88: Int?, 264 val field89: Int?, 265 266 val field90: Int?, 267 val field91: Int?, 268 val field92: Int?, 269 val field93: Int?, 270 val field94: Int?, 271 val field95: Int?, 272 val field96: Int?, 273 val field97: Int?, 274 val field98: Int?, 275 val field99: Int?, 276 277 val field100: Int?, 278 val field101: Int?, 279 val field102: Int?, 280 val field103: Int?, 281 val field104: Int?, 282 val field105: Int?, 283 val field106: Int?, 284 val field107: Int?, 285 val field108: Int?, 286 val field109: Int?, 287 288 val field110: Int?, 289 val field111: Int?, 290 val field112: Int?, 291 val field113: Int?, 292 val field114: Int?, 293 val field115: Int?, 294 val field116: Int?, 295 val field117: Int?, 296 val field118: Int?, 297 val field119: Int?, 298 299 val field120: Int?, 300 val field121: Int?, 301 val field122: Int?, 302 val field123: Int?, 303 val field124: Int?, 304 val field125: Int?, 305 val field126: Int?, 306 val field127: Int? 307 ) 308 @Serializable 309 data class Values130( 310 val field0: Int?, 311 val field1: Int?, 312 val field2: Int?, 313 val field3: Int?, 314 val field4: Int?, 315 val field5: Int?, 316 val field6: Int?, 317 val field7: Int?, 318 val field8: Int?, 319 val field9: Int?, 320 321 val field10: Int?, 322 val field11: Int?, 323 val field12: Int?, 324 val field13: Int?, 325 val field14: Int?, 326 val field15: Int?, 327 val field16: Int?, 328 val field17: Int?, 329 val field18: Int?, 330 val field19: Int?, 331 332 val field20: Int?, 333 val field21: Int?, 334 val field22: Int?, 335 val field23: Int?, 336 val field24: Int?, 337 val field25: Int?, 338 val field26: Int?, 339 val field27: Int?, 340 val field28: Int?, 341 val field29: Int?, 342 343 val field30: Int?, 344 val field31: Int?, 345 val field32: Int?, 346 val field33: Int?, 347 val field34: Int?, 348 val field35: Int?, 349 val field36: Int?, 350 val field37: Int?, 351 val field38: Int?, 352 val field39: Int?, 353 354 val field40: Int?, 355 val field41: Int?, 356 val field42: Int?, 357 val field43: Int?, 358 val field44: Int?, 359 val field45: Int?, 360 val field46: Int?, 361 val field47: Int?, 362 val field48: Int?, 363 val field49: Int?, 364 365 val field50: Int?, 366 val field51: Int?, 367 val field52: Int?, 368 val field53: Int?, 369 val field54: Int?, 370 val field55: Int?, 371 val field56: Int?, 372 val field57: Int?, 373 val field58: Int?, 374 val field59: Int?, 375 376 val field60: Int?, 377 val field61: Int?, 378 val field62: Int?, 379 val field63: Int?, 380 val field64: Int?, 381 val field65: Int?, 382 val field66: Int?, 383 val field67: Int?, 384 val field68: Int?, 385 val field69: Int?, 386 387 val field70: Int?, 388 val field71: Int?, 389 val field72: Int?, 390 val field73: Int?, 391 val field74: Int?, 392 val field75: Int?, 393 val field76: Int?, 394 val field77: Int?, 395 val field78: Int?, 396 val field79: Int?, 397 398 val field80: Int?, 399 val field81: Int?, 400 val field82: Int?, 401 val field83: Int?, 402 val field84: Int?, 403 val field85: Int?, 404 val field86: Int?, 405 val field87: Int?, 406 val field88: Int?, 407 val field89: Int?, 408 409 val field90: Int?, 410 val field91: Int?, 411 val field92: Int?, 412 val field93: Int?, 413 val field94: Int?, 414 val field95: Int?, 415 val field96: Int?, 416 val field97: Int?, 417 val field98: Int?, 418 val field99: Int?, 419 420 val field100: Int?, 421 val field101: Int?, 422 val field102: Int?, 423 val field103: Int?, 424 val field104: Int?, 425 val field105: Int?, 426 val field106: Int?, 427 val field107: Int?, 428 val field108: Int?, 429 val field109: Int?, 430 431 val field110: Int?, 432 val field111: Int?, 433 val field112: Int?, 434 val field113: Int?, 435 val field114: Int?, 436 val field115: Int?, 437 val field116: Int?, 438 val field117: Int?, 439 val field118: Int?, 440 val field119: Int?, 441 442 val field120: Int?, 443 val field121: Int?, 444 val field122: Int?, 445 val field123: Int?, 446 val field124: Int?, 447 val field125: Int?, 448 val field126: Int?, 449 val field127: Int?, 450 val field128: Int?, 451 val field129: Int? 452 ) 453 454 private val lists64: Lists64 = 455 Lists64( 456 emptyList(), 457 listOf(1, 42), 458 emptyList(), 459 emptyList(), 460 emptyList(), 461 emptyList(), 462 emptyList(), 463 emptyList(), 464 emptyList(), 465 emptyList(), 466 467 emptyList(), 468 emptyList(), 469 listOf(12, 43), 470 emptyList(), 471 emptyList(), 472 emptyList(), 473 emptyList(), 474 emptyList(), 475 emptyList(), 476 emptyList(), 477 478 emptyList(), 479 emptyList(), 480 emptyList(), 481 emptyList(), 482 emptyList(), 483 emptyList(), 484 emptyList(), 485 emptyList(), 486 emptyList(), 487 emptyList(), 488 489 emptyList(), 490 emptyList(), 491 emptyList(), 492 emptyList(), 493 emptyList(), 494 emptyList(), 495 emptyList(), 496 emptyList(), 497 emptyList(), 498 emptyList(), 499 500 emptyList(), 501 emptyList(), 502 emptyList(), 503 emptyList(), 504 emptyList(), 505 emptyList(), 506 emptyList(), 507 emptyList(), 508 emptyList(), 509 emptyList(), 510 511 emptyList(), 512 emptyList(), 513 emptyList(), 514 emptyList(), 515 emptyList(), 516 emptyList(), 517 emptyList(), 518 emptyList(), 519 emptyList(), 520 emptyList(), 521 522 emptyList(), 523 emptyList(), 524 emptyList(), 525 emptyList() 526 ) 527 528 private val values70: Values70 = Values70( 529 null, null, null, 3, null, null, null, null, null, null, 530 null, null, null, null, null, null, null, null, null, null, 531 null, null, null, null, null, null, null, null, null, null, 532 null, null, null, null, null, null, null, null, null, null, 533 null, null, 42, null, null, null, null, null, null, null, 534 null, null, null, null, null, null, null, null, null, null, 535 null, null, null, null, null, null, 66, null, null, null 536 ) 537 538 private val values128: Values128 = Values128( 539 null, null, null, 3, null, null, null, null, null, null, 540 null, null, null, null, null, null, null, null, null, null, 541 null, null, null, null, null, null, null, null, null, null, 542 null, null, null, null, null, null, null, null, null, null, 543 null, null, 42, null, null, null, null, null, null, null, 544 null, null, null, null, null, null, null, null, null, null, 545 null, null, null, null, null, null, 66, null, null, null, 546 null, null, null, null, null, null, null, null, null, null, 547 null, null, null, null, null, null, null, null, null, null, 548 null, null, null, null, null, null, null, null, null, null, 549 null, null, null, null, null, null, null, null, null, null, 550 null, null, null, null, null, 115, null, null, null, null, 551 null, null, null, null, null, null, null, null 552 ) 553 554 private val values130: Values130 = Values130( 555 null, null, null, 3, null, null, null, null, null, null, 556 null, null, null, null, null, null, null, null, null, null, 557 null, null, null, null, null, null, null, null, null, null, 558 null, null, null, null, null, null, null, null, null, null, 559 null, null, 42, null, null, null, null, null, null, null, 560 null, null, null, null, null, null, null, null, null, null, 561 null, null, null, null, null, null, 66, null, null, null, 562 null, null, null, null, null, null, null, null, null, null, 563 null, null, null, null, null, null, null, null, null, null, 564 null, null, null, null, null, null, null, null, null, null, 565 null, null, null, null, null, null, null, null, null, null, 566 null, null, null, null, null, 115, null, null, null, null, 567 null, null, null, null, null, null, null, null, 128, null 568 ) 569 570 @Test testLists64null571 fun testLists64() { 572 val bytes = ProtoBuf.encodeToByteArray(lists64) 573 println(HexConverter.printHexBinary(bytes)) 574 575 val decoded = ProtoBuf.decodeFromByteArray<Lists64>(bytes) 576 assertEquals(lists64, decoded) 577 } 578 579 @Test testValues70null580 fun testValues70() { 581 val bytes = ProtoBuf.encodeToByteArray(values70) 582 println(HexConverter.printHexBinary(bytes)) 583 584 val decoded = ProtoBuf.decodeFromByteArray<Values70>(bytes) 585 assertEquals(values70, decoded) 586 } 587 588 @Test testValues128null589 fun testValues128() { 590 val bytes = ProtoBuf.encodeToByteArray(values128) 591 println(HexConverter.printHexBinary(bytes)) 592 593 val decoded = ProtoBuf.decodeFromByteArray<Values128>(bytes) 594 assertEquals(values128, decoded) 595 } 596 597 @Test testValues130null598 fun testValues130() { 599 val bytes = ProtoBuf.encodeToByteArray(values130) 600 println(HexConverter.printHexBinary(bytes)) 601 602 val decoded = ProtoBuf.decodeFromByteArray<Values130>(bytes) 603 assertEquals(values130, decoded) 604 } 605 } 606