28 #include <gmock/gmock.h>
29 #include <gtest/gtest.h>
31 #include <initializer_list>
40 using testing::HasSubstr;
41 using testing::Pointwise;
72 const auto &[actual,
expected] = arg;
88 const auto &[actual,
expected] = arg;
107 std::initializer_list<Range> ranges={}) :
109 resultPos(results.begin())
116 args.emplace_back(range);
118 if (resultPos != results.end()) {
120 range.
fault = resultPos->fault;
123 range.
size = resultPos->size;
124 range.
paddr = resultPos->paddr;
136 EXPECT_EQ(gen1.
start(), 0x10000);
137 EXPECT_EQ(gen1.
size(), 0x20000);
141 EXPECT_EQ(gen2.
start(), 0x3456);
142 EXPECT_EQ(gen2.
size(), 0x6543);
149 EXPECT_NE(gen1.
begin(), gen1.
end());
151 EXPECT_EQ(gen1.
end(), gen1.
end());
156 EXPECT_EQ(gen1.
end(), gen2.
end());
163 {0x0, 0x8000, 0x30000,
NoFault},
164 {0x0, 0x8000, 0x40000,
NoFault}
168 for (
const auto &range: gen)
169 range_list.emplace_back(range);
173 {0x10000, 0x8000, 0x30000,
NoFault},
174 {0x18000, 0x8000, 0x40000,
NoFault}
176 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
180 {0x10000, 0x10000, 0x0,
NoFault},
181 {0x18000, 0x8000, 0x0,
NoFault}
183 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
190 {0x0, 0x8000, 0x30000,
NoFault},
192 {0x0, 0x8000, 0x40000,
NoFault}
196 for (
const auto &range: gen)
197 range_list.emplace_back(range);
201 {0x10000, 0x8000, 0x30000,
NoFault},
203 {0x18000, 0x8000, 0x40000,
NoFault}
205 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
209 {0x10000, 0x10000, 0x0,
NoFault},
210 {0x18000, 0x8000, 0x0,
NoFault},
211 {0x18000, 0x8000, 0x0,
NoFault}
213 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
220 {0x0, 0x8000, 0x30000,
NoFault},
223 {0x0, 0x8000, 0x40000,
NoFault}
227 for (
const auto &range: gen)
228 range_list.emplace_back(range);
232 {0x10000, 0x8000, 0x30000,
NoFault},
235 {0x18000, 0x8000, 0x40000,
NoFault}
237 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
241 {0x10000, 0x10000, 0x0,
NoFault},
242 {0x18000, 0x8000, 0x0,
NoFault},
243 {0x18000, 0x8000, 0x0,
NoFault},
244 {0x18000, 0x8000, 0x0,
NoFault}
246 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
254 {0x0, 0x8000, 0x30000,
NoFault},
255 {0x0, 0x8000, 0x40000,
NoFault}
259 for (
const auto &range: gen)
260 range_list.emplace_back(range);
265 {0x10000, 0x8000, 0x30000,
NoFault},
266 {0x18000, 0x8000, 0x40000,
NoFault}
268 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
272 {0x10000, 0x10000, 0x0,
NoFault},
273 {0x10000, 0x10000, 0x0,
NoFault},
274 {0x18000, 0x8000, 0x0,
NoFault}
276 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
283 {0x0, 0x8000, 0x30000,
NoFault},
285 {0x0, 0x8000, 0x40000,
NoFault},
286 {0x0, 0x8000, 0x50000,
NoFault}
290 for (
const auto &range: gen)
291 range_list.emplace_back(range);
295 {0x10000, 0x8000, 0x30000,
NoFault},
297 {0x18000, 0x8000, 0x40000,
NoFault},
298 {0x20000, 0x8000, 0x50000,
NoFault}
300 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
304 {0x10000, 0x18000, 0x0,
NoFault},
305 {0x18000, 0x10000, 0x0,
NoFault},
306 {0x18000, 0x10000, 0x0,
NoFault},
307 {0x20000, 0x8000, 0x0,
NoFault}
309 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
316 {0x0, 0x8000, 0x30000,
NoFault},
317 {0x0, 0x10000, 0x40000,
NoFault},
318 {0x0, 0x8000, 0x50000,
NoFault}
322 for (
const auto &range: gen)
323 range_list.emplace_back(range);
327 {0x10000, 0x8000, 0x30000,
NoFault},
328 {0x18000, 0x10000, 0x40000,
NoFault},
329 {0x28000, 0x8000, 0x50000,
NoFault}
331 EXPECT_THAT(range_list, Pointwise(GenRangeEq(), expected_gen));
335 {0x10000, 0x20000, 0x0,
NoFault},
336 {0x18000, 0x18000, 0x0,
NoFault},
337 {0x28000, 0x8000, 0x0,
NoFault}
339 EXPECT_THAT(gen.args, Pointwise(TransRangeEq(), expected_trans));
342 TEST(TranslationGenDeathTest, IncrementEndIterator)
346 ASSERT_ANY_THROW(gen.
end()++);
348 HasSubstr(
"Can't increment end iterator."));