diff options
author | Dan Gohman <gohman@apple.com> | 2010-02-10 05:54:04 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-02-10 05:54:04 +0000 |
commit | e7962c9897cf3ac5fc731702d5e5d8963fc5c723 (patch) | |
tree | 8b253c5e94fde2ccd7e0e403a2d70c487832a367 /unittests/ADT/SmallBitVectorTest.cpp | |
parent | 5d5a1e13a129e18ee6031fe6354acd2ab4d39f37 (diff) |
Implement operators |=, &=, and ^= for SmallBitVector, and remove the
restriction in BitVector for |= and ^= that the operand must be the
same length.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95768 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ADT/SmallBitVectorTest.cpp')
-rw-r--r-- | unittests/ADT/SmallBitVectorTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/unittests/ADT/SmallBitVectorTest.cpp b/unittests/ADT/SmallBitVectorTest.cpp index a5c60dec9b..8048b61d38 100644 --- a/unittests/ADT/SmallBitVectorTest.cpp +++ b/unittests/ADT/SmallBitVectorTest.cpp @@ -137,4 +137,43 @@ TEST(SmallBitVectorTest, TrivialOperation) { EXPECT_TRUE(Vec.empty()); } +TEST(SmallBitVectorTest, CompoundAssignment) { + SmallBitVector A; + A.resize(10); + A.set(4); + A.set(7); + + SmallBitVector B; + B.resize(50); + B.set(5); + B.set(18); + + A |= B; + EXPECT_TRUE(A.test(4)); + EXPECT_TRUE(A.test(5)); + EXPECT_TRUE(A.test(7)); + EXPECT_TRUE(A.test(18)); + EXPECT_EQ(A.count(), 4); + EXPECT_EQ(A.size(), 50); + + B.resize(10); + B.set(); + B.reset(2); + B.reset(7); + A &= B; + EXPECT_FALSE(A.test(2)); + EXPECT_FALSE(A.test(7)); + EXPECT_EQ(A.size(), 50); + EXPECT_EQ(A.count(), 2); + + B.resize(100); + B.set(); + + A ^= B; + EXPECT_TRUE(A.test(2)); + EXPECT_TRUE(A.test(7)); + EXPECT_EQ(A.size(), 100); + EXPECT_EQ(A.count(), 98); +} + } |