def test_joint_upsample_and_downsample_shape(self):
     kwargs = dict(
         array=np.arange(10 * 20 * 30).reshape(10, 20, 30),
         new_shape=(10, 23, 27),
     )
     output = sinc_resample(**kwargs)
     assert np.array_equal(output.shape, kwargs["new_shape"])
 def test_preserves_trends(self):
     kwargs = dict(
         array=np.array([
             [0, 1, 2, 3, 4, 3, 2, 1, 0],
             [2, 3, 4, 5, 6, 5, 4, 3, 2],
             [0, 1, 2, 3, 4, 3, 2, 1, 0],
         ]),  # Shape: (3, 9).
         new_shape=(5, 7),
     )
     output = sinc_resample(**kwargs)
     # Check that the first half of rows are ascending.
     for row in range((output.shape[0] - 1) // 2):
         assert np.all(output[row, :] <= output[row + 1, :])
     # Check that the second half of rows are descending.
     for row in range(output.shape[0] // 2, output.shape[0] - 1):
         assert np.all(output[row, :] >= output[row + 1, :])
     # Check that the first half of columns are ascending.
     for col in range((output.shape[1] - 1) // 2):
         assert np.all(output[:, col] <= output[:, col + 1])
     # Check that the second half of columns are descending.
     for col in range(output.shape[1] // 2, output.shape[1] - 1):
         assert np.all(output[:, col] >= output[:, col + 1])