(self)
| 4184 | self.assertRaises(ValueError, m.__hash__) |
| 4185 | |
| 4186 | def test_memoryview_release(self): |
| 4187 | |
| 4188 | # Create re-exporter from getbuffer(memoryview), then release the view. |
| 4189 | a = bytearray([1,2,3]) |
| 4190 | m = memoryview(a) |
| 4191 | nd = ndarray(m) # re-exporter |
| 4192 | self.assertRaises(BufferError, m.release) |
| 4193 | del nd |
| 4194 | m.release() |
| 4195 | |
| 4196 | a = bytearray([1,2,3]) |
| 4197 | m = memoryview(a) |
| 4198 | nd1 = ndarray(m, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT) |
| 4199 | nd2 = ndarray(nd1, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT) |
| 4200 | self.assertIs(nd2.obj, m) |
| 4201 | self.assertRaises(BufferError, m.release) |
| 4202 | del nd1, nd2 |
| 4203 | m.release() |
| 4204 | |
| 4205 | # chained views |
| 4206 | a = bytearray([1,2,3]) |
| 4207 | m1 = memoryview(a) |
| 4208 | m2 = memoryview(m1) |
| 4209 | nd = ndarray(m2) # re-exporter |
| 4210 | m1.release() |
| 4211 | self.assertRaises(BufferError, m2.release) |
| 4212 | del nd |
| 4213 | m2.release() |
| 4214 | |
| 4215 | a = bytearray([1,2,3]) |
| 4216 | m1 = memoryview(a) |
| 4217 | m2 = memoryview(m1) |
| 4218 | nd1 = ndarray(m2, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT) |
| 4219 | nd2 = ndarray(nd1, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT) |
| 4220 | self.assertIs(nd2.obj, m2) |
| 4221 | m1.release() |
| 4222 | self.assertRaises(BufferError, m2.release) |
| 4223 | del nd1, nd2 |
| 4224 | m2.release() |
| 4225 | |
| 4226 | # Allow changing layout while buffers are exported. |
| 4227 | nd = ndarray([1,2,3], shape=[3], flags=ND_VAREXPORT) |
| 4228 | m1 = memoryview(nd) |
| 4229 | |
| 4230 | nd.push([4,5,6,7,8], shape=[5]) # mutate nd |
| 4231 | m2 = memoryview(nd) |
| 4232 | |
| 4233 | x = memoryview(m1) |
| 4234 | self.assertEqual(x.tolist(), m1.tolist()) |
| 4235 | |
| 4236 | y = memoryview(m2) |
| 4237 | self.assertEqual(y.tolist(), m2.tolist()) |
| 4238 | self.assertEqual(y.tolist(), nd.tolist()) |
| 4239 | m2.release() |
| 4240 | y.release() |
| 4241 | |
| 4242 | nd.pop() # pop the current view |
| 4243 | self.assertEqual(x.tolist(), nd.tolist()) |
nothing calls this directly
no test coverage detected