mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Miscellaneous Fixes for SparseBitVector
Summary: 1. Fix return value in `SparseBitVector::operator&=`. 2. Add checks if SBV is being assigned is invoking SBV. Reviewers: dberlin Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11342 Committed on behalf of sl@ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242693 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user