コード例 #1
0
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());
	}
}
コード例 #2
0
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());
	}
}