MCPcopy Create free account
hub / github.com/RangeNetworks/openbts / ByteVectorTest

Function ByteVectorTest

GPRS/ByteVector.cpp:550–663  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

548
549#ifdef TEST
550void 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());

Callers 1

mainFunction · 0.85

Calls 14

ByteVectorClass · 0.85
getByteMethod · 0.80
setField2Method · 0.80
getField2Method · 0.80
getFieldMethod · 0.80
getBit2Method · 0.80
setFieldMethod · 0.80
setAppendPMethod · 0.80
sizeBitsMethod · 0.80
segmentTempMethod · 0.80
fillMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected