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