code: def run_shift_ishift(self, n):
      ramp = np.arange(n, dtype=aubio.float_type)
      # construct expected output
      # even length: [5. 6. 7. 8. 9. 0. 1. 2. 3. 4.]
      # odd length: [4. 5. 6. 0. 1. 2. 3.]
      half = n - n // 2
      expected = np.concatenate([np.arange(half, n), np.arange(half)])
      # shift in place, returns modified copy
      assert_equal(aubio.shift(ramp), expected)
      # check input was changed as expected
      assert_equal(ramp, expected)
      # construct expected output
      expected = np.arange(n)
      # revert shift in place, returns modifed copy
      assert_equal(aubio.ishift(ramp), expected)
      # check input was shifted back
      assert_equal(ramp, expected)
  
file_path: aubio/python/tests/test_fvec_shift.py
imports: import numpy
  from numpy.testing import TestCase, assert_equal
  import aubio
label_desc: Use image node_id 1 for calling the aubio_shift_test_case obj's underlying member method code with example usage: obj.run_shift_ishift(n) without return types