diff options
Diffstat (limited to 'llvm/unittests/ADT/SparseSetTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/SparseSetTest.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/SparseSetTest.cpp b/llvm/unittests/ADT/SparseSetTest.cpp index eb0e0db283b..4db7a7d61fb 100644 --- a/llvm/unittests/ADT/SparseSetTest.cpp +++ b/llvm/unittests/ADT/SparseSetTest.cpp @@ -183,4 +183,24 @@ TEST(SparseSetTest, AltStructSet) { EXPECT_FALSE(Set.erase(5)); EXPECT_TRUE(Set.erase(6)); } + +TEST(SparseSetTest, PopBack) { + USet Set; + const unsigned UpperBound = 300; + Set.setUniverse(UpperBound); + for (unsigned i = 0; i < UpperBound; ++i) + Set.insert(i); + + // Make sure pop back returns the values in the reverse order we + // inserted them. + unsigned Expected = UpperBound; + while (!Set.empty()) + ASSERT_TRUE(--Expected == Set.pop_back_val()); + + // Insert again the same elements in the sparse set and make sure + // each insertion actually inserts the elements. I.e., check + // that the underlying data structure are properly cleared. + for (unsigned i = 0; i < UpperBound; ++i) + ASSERT_TRUE(Set.insert(i).second); +} } // namespace |