[pypy-commit] pypy py3.6: test, fix for non-byte n-d setitem
mattip
pypy.commits at gmail.com
Tue Jun 25 06:27:50 EDT 2019
Author: Matti Picus <matti.picus at gmail.com>
Branch: py3.6
Changeset: r96851:6c4d7cc5d649
Date: 2019-06-25 13:27 +0300
http://bitbucket.org/pypy/pypy/changeset/6c4d7cc5d649/
Log: test, fix for non-byte n-d setitem
diff --git a/pypy/objspace/std/memoryobject.py b/pypy/objspace/std/memoryobject.py
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -179,9 +179,8 @@
length, ndim)
start = self._start_from_tuple(space, w_index)
- itemsize = self.getitemsize()
val = self.view.bytes_from_value(space, w_obj)
- self.view.setbytes(start * itemsize, val)
+ self.view.setbytes(start, val)
def _decode_index(self, space, w_index, is_slice):
shape = self.getshape()
diff --git a/pypy/objspace/std/test/test_memoryobject.py b/pypy/objspace/std/test/test_memoryobject.py
--- a/pypy/objspace/std/test/test_memoryobject.py
+++ b/pypy/objspace/std/test/test_memoryobject.py
@@ -289,20 +289,19 @@
assert m2.shape == m1.shape
def test_2d(self):
- m = memoryview(bytearray(b'1234123412341234'))
- assert m[3] == ord('4')
- m[3] = ord('z')
- assert m[3] == ord('z')
- m = m.cast('B', shape=(4, 4))
- assert m[2, 3] == ord('4')
- m[2, 3] = ord('a')
- assert m[2, 3] == ord('a')
- raises(TypeError, m.__setitem__, (2, 3), bytearray(b'12'))
+ import struct
+ a = list(range(16))
+ ba = bytearray(struct.pack("%di" % len(a), *a))
+ m = memoryview(ba).cast("i", shape=(4, 4))
+ assert m[2, 3] == 11
+ m[2, 3] = -1
+ assert m[2, 3] == -1
+ raises(TypeError, m.__setitem__, (2, 3), 'a')
# slices in 2d memoryviews are not supported at all
raises(TypeError, m.__getitem__, (slice(None), 3))
- raises(TypeError, m.__setitem__, (slice(None), 3), ord('a'))
+ raises(TypeError, m.__setitem__, (slice(None), 3), 123)
raises(NotImplementedError, m.__getitem__, (slice(0,1,1), slice(0,1,2)))
- raises(NotImplementedError, m.__setitem__, (slice(0,1,1), slice(0,1,2)), ord('a'))
+ raises(NotImplementedError, m.__setitem__, (slice(0,1,1), slice(0,1,2)), 123)
class AppTestCtypes(object):
spaceconfig = dict(usemodules=['sys', '_rawffi'])
More information about the pypy-commit
mailing list