@Test
  public void testConverters() {
    int[] start = new int[1];
    int[] stop = new int[1];
    int[] step = new int[1];
    int[] shape = new int[] {12};

    Slice.convertFromSlice(new Slice[] {null}, shape, start, stop, step);
    assertEquals(0, start[0]);
    assertEquals(12, stop[0]);
    assertEquals(1, step[0]);

    Slice.convertFromSlice(
        new Slice[] {new Slice(1, 11, 2).setLength(12)}, shape, start, stop, step);
    assertEquals(1, start[0]);
    assertEquals(11, stop[0]);
    assertEquals(2, step[0]);

    Slice.convertFromSlice(new Slice[] {new Slice().setLength(12)}, shape, start, stop, step);
    assertEquals(0, start[0]);
    assertEquals(12, stop[0]);
    assertEquals(1, step[0]);

    Slice[] sl = Slice.convertToSlice(start, stop, step);
    assertEquals(1, sl.length);
    assertEquals(0, (int) sl[0].getStart());
    assertEquals(12, (int) sl[0].getStop());
    assertEquals(1, sl[0].getStep());

    sl = Slice.convertFromString("[:,:,:,:]");
    assertEquals(4, sl.length);
    assertEquals(0, (int) sl[0].getStart());
    assertEquals(0, (int) sl[1].getStart());
    assertEquals(0, (int) sl[2].getStart());
    assertEquals(0, (int) sl[3].getStart());
    assertEquals(null, sl[0].getStop());
    assertEquals(null, sl[1].getStop());
    assertEquals(null, sl[2].getStop());
    assertEquals(null, sl[3].getStop());
    assertEquals(1, sl[0].getStep());
    assertEquals(1, sl[1].getStep());
    assertEquals(1, sl[2].getStep());
    assertEquals(1, sl[3].getStep());

    sl = Slice.convertFromString("[::]");
    assertEquals(0, (int) sl[0].getStart());
    assertEquals(null, sl[0].getStop());
    assertEquals(1, sl[0].getStep());

    sl = Slice.convertFromString("[1::]");
    assertEquals(1, (int) sl[0].getStart());
    assertEquals(null, sl[0].getStop());
    assertEquals(1, sl[0].getStep());

    sl = Slice.convertFromString("[:3:]");
    assertEquals(0, (int) sl[0].getStart());
    assertEquals(3, (int) sl[0].getStop());
    assertEquals(1, sl[0].getStep());

    sl = Slice.convertFromString("[::-1]");
    assertEquals(0, (int) sl[0].getStart());
    assertEquals(null, sl[0].getStop());
    assertEquals(-1, sl[0].getStep());

    sl = Slice.convertFromString("[10:2:-2]");
    assertEquals(10, (int) sl[0].getStart());
    assertEquals(2, (int) sl[0].getStop());
    assertEquals(-2, sl[0].getStep());
  }