MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / CheckRange

Function CheckRange

src/test/kernel/test_kernel.cpp:322–390  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

320template <typename RangeType>
321 requires std::ranges::random_access_range<RangeType>
322void CheckRange(const RangeType& range, size_t expected_size)
323{
324 using value_type = std::ranges::range_value_t<RangeType>;
325
326 BOOST_CHECK_EQUAL(range.size(), expected_size);
327 BOOST_REQUIRE(range.size() > 0); // Some checks below assume a non-empty range
328 BOOST_REQUIRE(!range.empty());
329
330 BOOST_CHECK(range.begin() != range.end());
331 BOOST_CHECK_EQUAL(std::distance(range.begin(), range.end()), static_cast<std::ptrdiff_t>(expected_size));
332 BOOST_CHECK(range.cbegin() == range.begin());
333 BOOST_CHECK(range.cend() == range.end());
334
335 for (size_t i = 0; i < range.size(); ++i) {
336 BOOST_CHECK_EQUAL(range[i].get(), (*(range.begin() + i)).get());
337 }
338
339 BOOST_CHECK_THROW(range.at(expected_size), std::out_of_range);
340
341 BOOST_CHECK_EQUAL(range.front().get(), range[0].get());
342 BOOST_CHECK_EQUAL(range.back().get(), range[expected_size - 1].get());
343
344 auto it = range.begin();
345 auto it_copy = it;
346 ++it;
347 BOOST_CHECK(it != it_copy);
348 --it;
349 BOOST_CHECK(it == it_copy);
350 it = range.begin();
351 auto old_it = it++;
352 BOOST_CHECK(old_it == range.begin());
353 BOOST_CHECK(it == range.begin() + 1);
354 old_it = it--;
355 BOOST_CHECK(old_it == range.begin() + 1);
356 BOOST_CHECK(it == range.begin());
357
358 it = range.begin();
359 it += 2;
360 BOOST_CHECK(it == range.begin() + 2);
361 it -= 2;
362 BOOST_CHECK(it == range.begin());
363
364 BOOST_CHECK(range.begin() < range.end());
365 BOOST_CHECK(range.begin() <= range.end());
366 BOOST_CHECK(range.end() > range.begin());
367 BOOST_CHECK(range.end() >= range.begin());
368 BOOST_CHECK(range.begin() == range.begin());
369
370 BOOST_CHECK_EQUAL(range.begin()[0].get(), range[0].get());
371
372 size_t count = 0;
373 for (auto rit = range.end(); rit != range.begin();) {
374 --rit;
375 ++count;
376 }
377 BOOST_CHECK_EQUAL(count, expected_size);
378
379 std::vector<value_type> collected;

Callers 1

BOOST_AUTO_TEST_CASEFunction · 0.85

Calls 12

sizeFunction · 0.85
sizeMethod · 0.45
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
cbeginMethod · 0.45
cendMethod · 0.45
getMethod · 0.45
atMethod · 0.45
frontMethod · 0.45
backMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected