]> granicus.if.org Git - python/commitdiff
Repair testNtoH for large long arguments.
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 31 Jul 2002 15:57:39 +0000 (15:57 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 31 Jul 2002 15:57:39 +0000 (15:57 +0000)
If the long is large enough, the return value will be a negative int.
In this case, calling the function a second time won't return the
original value passed in.

Lib/test/test_socket.py

index 44b42ffa11565ad3509320730380dddac1b5a758..301cd70499bbe45dd5bd38f80ba0d8f5776ae89a 100644 (file)
@@ -248,15 +248,14 @@ class GeneralModuleTests(unittest.TestCase):
             pass
 
     def testNtoH(self):
-        def twice(f):
-            def g(x):
-                return f(f(x))
-            return g
-        for i in (0, 1, 0xffff0000, 2L, (2**32L) - 1):
-            self.assertEqual(i, twice(socket.htonl)(i))
-            self.assertEqual(i, twice(socket.ntohl)(i))
-        self.assertRaises(OverflowError, socket.htonl, 2L**34)
-        self.assertRaises(OverflowError, socket.ntohl, 2L**34)
+        for func in socket.htonl, socket.ntohl:
+            for i in (0, 1, 0xffff0000, 2L):
+                self.assertEqual(i, func(func(i)))
+
+            biglong = 2**32L - 1
+            swapped = func(biglong)
+            self.assert_(swapped == biglong or swapped == -1)
+            self.assertRaises(OverflowError, func, 2L**34)
 
     def testGetServByName(self):
         """Testing getservbyname()."""