comparison unittests/ADT/PriorityWorklistTest.cpp @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents 1172e4bd9c6f
children c2174574ed3a
comparison
equal deleted inserted replaced
120:1172e4bd9c6f 121:803732b1fca8
11 // 11 //
12 //===----------------------------------------------------------------------===// 12 //===----------------------------------------------------------------------===//
13 13
14 #include "llvm/ADT/PriorityWorklist.h" 14 #include "llvm/ADT/PriorityWorklist.h"
15 #include "gtest/gtest.h" 15 #include "gtest/gtest.h"
16 #include <list>
17 #include <vector>
16 18
17 namespace { 19 namespace {
18 20
19 using namespace llvm; 21 using namespace llvm;
20 22
70 EXPECT_EQ(17, W.pop_back_val()); 72 EXPECT_EQ(17, W.pop_back_val());
71 EXPECT_EQ(21, W.pop_back_val()); 73 EXPECT_EQ(21, W.pop_back_val());
72 EXPECT_TRUE(W.empty()); 74 EXPECT_TRUE(W.empty());
73 } 75 }
74 76
77 TYPED_TEST(PriorityWorklistTest, InsertSequence) {
78 TypeParam W;
79 ASSERT_TRUE(W.insert(2));
80 ASSERT_TRUE(W.insert(4));
81 ASSERT_TRUE(W.insert(7));
82 // Insert a sequence that has internal duplicates and a duplicate among
83 // existing entries.
84 W.insert(std::vector<int>({42, 13, 42, 7, 8}));
85 EXPECT_EQ(8, W.pop_back_val());
86 EXPECT_EQ(7, W.pop_back_val());
87 EXPECT_EQ(42, W.pop_back_val());
88 EXPECT_EQ(13, W.pop_back_val());
89 EXPECT_EQ(4, W.pop_back_val());
90 EXPECT_EQ(2, W.pop_back_val());
91 ASSERT_TRUE(W.empty());
92
93 // Simpler tests with various other input types.
94 ASSERT_TRUE(W.insert(2));
95 ASSERT_TRUE(W.insert(7));
96 // Use a non-random-access container.
97 W.insert(std::list<int>({7, 5}));
98 EXPECT_EQ(5, W.pop_back_val());
99 EXPECT_EQ(7, W.pop_back_val());
100 EXPECT_EQ(2, W.pop_back_val());
101 ASSERT_TRUE(W.empty());
102
103 ASSERT_TRUE(W.insert(2));
104 ASSERT_TRUE(W.insert(7));
105 // Use a raw array.
106 int A[] = {7, 5};
107 W.insert(A);
108 EXPECT_EQ(5, W.pop_back_val());
109 EXPECT_EQ(7, W.pop_back_val());
110 EXPECT_EQ(2, W.pop_back_val());
111 ASSERT_TRUE(W.empty());
112
113 ASSERT_TRUE(W.insert(2));
114 ASSERT_TRUE(W.insert(7));
115 // Inserting an empty sequence does nothing.
116 W.insert(std::vector<int>());
117 EXPECT_EQ(7, W.pop_back_val());
118 EXPECT_EQ(2, W.pop_back_val());
119 ASSERT_TRUE(W.empty());
120 }
121
75 TYPED_TEST(PriorityWorklistTest, EraseIf) { 122 TYPED_TEST(PriorityWorklistTest, EraseIf) {
76 TypeParam W; 123 TypeParam W;
77 W.insert(23); 124 W.insert(23);
78 W.insert(10); 125 W.insert(10);
79 W.insert(47); 126 W.insert(47);