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 | e69b99baafc4cf88d2c600da8d637073abe24704 (patch) | |
| tree | 211be789daf6a56d36875dff7ed21d65dcb2d402 /llvm/unittests/ADT/BitVectorTest.cpp | |
| parent | 605474463f9eca6f241c81ac7a3b2eb73f445b21 (diff) | |
| download | llvm-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.cpp | 40 |
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 |
