def METHOD_NAME(self, name, lhs, rhs, dtype):
    if name in ("left_shift", "right_shift") and dtype == inp.bool:
        pytest.skip("A shift operation isn't implemented for bool type")
    elif numpy.isscalar(lhs) and numpy.isscalar(rhs):
        pytest.skip("Both inputs can't be scalars")
    dp_a = self.array_or_scalar(inp, lhs, dtype=dtype)
    dp_b = self.array_or_scalar(inp, rhs, dtype=dtype)
    result = getattr(inp, name)(dp_a, dp_b)
    np_a = self.array_or_scalar(numpy, lhs, dtype=dtype)
    np_b = self.array_or_scalar(numpy, rhs, dtype=dtype)
    expected = getattr(numpy, name)(np_a, np_b)
    assert_array_equal(result, expected)
    return (dp_a, dp_b, np_a, np_b)