### Question:
Arrays { public static <T> Array<T> slice(Array<T> org, int dim, int value) throws InvalidRangeException { ArrayList<Range> ranges = new ArrayList<>(org.getSection().getRanges()); ranges.set(dim, new Range(value, value)); Array<T> s = section(org, ranges); return reduce(s, dim); }  static Array<T> factory(DataType dataType, int[] shape, Storage<T> storage); static Array<T> factory(DataType dataType, int[] shape, Object dataArray); static Array<T> factory(DataType dataType, int[] shape); static Array<T> factoryCopy(DataType dataType, int[] shape, List<Array<T>> dataArrays); static Array<T> factoryArrays(DataType dataType, int[] shape, List<Array<?>> dataArrays); static Array<T> flip(Array<T> org, int dim); static Array<T> permute(Array<T> org, int[] dims); static Array<T> reshape(Array<T> org, int[] shape); static Array<T> reduce(Array<T> org); static Array<T> reduce(Array<T> org, int dim); static Array<T> section(Array<T> org, List<Range> ranges); static Array<T> slice(Array<T> org, int dim, int value); static Array<T> transpose(Array<T> org, int dim1, int dim2); static long computeSize(int[] shape); static boolean isVariableLength(int[] shape); static int[] removeVlen(int[] shape);  }### Answer:
@Test public void testSlice() throws InvalidRangeException { Array<Double> pArray = Arrays.slice(array, 2, 2); assertThat(pArray.getShape()).isEqualTo(new int[] {1, 2}); assertThat(pArray.get(0, 0)).isEqualTo(3); assertThat(pArray.get(0, 1)).isEqualTo(6); double total = 0.0; for (double val : pArray) { total += val; } assertThat(total).isEqualTo(9.0); }