5 #include "gtest/gtest.h"
10 using res = std::pair<std::vector<unsigned int>,
bool>;
11 using vec = std::vector<unsigned int>;
13 TEST(JetGroupReducerTester, empty) {
14 std::vector<std::size_t> siblings;
18 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
22 EXPECT_TRUE(jgr.
valid());
23 EXPECT_TRUE(jgr.
next(collector).empty());
26 TEST(JetGroupReducerTester, emptyCondition) {
27 std::vector<std::size_t> siblings{1, 2, 3};
29 satisfiedBy[0] = std::vector<std::size_t> {0, 1, 2};
30 satisfiedBy[1] = std::vector<std::size_t> {};
31 satisfiedBy[2] = std::vector<std::size_t> {3, 4, 5};
36 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
40 EXPECT_TRUE(jgr.
valid());
41 EXPECT_TRUE(jgr.
next(collector).empty());
45 TEST(JetGroupReducerTester, one_condition_elem) {
48 std::vector<std::size_t> siblings{1};
51 satisfiedBy[1] = std::vector<std::size_t> {0};
53 jg2elem[0] = std::vector<std::size_t> {0};
54 jg2elem[1] = std::vector<std::size_t> {1};
55 jg2elem[2] = std::vector<std::size_t> {0, 1};
58 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
62 auto exp = std::vector<std::size_t>{0};
63 EXPECT_EQ(jgr.
next(collector),
exp);
64 EXPECT_TRUE(jgr.
next(collector).empty());
68 TEST(JetGroupReducerTester, one_condition_non_elem) {
71 std::vector<std::size_t> siblings{1};
74 satisfiedBy[1] = std::vector<std::size_t> {2};
76 jg2elem[0] = std::vector<std::size_t> {0};
77 jg2elem[1] = std::vector<std::size_t> {1};
78 jg2elem[2] = std::vector<std::size_t> {0, 1};
81 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
85 auto exp = std::vector<std::size_t>{0, 1};
86 EXPECT_EQ(jgr.
next(collector),
exp);
87 EXPECT_TRUE(jgr.
next(collector).empty());
90 TEST(JetGroupReducerTester, two_conditions_nooverlap_elem_elem) {
91 std::vector<std::size_t> siblings{1, 2};
94 satisfiedBy[1] = std::vector<std::size_t> {0, 1};
95 satisfiedBy[2] = std::vector<std::size_t> {2};
96 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
100 jg2elem[0] = std::vector<std::size_t> {0};
101 jg2elem[1] = std::vector<std::size_t> {1};
102 jg2elem[2] = std::vector<std::size_t> {2};
103 jg2elem[3] = std::vector<std::size_t> {3};
104 jg2elem[4] = std::vector<std::size_t> {4};
105 jg2elem[5] = std::vector<std::size_t> {5};
106 jg2elem[6] = std::vector<std::size_t> {0, 1};
107 jg2elem[7] = std::vector<std::size_t> {2, 3};
108 jg2elem[8] = std::vector<std::size_t> {4, 5};
113 auto exp = std::vector<std::size_t>{0, 1, 2};
114 EXPECT_EQ(jgr.
next(collector),
exp);
115 EXPECT_TRUE(jgr.
next(collector).empty());
118 TEST(JetGroupReducerTester, two_conditions_nooverlap_elem_non_elem) {
119 std::vector<std::size_t> siblings{1, 2};
122 satisfiedBy[1] = std::vector<std::size_t> {0, 1};
123 satisfiedBy[2] = std::vector<std::size_t> {7};
124 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
128 jg2elem[0] = std::vector<std::size_t> {0};
129 jg2elem[1] = std::vector<std::size_t> {1};
130 jg2elem[2] = std::vector<std::size_t> {2};
131 jg2elem[3] = std::vector<std::size_t> {3};
132 jg2elem[4] = std::vector<std::size_t> {4};
133 jg2elem[5] = std::vector<std::size_t> {5};
134 jg2elem[6] = std::vector<std::size_t> {0, 1};
135 jg2elem[7] = std::vector<std::size_t> {2, 3};
136 jg2elem[8] = std::vector<std::size_t> {4, 5};
141 auto exp = std::vector<std::size_t>{0, 1, 2, 3};
142 EXPECT_EQ(jgr.
next(collector),
exp);
143 EXPECT_TRUE(jgr.
next(collector).empty());
146 TEST(JetGroupReducerTester, two_conditions_overlap_elem_non_elem) {
147 std::vector<std::size_t> siblings{1, 2};
150 satisfiedBy[1] = std::vector<std::size_t> {0, 1};
151 satisfiedBy[2] = std::vector<std::size_t> {6};
152 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
156 jg2elem[0] = std::vector<std::size_t> {0};
157 jg2elem[1] = std::vector<std::size_t> {1};
158 jg2elem[2] = std::vector<std::size_t> {2};
159 jg2elem[3] = std::vector<std::size_t> {3};
160 jg2elem[4] = std::vector<std::size_t> {4};
161 jg2elem[5] = std::vector<std::size_t> {5};
162 jg2elem[6] = std::vector<std::size_t> {0, 1};
163 jg2elem[7] = std::vector<std::size_t> {2, 3};
164 jg2elem[8] = std::vector<std::size_t> {4, 5};
169 auto exp = std::vector<std::size_t>{0, 1};
170 EXPECT_EQ(jgr.
next(collector),
exp);
171 EXPECT_TRUE(jgr.
next(collector).empty());
174 TEST(JetGroupReducerTester, two_conditions_no_overlap_non_elem_non_elem) {
175 std::vector<std::size_t> siblings{1, 2};
178 satisfiedBy[1] = std::vector<std::size_t> {6, 7};
179 satisfiedBy[2] = std::vector<std::size_t> {8};
180 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
184 jg2elem[0] = std::vector<std::size_t> {0};
185 jg2elem[1] = std::vector<std::size_t> {1};
186 jg2elem[2] = std::vector<std::size_t> {2};
187 jg2elem[3] = std::vector<std::size_t> {3};
188 jg2elem[4] = std::vector<std::size_t> {4};
189 jg2elem[5] = std::vector<std::size_t> {5};
190 jg2elem[6] = std::vector<std::size_t> {0, 1};
191 jg2elem[7] = std::vector<std::size_t> {2, 3};
192 jg2elem[8] = std::vector<std::size_t> {4, 5};
197 auto exp = std::vector<std::size_t>{0, 1, 2, 3, 4, 5};
198 EXPECT_EQ(jgr.
next(collector),
exp);
199 EXPECT_TRUE(jgr.
next(collector).empty());
202 TEST(JetGroupReducerTester, two_conditions_overlap_non_elem_non_elem) {
203 std::vector<std::size_t> siblings{1, 2};
206 satisfiedBy[1] = std::vector<std::size_t> {6, 7};
207 satisfiedBy[2] = std::vector<std::size_t> {9};
208 auto collector = std::unique_ptr<ITrigJetHypoInfoCollector>(
nullptr);
212 jg2elem[0] = std::vector<std::size_t> {0};
213 jg2elem[1] = std::vector<std::size_t> {1};
214 jg2elem[2] = std::vector<std::size_t> {2};
215 jg2elem[3] = std::vector<std::size_t> {3};
216 jg2elem[4] = std::vector<std::size_t> {4};
217 jg2elem[5] = std::vector<std::size_t> {5};
218 jg2elem[6] = std::vector<std::size_t> {0, 1};
219 jg2elem[7] = std::vector<std::size_t> {2, 3};
220 jg2elem[8] = std::vector<std::size_t> {4, 5};
221 jg2elem[9] = std::vector<std::size_t> {1, 5};
226 auto exp = std::vector<std::size_t>{0, 1, 2, 3, 5};
227 EXPECT_EQ(jgr.
next(collector),
exp);
228 EXPECT_TRUE(jgr.
next(collector).empty());