diff options
Diffstat (limited to 'unittests/ADT/SparseBitVectorTest.cpp')
-rw-r--r-- | unittests/ADT/SparseBitVectorTest.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/unittests/ADT/SparseBitVectorTest.cpp b/unittests/ADT/SparseBitVectorTest.cpp index d8fc5ce25db1..9127225860ba 100644 --- a/unittests/ADT/SparseBitVectorTest.cpp +++ b/unittests/ADT/SparseBitVectorTest.cpp @@ -33,4 +33,98 @@ TEST(SparseBitVectorTest, TrivialOperation) { EXPECT_FALSE(Vec.test(17)); } +TEST(SparseBitVectorTest, IntersectWith) { + SparseBitVector<> Vec, Other; + + Vec.set(1); + Other.set(1); + EXPECT_FALSE(Vec &= Other); + EXPECT_TRUE(Vec.test(1)); + + Vec.clear(); + Vec.set(5); + Other.clear(); + Other.set(6); + EXPECT_TRUE(Vec &= Other); + EXPECT_TRUE(Vec.empty()); + + Vec.clear(); + Vec.set(5); + Other.clear(); + Other.set(225); + EXPECT_TRUE(Vec &= Other); + EXPECT_TRUE(Vec.empty()); + + Vec.clear(); + Vec.set(225); + Other.clear(); + Other.set(5); + EXPECT_TRUE(Vec &= Other); + EXPECT_TRUE(Vec.empty()); +} + +TEST(SparseBitVectorTest, SelfAssignment) { + SparseBitVector<> Vec, Other; + + Vec.set(23); + Vec.set(234); + Vec = Vec; + EXPECT_TRUE(Vec.test(23)); + EXPECT_TRUE(Vec.test(234)); + + Vec.clear(); + Vec.set(17); + Vec.set(256); + EXPECT_FALSE(Vec |= Vec); + EXPECT_TRUE(Vec.test(17)); + EXPECT_TRUE(Vec.test(256)); + + Vec.clear(); + Vec.set(56); + Vec.set(517); + EXPECT_FALSE(Vec &= Vec); + EXPECT_TRUE(Vec.test(56)); + EXPECT_TRUE(Vec.test(517)); + + Vec.clear(); + Vec.set(99); + Vec.set(333); + EXPECT_TRUE(Vec.intersectWithComplement(Vec)); + EXPECT_TRUE(Vec.empty()); + EXPECT_FALSE(Vec.intersectWithComplement(Vec)); + + Vec.clear(); + Vec.set(28); + Vec.set(43); + Vec.intersectWithComplement(Vec, Vec); + EXPECT_TRUE(Vec.empty()); + + Vec.clear(); + Vec.set(42); + Vec.set(567); + Other.set(55); + Other.set(567); + Vec.intersectWithComplement(Vec, Other); + EXPECT_TRUE(Vec.test(42)); + EXPECT_FALSE(Vec.test(567)); + + Vec.clear(); + Vec.set(19); + Vec.set(21); + Other.clear(); + Other.set(19); + Other.set(31); + Vec.intersectWithComplement(Other, Vec); + EXPECT_FALSE(Vec.test(19)); + EXPECT_TRUE(Vec.test(31)); + + Vec.clear(); + Vec.set(1); + Other.clear(); + Other.set(59); + Other.set(75); + Vec.intersectWithComplement(Other, Other); + EXPECT_TRUE(Vec.empty()); +} + } |