| 548 | |
| 549 | #ifdef TEST |
| 550 | void ByteVectorTest() |
| 551 | { |
| 552 | unsigned byten, bitn, l, i; |
| 553 | const unsigned bvlen = 20; |
| 554 | ByteVector bv(bvlen), bv2(bvlen), pat(bvlen); |
| 555 | BitVector bitv(64); |
| 556 | int printall = 0; |
| 557 | int tests = 0; |
| 558 | |
| 559 | ByteVector bctest = ByteVector("12345"); |
| 560 | for (i = 0; i < 5; i++) { |
| 561 | assert(bctest.getByte(i) == '1'+i); |
| 562 | } |
| 563 | |
| 564 | bv.fill(3); |
| 565 | for (i = 0; i < bvlen; i++) { |
| 566 | assert(bv.getByte(i) == 3); |
| 567 | } |
| 568 | |
| 569 | for (byten = 0; byten <= 1; byten++) { |
| 570 | for (bitn = 0; bitn <= 7; bitn++) { |
| 571 | for (l = 1; l <= 33; l++) { |
| 572 | tests++; |
| 573 | uint64_t val = 0xffffffffffull & ((1ull<<l)-1); |
| 574 | // Test setField vs getField. |
| 575 | bv.fill(3); // Pattern we can check for after the test. |
| 576 | pat.fill(3); |
| 577 | bv.setField2(byten,bitn,val,l); |
| 578 | if (printall) { |
| 579 | std::cout<<"ok:"<<LOGVAR(byten)<<LOGVAR(bitn)<<LOGVAR(l) |
| 580 | <<LOGVAR(val)<<" result="<<bv<<"\n"; |
| 581 | } |
| 582 | if (bv.getField2(byten,bitn,l) != val) { |
| 583 | std::cout<<"setField fail:"<<LOGVAR(byten)<<LOGVAR(bitn)<<LOGVAR(l) |
| 584 | <<LOGVAR(val)<<" result="<<bv<<"\n"; |
| 585 | break; |
| 586 | } |
| 587 | |
| 588 | // Make sure the pattern was not disturbed elsewhere. |
| 589 | if (byten == 1) { assert(bv.getByte(0) == 3); } |
| 590 | if (bitn) { assert(bv.getField2(byten,0,bitn) == pat.getField2(byten,0,bitn)); } |
| 591 | int endbit = byten*8 + bitn + l; |
| 592 | assert(bv.getField(endbit,30) == pat.getField(endbit,30)); |
| 593 | |
| 594 | // Test getBit vs getField. |
| 595 | for (int b1=0; b1<3; b1++) { |
| 596 | for (int k = 0; k <= 7; k++) { |
| 597 | tests++; |
| 598 | if (bv.getBit2(b1,k) != bv.getField2(b1,k,1)) { |
| 599 | std::cout<<"getBit fail:"<<LOGVAR(byten)<<LOGVAR(bitn)<<LOGVAR(l)<<"\n"; |
| 600 | } |
| 601 | } |
| 602 | } |
| 603 | |
| 604 | // Test setField vs BitVector::fillField |
| 605 | bitv.zero(); |
| 606 | bitv.fillField(byten*8+bitn,val,l); |
| 607 | bitv.pack(bv2.begin()); |
no test coverage detected