diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
commit | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch) | |
tree | 5343938942df402b49ec7300a1c25a2d4ccd5821 /unittests/ADT/SparseBitVectorTest.cpp | |
parent | 31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff) |
Diffstat (limited to 'unittests/ADT/SparseBitVectorTest.cpp')
-rw-r--r-- | unittests/ADT/SparseBitVectorTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/unittests/ADT/SparseBitVectorTest.cpp b/unittests/ADT/SparseBitVectorTest.cpp index 9127225860ba..6cd4de35bca7 100644 --- a/unittests/ADT/SparseBitVectorTest.cpp +++ b/unittests/ADT/SparseBitVectorTest.cpp @@ -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(); +} } |