Why do you run the tests for bv0 *and* for bv1? Surely, we can expect objects that are created in the same constructor to behave in the same way, can't we? Moreover, it would be better to test that the count and findpos result correspond to an empty bitvector. What you test is just that they are computed correctly from the bitvector, but not that the bitvector is actually empty. You are testing the correct computation of rank and select elsewhere already, so it seems unnecessary to do it again here.