aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/BitVectorTest.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-02-10 05:54:04 +0000
committerDan Gohman <gohman@apple.com>2010-02-10 05:54:04 +0000
commite69b99baafc4cf88d2c600da8d637073abe24704 (patch)
tree211be789daf6a56d36875dff7ed21d65dcb2d402 /llvm/unittests/ADT/BitVectorTest.cpp
parent605474463f9eca6f241c81ac7a3b2eb73f445b21 (diff)
downloadllvm-e69b99baafc4cf88d2c600da8d637073abe24704.zip
llvm-e69b99baafc4cf88d2c600da8d637073abe24704.tar.gz
llvm-e69b99baafc4cf88d2c600da8d637073abe24704.tar.bz2
Implement operators |=, &=, and ^= for SmallBitVector, and remove the
restriction in BitVector for |= and ^= that the operand must be the same length. llvm-svn: 95768
Diffstat (limited to 'llvm/unittests/ADT/BitVectorTest.cpp')
-rw-r--r--llvm/unittests/ADT/BitVectorTest.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/BitVectorTest.cpp b/llvm/unittests/ADT/BitVectorTest.cpp
index f04eb60..4d4f5fd 100644
--- a/llvm/unittests/ADT/BitVectorTest.cpp
+++ b/llvm/unittests/ADT/BitVectorTest.cpp
@@ -138,5 +138,45 @@ TEST(BitVectorTest, TrivialOperation) {
EXPECT_TRUE(Vec.empty());
}
+TEST(BitVectorTest, CompoundAssignment) {
+ BitVector A;
+ A.resize(10);
+ A.set(4);
+ A.set(7);
+
+ BitVector 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);
}
+
+}
+
#endif