MCPcopy Create free account
hub / github.com/numpy/numpy / test_subclass_items

Method test_subclass_items

numpy/ma/tests/test_subclassing.py:290–325  ·  view source on GitHub ↗

test that getter and setter go via baseclass

(self)

Source from the content-addressed store, hash-verified

288 assert_equal(mxsub._mask, m)
289
290 def test_subclass_items(self):
291 """test that getter and setter go via baseclass"""
292 x = np.arange(5)
293 xcsub = ComplicatedSubArray(x)
294 mxcsub = masked_array(xcsub, mask=[True, False, True, False, False])
295 # getter should return a ComplicatedSubArray, even for single item
296 # first check we wrote ComplicatedSubArray correctly
297 assert_(isinstance(xcsub[1], ComplicatedSubArray))
298 assert_(isinstance(xcsub[1,...], ComplicatedSubArray))
299 assert_(isinstance(xcsub[1:4], ComplicatedSubArray))
300
301 # now that it propagates inside the MaskedArray
302 assert_(isinstance(mxcsub[1], ComplicatedSubArray))
303 assert_(isinstance(mxcsub[1,...].data, ComplicatedSubArray))
304 assert_(mxcsub[0] is masked)
305 assert_(isinstance(mxcsub[0,...].data, ComplicatedSubArray))
306 assert_(isinstance(mxcsub[1:4].data, ComplicatedSubArray))
307
308 # also for flattened version (which goes via MaskedIterator)
309 assert_(isinstance(mxcsub.flat[1].data, ComplicatedSubArray))
310 assert_(mxcsub.flat[0] is masked)
311 assert_(isinstance(mxcsub.flat[1:4].base, ComplicatedSubArray))
312
313 # setter should only work with ComplicatedSubArray input
314 # first check we wrote ComplicatedSubArray correctly
315 assert_raises(ValueError, xcsub.__setitem__, 1, x[4])
316 # now that it propagates inside the MaskedArray
317 assert_raises(ValueError, mxcsub.__setitem__, 1, x[4])
318 assert_raises(ValueError, mxcsub.__setitem__, slice(1, 4), x[1:4])
319 mxcsub[1] = xcsub[4]
320 mxcsub[1:4] = xcsub[1:4]
321 # also for flattened version (which goes via MaskedIterator)
322 assert_raises(ValueError, mxcsub.flat.__setitem__, 1, x[4])
323 assert_raises(ValueError, mxcsub.flat.__setitem__, slice(1, 4), x[1:4])
324 mxcsub.flat[1] = xcsub[4]
325 mxcsub.flat[1:4] = xcsub[1:4]
326
327 def test_subclass_nomask_items(self):
328 x = np.arange(5)

Callers

nothing calls this directly

Calls 3

assert_Function · 0.90
assert_raisesFunction · 0.90
ComplicatedSubArrayClass · 0.85

Tested by

no test coverage detected