@Test
  public void testWrap() {
    IComplexNDArray c = Nd4j.createComplex(Nd4j.linspace(1, 4, 4).reshape(2, 2));
    assertEquals(true, Arrays.equals(new int[] {2, 2}, c.shape()));

    IComplexNDArray vec = Nd4j.createComplex(Nd4j.linspace(1, 4, 4));
    assertEquals(true, vec.isVector());
    assertEquals(true, Shape.shapeEquals(new int[] {4}, vec.shape()));
  }
 @Test
 public void testBroadcast() {
   IComplexNDArray arr = Nd4j.complexLinSpace(1, 5, 5);
   IComplexNDArray arrs = arr.broadcast(new int[] {5, 5});
   IComplexNDArray arrs3 = Nd4j.createComplex(5, 5);
   assertTrue(Arrays.equals(arrs.shape(), arrs3.shape()));
   for (int i = 0; i < arrs.slices(); i++) arrs3.putSlice(i, arr);
   assertEquals(arrs3, arrs);
 }
  @Test
  public void testDimShuffle() {
    IComplexNDArray n = Nd4j.complexLinSpace(1, 4, 4).reshape(2, 2);
    IComplexNDArray twoOneTwo =
        n.dimShuffle(new Object[] {0, 'x', 1}, new int[] {0, 1}, new boolean[] {false, false});
    assertTrue(Arrays.equals(new int[] {2, 1, 2}, twoOneTwo.shape()));

    IComplexNDArray reverse =
        n.dimShuffle(new Object[] {1, 'x', 0}, new int[] {1, 0}, new boolean[] {false, false});
    assertTrue(Arrays.equals(new int[] {2, 1, 2}, reverse.shape()));
  }
  @Test
  public void testLeadingOnes() {
    IComplexNDArray complexRand = Nd4j.complexRand(100, 1, 28, 28);
    assertArrayEquals(new int[] {100, 1, 28, 28}, complexRand.shape());
    IComplexNDArray arr = complexRand.linearView();
    for (int i = 0; i < arr.length(); i++) {
      arr.putScalar(i, arr.getComplex(i));
    }

    IComplexNDArray complexRand2 = Nd4j.complexRand(28, 28, 1);
    assertArrayEquals(new int[] {28, 28, 1}, complexRand2.shape());
    IComplexNDArray arr2 = complexRand.linearView();
    for (int i = 0; i < arr2.length(); i++) {
      arr2.putScalar(i, arr2.getComplex(i));
    }
  }