'arr_2d[a:b:c, d:e:f]'

def test_2d_slicing2(self, flags=enable_pyobj_flags):

    pyfunc = slicing_2d_usecase
    arraytype = types.Array(types.int32, 2, 'C')
    argtys = (arraytype, types.int32, types.int32, types.int32, types.int32, types.int32, types.int32)
    cr = compile_isolated(pyfunc, argtys, flags=flags)
    cfunc = cr.entry_point
    a = np.arange(100, dtype='i4').reshape(10, 10)
    indices = [(0, 10, 1), (2, 3, 1), (10, 0, 1), (0, 10, (-1)), (0, 10, 2), (10, 0, (-1)), (9, 0, (-2)), ((-5), (-2), 1), (0, (-1), 1)]
    args = [(tup1 + tup2) for (tup1, tup2) in itertools.product(indices, indices)]
    for arg in args:
        expected = pyfunc(a, *arg)
        self.assertPreciseEqual(cfunc(a, *arg), expected)
    arraytype = types.Array(types.int32, 2, 'A')
    argtys = (arraytype, types.int32, types.int32, types.int32, types.int32, types.int32, types.int32)
    cr = compile_isolated(pyfunc, argtys, flags=flags)
    cfunc = cr.entry_point
    a = np.arange(400, dtype='i4').reshape(20, 20)[::2, ::2]
    for arg in args:
        expected = pyfunc(a, *arg)
        self.assertPreciseEqual(cfunc(a, *arg), expected)
