summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ADT/BitVectorTest.cpp
diff options
context:
space:
mode:
authorFrancis Visoiu Mistrih <fvisoiumistrih@apple.com>2017-05-17 01:07:53 +0000
committerFrancis Visoiu Mistrih <fvisoiumistrih@apple.com>2017-05-17 01:07:53 +0000
commitb52e0366008436f6f994ce94cb6ad0f51d65ba8a (patch)
treec6067844f69347f2f77a9094caff2644ddcffcf6 /llvm/unittests/ADT/BitVectorTest.cpp
parentde83fec0299ac4bae25d7e36ef30feddba2b48ad (diff)
downloadbcm5719-llvm-b52e0366008436f6f994ce94cb6ad0f51d65ba8a.tar.gz
bcm5719-llvm-b52e0366008436f6f994ce94cb6ad0f51d65ba8a.zip
BitVector: add iterators for set bits
Differential revision: https://reviews.llvm.org/D32060 llvm-svn: 303227
Diffstat (limited to 'llvm/unittests/ADT/BitVectorTest.cpp')
-rw-r--r--llvm/unittests/ADT/BitVectorTest.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/BitVectorTest.cpp b/llvm/unittests/ADT/BitVectorTest.cpp
index faf362abc9d..36a1a75a6c8 100644
--- a/llvm/unittests/ADT/BitVectorTest.cpp
+++ b/llvm/unittests/ADT/BitVectorTest.cpp
@@ -660,5 +660,34 @@ TYPED_TEST(BitVectorTest, EmptyVector) {
testEmpty(E);
}
+TYPED_TEST(BitVectorTest, Iterators) {
+ TypeParam Filled(10, true);
+ EXPECT_NE(Filled.set_bits_begin(), Filled.set_bits_end());
+ unsigned Counter = 0;
+ for (unsigned Bit : Filled.set_bits())
+ EXPECT_EQ(Bit, Counter++);
+
+ TypeParam Empty;
+ EXPECT_EQ(Empty.set_bits_begin(), Empty.set_bits_end());
+ for (unsigned Bit : Empty.set_bits()) {
+ (void)Bit;
+ EXPECT_TRUE(false);
+ }
+
+ TypeParam ToFill(100, false);
+ ToFill.set(0);
+ EXPECT_NE(ToFill.set_bits_begin(), ToFill.set_bits_end());
+ EXPECT_EQ(++ToFill.set_bits_begin(), ToFill.set_bits_end());
+ EXPECT_EQ(*ToFill.set_bits_begin(), 0U);
+ ToFill.reset(0);
+ EXPECT_EQ(ToFill.set_bits_begin(), ToFill.set_bits_end());
+
+ const unsigned List[] = {1, 10, 25, 99};
+ for (unsigned Num : List)
+ ToFill.set(Num);
+ unsigned i = 0;
+ for (unsigned Bit : ToFill.set_bits())
+ EXPECT_EQ(List[i++], Bit);
+}
}
#endif
OpenPOWER on IntegriCloud