Mercurial > hg > CbC > CbC_llvm
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); |