TEST(ClusteredBitVector, MultiChunkAppend) {
  ClusteredBitVector temp;
  temp.appendSetBits(72);
  temp.appendClearBits(22);
  temp.appendSetBits(83);

  ClusteredBitVector vec;
  vec.add(16, 0x000000000000967b);
  vec.append(temp);
  EXPECT_EQ(true, vec[64]);
}
TEST(ClusteredBitVector, AssignAfterGrowth) {
  ClusteredBitVector temp;
  temp.appendClearBits(118);

  ClusteredBitVector vec;
  vec.appendSetBits(65);
  vec = std::move(temp);
  EXPECT_EQ(false, vec[64]);
}
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]);
}
Ejemplo n.º 4
0
ClusteredBitVector ClusteredBitVector::fromAPInt(const llvm::APInt &bits) {
  // This is not a very efficient algorithm.
  ClusteredBitVector result;
  for (unsigned i = 0, e = bits.getBitWidth(); i != e; ++i) {
    if (bits[i]) {
      result.appendSetBits(1);
    } else {
      result.appendClearBits(1);
    }
  }
  return result;
}
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]);
}