class_docstr: Note: call self.can_use() when arrays are already allocated, otherwise
  call self._test_can_use().
code: def _test_can_use(
      self, i_shape, o_shape, r_axis, o_axis, order, expected
  ):
      in_args = [
          cupy.testing.shaped_arange(i_shape, order=order),
      ]
      out_args = [
          cupy.testing.shaped_arange(o_shape, order=order),
      ]
      result = (
          self.can_use(in_args, out_args, r_axis, o_axis) is not None
      )
      assert result is expected
  
imports: from itertools import combinations
  import unittest
  import sys
  import cupy
  from cupy import _environment
  from cupy import testing
  from cupy._core import _accelerator
  from cupy._core import _cub_reduction
  from cupy.cuda import memory
label_desc: Use image node_id 3 for calling the CubReductionTestBase obj's underlying member method code with example usage: obj._test_can_use(i_shape, o_shape, r_axis, o_axis, order, expected) without return types