diff options
| author | 2017-01-24 08:32:59 +0000 | |
|---|---|---|
| committer | 2017-01-24 08:32:59 +0000 | |
| commit | 53d771aafdbe5b919f264f53cba3788e2c4cffd2 (patch) | |
| tree | 7eca39498be0ff1e3a6daf583cd9ca5886bb2636 /gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp | |
| parent | In preparation of compiling our kernels with -ffreestanding, explicitly map (diff) | |
| download | wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.tar.xz wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.zip | |
Import LLVM 4.0.0 rc1 including clang and lld to help the current
development effort on OpenBSD/arm64.
Diffstat (limited to 'gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp')
| -rw-r--r-- | gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp b/gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp index bbe026434c6..040a11f95f4 100644 --- a/gnu/llvm/unittests/ADT/PriorityWorklistTest.cpp +++ b/gnu/llvm/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); |
