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; }