diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-04 22:11:11 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-04 22:11:11 +0000 |
| commit | c82ad72f63369bc462e59458f09960d66daa58a9 (patch) | |
| tree | 58bc455a8d052220f9ae11e65d6f06d671a7a4c4 /unittests/ADT/PriorityWorklistTest.cpp | |
| parent | b915e9e0fc85ba6f398b3fab0db6a81a8913af94 (diff) | |
Notes
Diffstat (limited to 'unittests/ADT/PriorityWorklistTest.cpp')
| -rw-r--r-- | unittests/ADT/PriorityWorklistTest.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/unittests/ADT/PriorityWorklistTest.cpp b/unittests/ADT/PriorityWorklistTest.cpp index bbe026434c631..040a11f95f42f 100644 --- a/unittests/ADT/PriorityWorklistTest.cpp +++ b/unittests/ADT/PriorityWorklistTest.cpp @@ -13,6 +13,8 @@ #include "llvm/ADT/PriorityWorklist.h" #include "gtest/gtest.h" +#include <list> +#include <vector> namespace { @@ -72,6 +74,51 @@ TYPED_TEST(PriorityWorklistTest, Basic) { EXPECT_TRUE(W.empty()); } +TYPED_TEST(PriorityWorklistTest, InsertSequence) { + TypeParam W; + ASSERT_TRUE(W.insert(2)); + ASSERT_TRUE(W.insert(4)); + ASSERT_TRUE(W.insert(7)); + // Insert a sequence that has internal duplicates and a duplicate among + // existing entries. + W.insert(std::vector<int>({42, 13, 42, 7, 8})); + EXPECT_EQ(8, W.pop_back_val()); + EXPECT_EQ(7, W.pop_back_val()); + EXPECT_EQ(42, W.pop_back_val()); + EXPECT_EQ(13, W.pop_back_val()); + EXPECT_EQ(4, W.pop_back_val()); + EXPECT_EQ(2, W.pop_back_val()); + ASSERT_TRUE(W.empty()); + + // Simpler tests with various other input types. + ASSERT_TRUE(W.insert(2)); + ASSERT_TRUE(W.insert(7)); + // Use a non-random-access container. + W.insert(std::list<int>({7, 5})); + EXPECT_EQ(5, W.pop_back_val()); + EXPECT_EQ(7, W.pop_back_val()); + EXPECT_EQ(2, W.pop_back_val()); + ASSERT_TRUE(W.empty()); + + ASSERT_TRUE(W.insert(2)); + ASSERT_TRUE(W.insert(7)); + // Use a raw array. + int A[] = {7, 5}; + W.insert(A); + EXPECT_EQ(5, W.pop_back_val()); + EXPECT_EQ(7, W.pop_back_val()); + EXPECT_EQ(2, W.pop_back_val()); + ASSERT_TRUE(W.empty()); + + ASSERT_TRUE(W.insert(2)); + ASSERT_TRUE(W.insert(7)); + // Inserting an empty sequence does nothing. + W.insert(std::vector<int>()); + EXPECT_EQ(7, W.pop_back_val()); + EXPECT_EQ(2, W.pop_back_val()); + ASSERT_TRUE(W.empty()); +} + TYPED_TEST(PriorityWorklistTest, EraseIf) { TypeParam W; W.insert(23); |
