TEST(ClusteredBitVector, Copies) { ClusteredBitVector orig; orig.appendClearBits(71); ClusteredBitVector copy = orig; ClusteredBitVector vec; vec = copy; EXPECT_EQ(71u, vec.size()); EXPECT_EQ(71u, copy.size()); EXPECT_EQ(71u, orig.size()); EXPECT_EQ(false, vec[64]); EXPECT_EQ(false, copy[64]); EXPECT_EQ(false, orig[64]); }
static void checkConsistency(const Twine &name, const ClusteredBitVector &cbv, const std::vector<bool> &vec, unsigned depth) { auto finish = [=]() { for (unsigned j = depth; j != 0; --j) { llvm::outs().indent(2 * (j-1)) << "}\n"; } abort(); }; auto n = cbv.size(); if (n != vec.size()) { llvm::outs().indent(2 * depth) << "assert(" << name << ".size() == " << vec.size() << ");\n"; finish(); } for (auto i = 0; i != n; ++i) { if (cbv[i] != vec[i]) { llvm::outs().indent(2 * depth) << "assert(" << name << "[" << i << "] == " << (vec[i] ? "true" : "false") << ");\n"; finish(); } } }
TEST(ClusteredBitVector, AddAdd) { ClusteredBitVector vec; vec.add(8, 206); vec.add(17, 56854); EXPECT_EQ(25u, vec.size()); EXPECT_EQ(true, vec[9]); }
TEST(ClusteredBitVector, Add) { ClusteredBitVector vec; vec.add(31, 2133572605); EXPECT_EQ(31u, vec.size()); EXPECT_EQ(true, vec[0]); EXPECT_EQ(false, vec[1]); EXPECT_EQ(true, vec[30]); }
TEST(ClusteredBitVector, AppendSetBits) { ClusteredBitVector vec; vec.add(23, 7988315); vec.appendSetBits(77); EXPECT_EQ(100u, vec.size()); EXPECT_EQ(true, vec[0]); EXPECT_EQ(true, vec[30]); EXPECT_EQ(true, vec[70]); }
TEST(ClusteredBitVector, CopyClearIntoAllocated) { ClusteredBitVector temp; temp.appendSetBits(94); ClusteredBitVector orig; orig.appendClearBits(71); ClusteredBitVector copy = orig; ClusteredBitVector vec; vec = temp; vec = copy; EXPECT_EQ(71u, vec.size()); EXPECT_EQ(71u, copy.size()); EXPECT_EQ(71u, orig.size()); EXPECT_EQ(false, vec[64]); EXPECT_EQ(false, copy[64]); EXPECT_EQ(false, orig[64]); }
TEST(ClusteredBitVector, AddMoveAdd) { ClusteredBitVector orig; orig.add(16, 41010); ClusteredBitVector vec; ClusteredBitVector temp = std::move(orig); vec = std::move(temp); EXPECT_EQ(0u, temp.size()); vec.add(28, 146898948); EXPECT_EQ(true, vec[32]); }
TEST(ClusteredBitVector, AppendEmptyAfterAdd) { ClusteredBitVector vec; vec.add(31, 2133572605); ClusteredBitVector emptyVec; vec.append(emptyVec); EXPECT_EQ(31u, vec.size()); EXPECT_EQ(true, vec[0]); EXPECT_EQ(false, vec[1]); EXPECT_EQ(true, vec[30]); }