package mikera.arrayz; import static org.junit.Assert.*; import java.util.Arrays; import mikera.matrixx.Matrix; import mikera.matrixx.Matrix22; import mikera.matrixx.Matrixx; import mikera.vectorz.Scalar; import mikera.vectorz.Vector; import org.junit.Test; public class TestNDArray { @Test public void testScalarArray() { NDArray a=NDArray.newArray(); a.set(3.0); assertEquals(3.0,a.get(),0.0); assertEquals(1,a.elementCount()); assertEquals(1,a.nonZeroCount()); assertEquals(3.0,a.elementSum(),0.0); Scalar s=new Scalar(1.0); s.set(a); assertEquals(3.0,s.get(),0.0); s.set(2.0); a.set(s); assertEquals(2.0,a.get(),0.0); } @Test public void testScalarAdd() { NDArray a=NDArray.newArray(); assertEquals(a,new Scalar(0.0)); a.add(1.0); assertEquals(a,new Scalar(1.0)); assertFalse(a.equals(new Scalar(0.0))); } @Test public void testWrap() { Vector v=Vector.of(0,1,2,3); assertEquals(v,NDArray.wrap(v)); Matrix m=Matrix.create(Matrixx.createRandomSquareMatrix(3)); assertEquals(m,NDArray.wrap(m)); } @Test public void testVectorEquals() { NDArray a=NDArray.wrap(Vector.of(1,2)); assertTrue(a.equals(Vector.of(1,2))); assertTrue(!a.equals(Vector.of(1,2,3))); } @Test public void testClone() { INDArray a=NDArray.newArray(2,3,4,5); assertFalse(a.isView()); // should be fully packed a=a.slice(0); assertTrue(a.isView()); // should be a view a=a.mutable(); assertFalse(a.isView()); // should be fully packed again } @Test public void testOuterProduct() { NDArray a=NDArray.newArray(1,2,3); assertTrue(Arrays.equals(new int[] {1,2,3,1,2,3},a.outerProduct(a).getShape())); } @Test public void testInnerProduct() { Matrix m=Matrixx.createYAxisRotationMatrix(2.0).toMatrix(); NDArray a=NDArray.wrap(m); assertEquals(a.innerProduct(a),m.innerProduct(m)); } @Test public void testSlice() { Matrix22 m1=new Matrix22(1,2,3,4); Matrix22 m2=new Matrix22(5,6,7,8); NDArray a=NDArray.wrap(Array.create(Arrayz.create(m1,m2))); assertEquals(m2,a.slice(0,1)); assertEquals(new Matrix22(3,4,7,8),a.slice(1,1)); } }