import numpy as np from numpy.lib import array_utils from numpy.testing import assert_equal class TestByteBounds: def test_byte_bounds(self): # pointer difference matches size * itemsize # due to contiguity a = np.arange(12).reshape(3, 4) low, high = array_utils.byte_bounds(a) assert_equal(high - low, a.size * a.itemsize) def test_unusual_order_positive_stride(self): a = np.arange(12).reshape(3, 4) b = a.T low, high = array_utils.byte_bounds(b) assert_equal(high - low, b.size * b.itemsize) def test_unusual_order_negative_stride(self): a = np.arange(12).reshape(3, 4) b = a.T[::-1] low, high = array_utils.byte_bounds(b) assert_equal(high - low, b.size * b.itemsize) def test_strided(self): a = np.arange(12) b = a[::2] low, high = array_utils.byte_bounds(b) # the largest pointer address is lost (even numbers only in the # stride), and compensate addresses for striding by 2 assert_equal(high - low, b.size * 2 * b.itemsize - b.itemsize)