def test_range(self): for i in range(5): rng = AddressRange(IP(i)) self.assertEqual(rng.start, i) self.assertEqual(rng.end, i) self.assertEqual(rng.family, IPv4) for j in range(5): if i > j: with self.assertRaises(AssertionError): AddressRange(IP(i), IP(j)) else: rng = AddressRange(IP(i), IP(j)) self.assertEqual(rng.start, i) self.assertEqual(rng.end, j) self.assertEqual(rng.family, IPv4) with self.assertRaises(AssertionError): rng.end = IP() v4rangestr = '0.0.0.0-255.255.255.255' v6rangestr = '::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' v4range = AddressRange.from_string(v4rangestr) v6range = AddressRange.from_string(v6rangestr) self.assertEqual(str(v4range), v4rangestr) self.assertEqual(str(v6range), v6rangestr) self.assertEqual(v4range, AddressRange(IPv4(0), IPv4(IPV4MAX))) self.assertEqual(v6range, AddressRange(IPv6(0), IPv6(IPV6MAX)))
def test_ordering(self): def expect(A1, A2, B1, B2): assert A2 >= A1 and B2 >= B1 lt = A2 + 1 < B1 eq = A1 == B1 and A2 == B2 gt = A1 > B2 + 1 a_in_b = B1 <= A1 and A2 <= B2 b_in_a = A1 <= B1 and B2 <= A2 return (lt, eq, gt, a_in_b, b_in_a) def test(A, B): return (A < B, A == B, A > B, A in B, B in A) y, z = 3, 6 B = AddressRange(IPv4(y), IPv4(z)) for w in range(10): for x in range(w, 10): A = AddressRange(IPv4(w), IPv4(x)) self.assertEqual(test(A, B), expect(w, x, y, z)) self.assertEqual(test(B, A), expect(y, z, w, x))