]> granicus.if.org Git - python/commitdiff
Get rid of buffer() in test_ctypes: backport the 3.x tests.
authorFlorent Xicluna <florent.xicluna@gmail.com>
Mon, 22 Mar 2010 15:02:46 +0000 (15:02 +0000)
committerFlorent Xicluna <florent.xicluna@gmail.com>
Mon, 22 Mar 2010 15:02:46 +0000 (15:02 +0000)
Lib/ctypes/test/test_array_in_pointer.py
Lib/ctypes/test/test_byteswap.py
Lib/ctypes/test/test_pep3118.py
Lib/ctypes/test/test_pickling.py
Lib/ctypes/test/test_random_things.py
Lib/ctypes/test/test_strings.py
Lib/test/test_ctypes.py

index c313aa6e622d0a5dd28fcef5f45817f0ff717b44..ee7863c594b6ecf5b22944a0ab678afe1c7245a0 100644 (file)
@@ -6,7 +6,7 @@ import re
 def dump(obj):
     # helper function to dump memory contents in hex, with a hyphen
     # between the bytes.
-    h = hexlify(buffer(obj))
+    h = hexlify(memoryview(obj))
     return re.sub(r"(..)", r"\1-", h)[:-1]
 
 
index e64fd45eb19118eefeaf2185e34cc5719e836e3e..31637562333af7cd4a032f82ff5e0634764909bb 100644 (file)
@@ -4,7 +4,7 @@ from binascii import hexlify
 from ctypes import *
 
 def bin(s):
-    return hexlify(buffer(s)).upper()
+    return hexlify(memoryview(s)).upper()
 
 # Each *simple* type that supports different byte orders has an
 # __ctype_be__ attribute that specifies the same type in BIG ENDIAN
index f302e122d4601d40ec01d0d08de82f09148c985a..976473c46feb5b8ecdf3a997834d087cb21dde42 100644 (file)
@@ -1,6 +1,6 @@
 import unittest
 from ctypes import *
-import re, struct, sys
+import re, sys
 
 if sys.byteorder == "little":
     THIS_ENDIAN = "<"
@@ -9,27 +9,6 @@ else:
     THIS_ENDIAN = ">"
     OTHER_ENDIAN = "<"
 
-class memoryview(object):
-    # This class creates a memoryview - like object from data returned
-    # by the private _ctypes._buffer_info() function, just enough for
-    # these tests.
-    #
-    # It can be removed when the py3k memoryview object is backported.
-    def __init__(self, ob):
-        from _ctypes import _buffer_info
-        self.format, self.ndim, self.shape = _buffer_info(ob)
-        if self.shape == ():
-            self.shape = None
-            self.itemsize = sizeof(ob)
-        else:
-            size = sizeof(ob)
-            for dim in self.shape:
-                size //= dim
-            self.itemsize = size
-        self.strides = None
-        self.readonly = False
-        self.size = sizeof(ob)
-
 def normalize(format):
     # Remove current endian specifier and white space from a format
     # string
@@ -46,7 +25,10 @@ class Test(unittest.TestCase):
             v = memoryview(ob)
             try:
                 self.assertEqual(normalize(v.format), normalize(fmt))
-                self.assertEqual(v.size, sizeof(ob))
+                if shape is not None:
+                    self.assertEqual(len(v), shape[0])
+                else:
+                    self.assertEqual(len(v) * sizeof(itemtp), sizeof(ob))
                 self.assertEqual(v.itemsize, sizeof(itemtp))
                 self.assertEqual(v.shape, shape)
                 # ctypes object always have a non-strided memory block
@@ -58,7 +40,7 @@ class Test(unittest.TestCase):
                     n = 1
                     for dim in v.shape:
                         n = n * dim
-                    self.assertEqual(v.itemsize * n, v.size)
+                    self.assertEqual(n * v.itemsize, len(v.tobytes()))
             except:
                 # so that we can see the failing type
                 print(tp)
@@ -70,7 +52,10 @@ class Test(unittest.TestCase):
             v = memoryview(ob)
             try:
                 self.assertEqual(v.format, fmt)
-                self.assertEqual(v.size, sizeof(ob))
+                if shape is not None:
+                    self.assertEqual(len(v), shape[0])
+                else:
+                    self.assertEqual(len(v) * sizeof(itemtp), sizeof(ob))
                 self.assertEqual(v.itemsize, sizeof(itemtp))
                 self.assertEqual(v.shape, shape)
                 # ctypes object always have a non-strided memory block
@@ -82,7 +67,7 @@ class Test(unittest.TestCase):
                     n = 1
                     for dim in v.shape:
                         n = n * dim
-                    self.assertEqual(v.itemsize * n, v.size)
+                    self.assertEqual(n, len(v))
             except:
                 # so that we can see the failing type
                 print(tp)
