Example #1
0
void BitSetTest()
{
  size_t nbits = 48;

  BitSet *s = BitSet::MakeInstance(nbits);

  // fprintf(stderr,"%ld, %ld vs %ld \n", sizeof(BitSet), s->SizeOf(), (( (nbits+1) )/8 - 1) + sizeof(BitSet));
  assert(s->SizeOf() == (((nbits + 1)) / 8 - 1) + sizeof(BitSet));

  for (size_t b = 0; b < nbits; ++b) {
    s->SetBitNumber(b, (bool)(b % 3)); // every 3rd bit is zero.
  }

  CheckValues(s, nbits);

  s->ResetAllBits();

  for (size_t b = 0; b < nbits; ++b) {
    assert(compare(b, s->TestBitNumber(b) == false, true)); // All zeros.
  }

  for (size_t b = 0; b < nbits; ++b) {
    s->SetBitNumber(b, true);
  }

  for (size_t b = 0; b < nbits; ++b) {
    assert(compare(b, s->TestBitNumber(b) == true, true)); // All zeros.
  }

  for (size_t b = 0; b < nbits; ++b) {
    if (!(bool)(b % 3)) {
      s->ResetBitNumber(b); // every 3rd bit is zero.
    }
  }

  CheckValues(s, nbits);
  delete s;
}