MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_memoryview_release

Method test_memoryview_release

Lib/test/test_buffer.py:4186–4312  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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())

Callers

nothing calls this directly

Calls 9

ordFunction · 0.85
listClass · 0.85
assertRaisesMethod · 0.45
releaseMethod · 0.45
assertIsMethod · 0.45
pushMethod · 0.45
assertEqualMethod · 0.45
tolistMethod · 0.45
popMethod · 0.45

Tested by

no test coverage detected