void test_rules_invariant(std::vector<ip_range<T> > const& r, ip_filter const& f) { typedef typename std::vector<ip_range<T> >::const_iterator iterator; TEST_CHECK(!r.empty()); if (r.empty()) return; error_code ec; if (sizeof(r.front().first) == sizeof(address_v4)) { TEST_CHECK(r.front().first == addr("0.0.0.0")); TEST_CHECK(r.back().last == addr("255.255.255.255")); } else { TEST_CHECK(r.front().first == addr("::0")); TEST_CHECK(r.back().last == addr("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")); } for (iterator i(r.begin()), j(boost::next(r.begin())) , end(r.end()); j != end; ++j, ++i) { TEST_EQUAL(f.access(i->last), int(i->flags)); TEST_EQUAL(f.access(j->first), int(j->flags)); TEST_CHECK(detail::plus_one(i->last.to_bytes()) == j->first.to_bytes()); } }
void test_rules_invariant(std::vector<ip_range<address_v4> > const& r, ip_filter const& f) { typedef std::vector<ip_range<address_v4> >::const_iterator iterator; TEST_CHECK(!r.empty()); if (r.empty()) return; TEST_CHECK(r.front().first == address::from_string("0.0.0.0")); TEST_CHECK(r.back().last == address::from_string("255.255.255.255")); iterator i = r.begin(); iterator j = boost::next(i); for (iterator i(r.begin()), j(boost::next(r.begin())) , end(r.end()); j != end; ++j, ++i) { TEST_CHECK(f.access(i->last) == i->flags); TEST_CHECK(f.access(j->first) == j->flags); TEST_CHECK(i->last.to_ulong() + 1 == j->first.to_ulong()); } }