[ADT] Add SparseBitVector::find_last().

Differential Revision: https://reviews.llvm.org/D28817

llvm-svn: 292288
This commit is contained in:
Zachary Turner
2017-01-17 23:09:21 +00:00
parent 1d8c2ce97e
commit c095f6a037
2 changed files with 58 additions and 0 deletions

View File

@@ -127,4 +127,43 @@ TEST(SparseBitVectorTest, SelfAssignment) {
EXPECT_TRUE(Vec.empty());
}
TEST(SparseBitVectorTest, Find) {
SparseBitVector<> Vec;
Vec.set(1);
EXPECT_EQ(1, Vec.find_first());
EXPECT_EQ(1, Vec.find_last());
Vec.set(2);
EXPECT_EQ(1, Vec.find_first());
EXPECT_EQ(2, Vec.find_last());
Vec.set(0);
Vec.set(3);
EXPECT_EQ(0, Vec.find_first());
EXPECT_EQ(3, Vec.find_last());
Vec.reset(1);
Vec.reset(0);
Vec.reset(3);
EXPECT_EQ(2, Vec.find_first());
EXPECT_EQ(2, Vec.find_last());
// Set some large bits to ensure we are pulling bits from more than just a
// single bitword.
Vec.set(500);
Vec.set(2000);
Vec.set(3000);
Vec.set(4000);
Vec.reset(2);
EXPECT_EQ(500, Vec.find_first());
EXPECT_EQ(4000, Vec.find_last());
Vec.reset(500);
Vec.reset(3000);
Vec.reset(4000);
EXPECT_EQ(2000, Vec.find_first());
EXPECT_EQ(2000, Vec.find_last());
Vec.clear();
}
}