Add some test cases for better unit test code coverage. Fix bug found by new TestCom...
[python-rwhoisd.git] / test / TestV6addr.py
index adc103f..a99fdf5 100644 (file)
@@ -39,8 +39,8 @@ class TestGood(unittest.TestCase):
 
 class TestBad(unittest.TestCase):
 
-    data = [ ":", ":::", "1::2::3", "::3::", "::1.2.3", "12345::1",
-             "1:2:3:4:5:6:7:4.3.2.1" ]
+    data = [ ":", ":::", "::0:", "1::2::3", "::3::", "::1.2.3", "12345::1",
+             "1:2:3:4:5:6:7:4.3.2.1", "1:2:3:4:5:6:7:8:9" ]
 
     def testBad(self):
         for addr in self.data:
@@ -61,5 +61,30 @@ class TestNormalize(unittest.TestCase):
             a = v6addr.v6addr_to_str(numaddr)
             self.assertEquals(a, b)
 
+class TestCompat(unittest.TestCase):
+
+    datav6 = [ ("0:0:0:0:0:0:0:0", "::"), ("0::0:0:7", "::7"),
+             ("00ab:00:00:c:00:00:00:d", "ab:0:0:c::d"),
+             ("00ab:0000:0000:0000:000c:0000:0000:000d", "ab::c:0:0:d"),
+             ("1:02:3:04:5:006:7:0008", "1:2:3:4:5:6:7:8"),
+             ("::FFFF:1.2.3.4", "::ffff:102:304") ]
+    datav4 = [ ("001.002.003.004", "1.2.3.4") ]
+
+    def testCompat(self):
+        for addr, b in self.datav6:
+            numaddr = v6addr.inet_pton(socket.AF_INET6, addr)
+            a = v6addr.inet_ntop(socket.AF_INET6, numaddr)
+            self.assertEquals(a, b)
+        for addr, b in self.datav4:
+            numaddr = v6addr.inet_pton(socket.AF_INET, addr)
+            a = v6addr.inet_ntop(socket.AF_INET, numaddr)
+            self.assertEquals(a, b)
+
+    def testInvalidFamily(self):
+        self.assertRaises(socket.error, v6addr.inet_pton,
+                          socket.AF_UNIX, "1.2.3.4")
+        self.assertRaises(socket.error, v6addr.inet_ntop,
+                          socket.AF_UNIX, "\01\02\03\03")
+
 if __name__ == "__main__":
     unittest.main()