TEST(ClusteredBitVector, SetClearBit) { ClusteredBitVector vec; vec.appendClearBits(64); vec.setBit(3); vec.setBit(7); vec.setBit(7); vec.setBit(63); EXPECT_EQ(3u, vec.count()); EXPECT_EQ(true, vec[3]); EXPECT_EQ(true, vec[7]); EXPECT_EQ(true, vec[63]); EXPECT_EQ(false, vec[0]); EXPECT_EQ(false, vec[14]); EXPECT_EQ(false, vec[62]); vec.clearBit(63); EXPECT_EQ(2u, vec.count()); EXPECT_EQ(false, vec[63]); }
TEST(ClusteredBitVector, Enumeration) { ClusteredBitVector temp; temp.appendClearBits(256); temp.setBit(64); temp.setBit(40); temp.setBit(39); temp.setBit(63); temp.setBit(201); using Opt = ComparableOptional<size_t>; auto enumerator = temp.enumerateSetBits(); EXPECT_EQ(Opt(39), enumerator.findNext()); EXPECT_EQ(Opt(40), enumerator.findNext()); EXPECT_EQ(Opt(63), enumerator.findNext()); EXPECT_EQ(Opt(64), enumerator.findNext()); EXPECT_EQ(Opt(201), enumerator.findNext()); EXPECT_EQ(Opt(), enumerator.findNext()); EXPECT_EQ(Opt(), enumerator.findNext()); EXPECT_EQ(Opt(), enumerator.findNext()); }