You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ce...@apache.org on 2012/06/25 07:57:15 UTC

svn commit: r1353388 - in /commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear: RealVectorAbstractTest.java RealVectorTest.java

Author: celestin
Date: Mon Jun 25 05:57:14 2012
New Revision: 1353388

URL: http://svn.apache.org/viewvc?rev=1353388&view=rev
Log:
MATH-795: factored out test of getL1Norm, getL1Distance, getLInfNorm, getLInfDistance.

Modified:
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorTest.java

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java?rev=1353388&r1=1353387&r2=1353388&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java Mon Jun 25 05:57:14 2012
@@ -643,6 +643,11 @@ public abstract class RealVectorAbstract
         doTestGetDistance(true);
     }
 
+    @Test(expected = DimensionMismatchException.class)
+    public void testGetDistanceDimensionMismatch() {
+        create(new double[4]).getDistance(createAlien(new double[5]));
+    }
+
     @Test
     public void testGetNorm() {
         final double x = getPreferredEntryValue();
@@ -657,6 +662,104 @@ public abstract class RealVectorAbstract
         Assert.assertEquals("", expected, actual, 0d);
     }
 
+    private void doTestGetL1Distance(final boolean mixed) {
+        final double x = getPreferredEntryValue();
+        final double[] data1 = new double[] { x, x, 1d, x, 2d, x, x, 3d, x };
+        final double[] data2 = new double[] { 4d, x, x, 5d, 6d, 7d, x, x, 8d };
+        final RealVector v1 = create(data1);
+        final RealVector v2;
+        if (mixed) {
+            v2 = createAlien(data2);
+        } else {
+            v2 = create(data2);
+        }
+        final double actual = v1.getL1Distance(v2);
+        double expected = 0d;
+        for (int i = 0; i < data1.length; i++) {
+            final double delta = data2[i] - data1[i];
+            expected += FastMath.abs(delta);
+        }
+        Assert.assertEquals("", expected, actual, 0d);
+    }
+
+    @Test
+    public void testGetL1DistanceSameType() {
+        doTestGetL1Distance(false);
+    }
+
+    @Test
+    public void testGetL1DistanceMixedTypes() {
+        doTestGetL1Distance(true);
+    }
+
+    @Test(expected = DimensionMismatchException.class)
+    public void testGetL1DistanceDimensionMismatch() {
+        create(new double[4]).getL1Distance(createAlien(new double[5]));
+    }
+
+    @Test
+    public void testGetL1Norm() {
+        final double x = getPreferredEntryValue();
+        final double[] data = new double[] { x, x, 1d, x, 2d, x, x, 3d, x };
+        final RealVector v = create(data);
+        final double actual = v.getL1Norm();
+        double expected = 0d;
+        for (int i = 0; i < data.length; i++) {
+            expected += FastMath.abs(data[i]);
+        }
+        Assert.assertEquals("", expected, actual, 0d);
+
+    }
+
+    private void doTestGetLInfDistance(final boolean mixed) {
+        final double x = getPreferredEntryValue();
+        final double[] data1 = new double[] { x, x, 1d, x, 2d, x, x, 3d, x };
+        final double[] data2 = new double[] { 4d, x, x, 5d, 6d, 7d, x, x, 8d };
+        final RealVector v1 = create(data1);
+        final RealVector v2;
+        if (mixed) {
+            v2 = createAlien(data2);
+        } else {
+            v2 = create(data2);
+        }
+        final double actual = v1.getLInfDistance(v2);
+        double expected = 0d;
+        for (int i = 0; i < data1.length; i++) {
+            final double delta = data2[i] - data1[i];
+            expected = FastMath.max(expected, FastMath.abs(delta));
+        }
+        Assert.assertEquals("", expected, actual, 0d);
+    }
+
+    @Test
+    public void testGetLInfDistanceSameType() {
+        doTestGetLInfDistance(false);
+    }
+
+    @Test
+    public void testGetLInfDistanceMixedTypes() {
+        doTestGetLInfDistance(true);
+    }
+
+    @Test(expected = DimensionMismatchException.class)
+    public void testGetLInfDistanceDimensionMismatch() {
+        create(new double[4]).getLInfDistance(createAlien(new double[5]));
+    }
+
+    @Test
+    public void testGetLInfNorm() {
+        final double x = getPreferredEntryValue();
+        final double[] data = new double[] { x, x, 1d, x, 2d, x, x, 3d, x };
+        final RealVector v = create(data);
+        final double actual = v.getLInfNorm();
+        double expected = 0d;
+        for (int i = 0; i < data.length; i++) {
+            expected = FastMath.max(expected, FastMath.abs(data[i]));
+        }
+        Assert.assertEquals("", expected, actual, 0d);
+
+    }
+
     @Test
     public void testDataInOut() {
         final RealVector v1 = create(vec1);
@@ -1052,39 +1155,6 @@ public abstract class RealVectorAbstract
 
         final RealVector v2_t = createAlien(vec2);
 
-        // emacs calc: [-4, 0, 3, 1, -6, 3] A --> 8.4261497731763586307
-        double d_getNorm = v5.getNorm();
-        Assert.assertEquals("compare values  ", 8.4261497731763586307,
-                            d_getNorm, normTolerance);
-
-        // emacs calc: [-4, 0, 3, 1, -6, 3] vN --> 17
-        double d_getL1Norm = v5.getL1Norm();
-        Assert.assertEquals("compare values  ", 17.0, d_getL1Norm,
-                            normTolerance);
-
-        // emacs calc: [-4, 0, 3, 1, -6, 3] vn --> 6
-        double d_getLInfNorm = v5.getLInfNorm();
-        Assert.assertEquals("compare values  ", 6.0, d_getLInfNorm,
-                            normTolerance);
-
-        // octave = ???
-        double d_getL1Distance = v1.getL1Distance(v2);
-        Assert.assertEquals("compare values  ", 9d, d_getL1Distance,
-                            normTolerance);
-
-        double d_getL1Distance_2 = v1.getL1Distance(v2_t);
-        Assert.assertEquals("compare values  ", 9d, d_getL1Distance_2,
-                            normTolerance);
-
-        // octave = ???
-        double d_getLInfDistance = v1.getLInfDistance(v2);
-        Assert.assertEquals("compare values  ", 3d, d_getLInfDistance,
-                            normTolerance);
-
-        double d_getLInfDistance_2 = v1.getLInfDistance(v2_t);
-        Assert.assertEquals("compare values  ", 3d, d_getLInfDistance_2,
-                            normTolerance);
-
         // octave dot(v1,v2)
         double dot = v1.dotProduct(v2);
         Assert.assertEquals("compare val ", 32d, dot, normTolerance);

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorTest.java?rev=1353388&r1=1353387&r2=1353388&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorTest.java Mon Jun 25 05:57:14 2012
@@ -327,6 +327,20 @@ public class RealVectorTest extends Real
     }
 
     @Test
+    @Ignore("Abstract class RealVector does not implement getL1Norm()")
+    @Override
+    public void testGetL1Norm() {
+        // Do nothing
+    }
+
+    @Test
+    @Ignore("Abstract class RealVector does not implement getLInfNorm()")
+    @Override
+    public void testGetLInfNorm() {
+        // Do nothing
+    }
+
+    @Test
     @Ignore
     @Override
     public void testBasicFunctions() {