index dee2060afecb51dbb6fcd8af3120c8554305d4d3..136cbe928e52cfb2a4135faf3d896dd21282d7a0 100644 (file)
@@ -28,8 +28,8 @@ class PickleTest(unittest.TestCase):
             ]:
             dst = self.loads(self.dumps(src))
             self.assertEqual(src.__dict__, dst.__dict__)
-            self.assertEqual(buffer(src)[:],
-                                 buffer(dst)[:])
+            self.assertEqual(memoryview(src).tobytes(),
+                                 memoryview(dst).tobytes())
 
     def test_struct(self):
         X.init_called = 0
@@ -46,8 +46,8 @@ class PickleTest(unittest.TestCase):
         # ctypes instances are identical when the instance __dict__
         # and the memory buffer are identical
         self.assertEqual(y.__dict__, x.__dict__)
-        self.assertEqual(buffer(y)[:],
-                             buffer(x)[:])
+        self.assertEqual(memoryview(y).tobytes(),
+                             memoryview(x).tobytes())
 
     def test_unpickable(self):
         # ctypes objects that are pointers or contain pointers are
index ddb597d6fce3bf09de6f4e3fe1d89aab0b33d0d0..1c217c3ed08ea4a8a652bede55ed82ddc917a80f 100644 (file)
@@ -2,7 +2,7 @@ from ctypes import *
 import unittest, sys
 
 def callback_func(arg):
-    42 / arg
+    42 // arg
     raise ValueError(arg)
 
 if sys.platform == "win32":
@@ -69,7 +69,7 @@ class CallbackTracbackTestCase(unittest.TestCase):
         out = self.capture_stderr(cb, "spam")
         self.assertEqual(out.splitlines()[-1],
                              "TypeError: "
-                             "unsupported operand type(s) for /: 'int' and 'str'")
+                             "unsupported operand type(s) for //: 'int' and 'str'")
 
 if __name__ == '__main__':
     unittest.main()
index bc803db2b40886189c8bcdd0f031f3ab1c0f6fde..324848e2c0e9c5aefae1d98e352012c3a80bd358 100644 (file)
@@ -30,17 +30,17 @@ class StringArrayTestCase(unittest.TestCase):
         buf.value = "Hello, World"
         self.assertEqual(buf.value, "Hello, World")
 
-        self.assertRaises(TypeError, setattr, buf, "value", buffer("Hello, World"))
-        self.assertRaises(TypeError, setattr, buf, "value", buffer("abc"))
-        self.assertRaises(ValueError, setattr, buf, "raw", buffer("x" * 100))
+        self.assertRaises(TypeError, setattr, buf, "value", memoryview("Hello, World"))
+        self.assertRaises(TypeError, setattr, buf, "value", memoryview("abc"))
+        self.assertRaises(ValueError, setattr, buf, "raw", memoryview("x" * 100))
 
     def test_c_buffer_raw(self):
         buf = c_buffer(32)
 
-        buf.raw = buffer("Hello, World")
+        buf.raw = memoryview("Hello, World")
         self.assertEqual(buf.value, "Hello, World")
-        self.assertRaises(TypeError, setattr, buf, "value", buffer("abc"))
-        self.assertRaises(ValueError, setattr, buf, "raw", buffer("x" * 100))
+        self.assertRaises(TypeError, setattr, buf, "value", memoryview("abc"))
+        self.assertRaises(ValueError, setattr, buf, "raw", memoryview("x" * 100))
 
     def test_param_1(self):
         BUF = c_char * 4
index f2f36c4fc0b3bb6af1f9d72d4543059fa9d525ed..17f287449afb5580346e83c5838f4fec666d33f0 100644 (file)
@@ -1,17 +1,15 @@
 import unittest
 
-from test.test_support import run_unittest, import_module, check_py3k_warnings
+from test.test_support import run_unittest, import_module
 #Skip tests if _ctypes module does not exist
 import_module('_ctypes')
 
 
 def test_main():
-    with check_py3k_warnings(("buffer.. not supported", DeprecationWarning),
-                             ("classic (int|long) division", DeprecationWarning)):
-        import ctypes.test
-        skipped, testcases = ctypes.test.get_tests(ctypes.test, "test_*.py", verbosity=0)
-        suites = [unittest.makeSuite(t) for t in testcases]
-        run_unittest(unittest.TestSuite(suites))
+    import ctypes.test
+    skipped, testcases = ctypes.test.get_tests(ctypes.test, "test_*.py", verbosity=0)
+    suites = [unittest.makeSuite(t) for t in testcases]
+    run_unittest(unittest.TestSuite(suites))
 
 if __name__ == "__main__":
     test_main()