28 #include <gmock/gmock.h>
29 #include <gtest/gtest.h>
31 #include <initializer_list>
41 using testing::HasSubstr;
42 using testing::Pointwise;
73 const auto &[actual,
expected] = arg;
89 const auto &[actual,
expected] = arg;
108 std::initializer_list<Range> ranges={}) :
110 resultPos(results.begin())
117 args.emplace_back(range);
119 if (resultPos != results.end()) {
121 range.
fault = resultPos->fault;
124 range.
size = resultPos->size;
125 range.
paddr = resultPos->paddr;
137 EXPECT_EQ(gen1.
start(), 0x10000);
138 EXPECT_EQ(gen1.
size(), 0x20000);
142 EXPECT_EQ(gen2.
start(), 0x3456);
143 EXPECT_EQ(gen2.
size(), 0x6543);
150 EXPECT_NE(gen1.
begin(), gen1.
end());
152 EXPECT_EQ(gen1.
end(), gen1.
end());
157 EXPECT_EQ(gen1.
end(), gen2.
end());
164 {0x0, 0x8000, 0x30000,
NoFault},
165 {0x0, 0x8000, 0x40000,
NoFault}
169 for (
const auto &range: gen)
170 range_list.emplace_back(range);
174 {0x10000, 0x8000, 0x30000,
NoFault},
175 {0x18000, 0x8000, 0x40000,
NoFault}
177 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
181 {0x10000, 0x10000, 0x0,
NoFault},
182 {0x18000, 0x8000, 0x0,
NoFault}
184 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
191 {0x0, 0x8000, 0x30000,
NoFault},
193 {0x0, 0x8000, 0x40000,
NoFault}
197 for (
const auto &range: gen)
198 range_list.emplace_back(range);
202 {0x10000, 0x8000, 0x30000,
NoFault},
204 {0x18000, 0x8000, 0x40000,
NoFault}
206 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
210 {0x10000, 0x10000, 0x0,
NoFault},
211 {0x18000, 0x8000, 0x0,
NoFault},
212 {0x18000, 0x8000, 0x0,
NoFault}
214 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
221 {0x0, 0x8000, 0x30000,
NoFault},
224 {0x0, 0x8000, 0x40000,
NoFault}
228 for (
const auto &range: gen)
229 range_list.emplace_back(range);
233 {0x10000, 0x8000, 0x30000,
NoFault},
236 {0x18000, 0x8000, 0x40000,
NoFault}
238 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
242 {0x10000, 0x10000, 0x0,
NoFault},
243 {0x18000, 0x8000, 0x0,
NoFault},
244 {0x18000, 0x8000, 0x0,
NoFault},
245 {0x18000, 0x8000, 0x0,
NoFault}
247 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
255 {0x0, 0x8000, 0x30000,
NoFault},
256 {0x0, 0x8000, 0x40000,
NoFault}
260 for (
const auto &range: gen)
261 range_list.emplace_back(range);
266 {0x10000, 0x8000, 0x30000,
NoFault},
267 {0x18000, 0x8000, 0x40000,
NoFault}
269 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
273 {0x10000, 0x10000, 0x0,
NoFault},
274 {0x10000, 0x10000, 0x0,
NoFault},
275 {0x18000, 0x8000, 0x0,
NoFault}
277 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
284 {0x0, 0x8000, 0x30000,
NoFault},
286 {0x0, 0x8000, 0x40000,
NoFault},
287 {0x0, 0x8000, 0x50000,
NoFault}
291 for (
const auto &range: gen)
292 range_list.emplace_back(range);
296 {0x10000, 0x8000, 0x30000,
NoFault},
298 {0x18000, 0x8000, 0x40000,
NoFault},
299 {0x20000, 0x8000, 0x50000,
NoFault}
301 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
305 {0x10000, 0x18000, 0x0,
NoFault},
306 {0x18000, 0x10000, 0x0,
NoFault},
307 {0x18000, 0x10000, 0x0,
NoFault},
308 {0x20000, 0x8000, 0x0,
NoFault}
310 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
317 {0x0, 0x8000, 0x30000,
NoFault},
318 {0x0, 0x10000, 0x40000,
NoFault},
319 {0x0, 0x8000, 0x50000,
NoFault}
323 for (
const auto &range: gen)
324 range_list.emplace_back(range);
328 {0x10000, 0x8000, 0x30000,
NoFault},
329 {0x18000, 0x10000, 0x40000,
NoFault},
330 {0x28000, 0x8000, 0x50000,
NoFault}
332 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
336 {0x10000, 0x20000, 0x0,
NoFault},
337 {0x18000, 0x18000, 0x0,
NoFault},
338 {0x28000, 0x8000, 0x0,
NoFault}
340 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
343 TEST(TranslationGenDeathTest, IncrementEndIterator)
347 ASSERT_ANY_THROW(gen.
end()++);
349 HasSubstr(
"Can't increment end iterator."));