summaryrefslogtreecommitdiff
path: root/Lib/ctypes/test/test_pep3118.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/ctypes/test/test_pep3118.py')
-rw-r--r--Lib/ctypes/test/test_pep3118.py57
1 files changed, 21 insertions, 36 deletions
diff --git a/Lib/ctypes/test/test_pep3118.py b/Lib/ctypes/test/test_pep3118.py
index d3550cc85a..976473c46f 100644
--- a/Lib/ctypes/test/test_pep3118.py
+++ b/Lib/ctypes/test/test_pep3118.py
@@ -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
@@ -45,20 +24,23 @@ class Test(unittest.TestCase):
ob = tp()
v = memoryview(ob)
try:
- self.failUnlessEqual(normalize(v.format), normalize(fmt))
- self.failUnlessEqual(v.size, sizeof(ob))
- self.failUnlessEqual(v.itemsize, sizeof(itemtp))
- self.failUnlessEqual(v.shape, shape)
+ self.assertEqual(normalize(v.format), normalize(fmt))
+ 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
- self.failUnlessEqual(v.strides, None)
+ self.assertEqual(v.strides, None)
# they are always read/write
- self.failIf(v.readonly)
+ self.assertFalse(v.readonly)
if v.shape:
n = 1
for dim in v.shape:
n = n * dim
- self.failUnlessEqual(v.itemsize * n, v.size)
+ self.assertEqual(n * v.itemsize, len(v.tobytes()))
except:
# so that we can see the failing type
print(tp)
@@ -69,20 +51,23 @@ class Test(unittest.TestCase):
ob = tp()
v = memoryview(ob)
try:
- self.failUnlessEqual(v.format, fmt)
- self.failUnlessEqual(v.size, sizeof(ob))
- self.failUnlessEqual(v.itemsize, sizeof(itemtp))
- self.failUnlessEqual(v.shape, shape)
+ self.assertEqual(v.format, fmt)
+ 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
- self.failUnlessEqual(v.strides, None)
+ self.assertEqual(v.strides, None)
# they are always read/write
- self.failIf(v.readonly)
+ self.assertFalse(v.readonly)
if v.shape:
n = 1
for dim in v.shape:
n = n * dim
- self.failUnlessEqual(v.itemsize * n, v.size)
+ self.assertEqual(n, len(v))
except:
# so that we can see the failing type
print(tp)