code: def test_zero_size_2(self, xp, scp, klass, y_shape, axis):
      x = xp.arange(10)
      y = xp.zeros(y_shape)
      xval = xp.arange(3)
  
      cls = getattr(scp.interpolate, klass)
      obj = cls(x, y)
      r1 = obj(xval)
      assert r1.size == 0
      assert r1.shape == xval.shape + y.shape[1:]
  
      # Also check with an explicit non-default axis
      yt = xp.moveaxis(
          y, 0, axis
      )  # (10, 0, 5) --> (0, 10, 5) if axis=1 etc
  
      obj = cls(x, yt, axis=axis)
      sh = yt.shape[:axis] + (xval.size,) + yt.shape[axis + 1 :]
      r2 = obj(xval)
      assert r2.size == 0
      assert r2.shape == sh
      return r1, r2
  
imports: import io
  import warnings
  import numpy
  import pytest
  import cupy
  from cupy.cuda import runtime
  from cupy import testing
  import cupyx.scipy.interpolate
  from cupyx.scipy.interpolate import CubicHermiteSpline
label_desc: Use image node_id 2 for calling the TestZeroSizeArrays obj's underlying member method code with example usage: obj.test_zero_size_2(xp, scp, klass, y_shape, axis) and returns: r1,  r2