code: def test_steps(self):
      loc = _enumerate_step_points(0, 10, 4, 1)
      self.assertAllClose(loc, [0, 1, 2, 3, 4, 5, 6])
  
      loc = _enumerate_step_points(0, 10, 4, 2)
      self.assertAllClose(loc, [0, 2, 4, 6])
  
      loc = _enumerate_step_points(0, 0, 4, 2)
      self.assertAllClose(loc, [0])
  
      loc = _enumerate_step_points(0, 0, 4, 2)
      self.assertAllClose(loc, [0])
  
      loc = _enumerate_step_points(0, 0, 0, -1)
      self.assertAllClose(loc, [0])
  
      loc = _enumerate_step_points(0, 10, 8, 8)
      self.assertAllClose(loc, [0, 2, 1])
  
      with self.assertRaisesRegexp(ValueError, ""):
          loc = _enumerate_step_points("foo", 0, 0, 10)
  
imports: from __future__ import absolute_import, division, print_function
  import os
  import numpy
  import tensorflow
  from niftynet.engine.sampler_grid_v2 import GridSampler, _enumerate_step_points, grid_spatial_coordinates
  from niftynet.io.image_reader import ImageReader
  from niftynet.io.image_sets_partitioner import ImageSetsPartitioner
  from niftynet.utilities.util_common import ParserNamespace
  from tests.niftynet_testcase import NiftyNetTestCase
label_desc: Use image node_id 1 for calling the StepPointsTest obj's underlying member method code with example usage: obj.test_steps() without return types