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/05 07:37:37 UTC

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

Author: celestin
Date: Tue Jun  5 05:37:37 2012
New Revision: 1346243

URL: http://svn.apache.org/viewvc?rev=1346243&view=rev
Log:
MATH-795
  - Factored out testSerial().
  - In RealVectorTest, the vector returned by create(double[]) should really be
of type RealVectorTest.TestVectorImpl, as the minimal implementation is to be
tested. This causes some tests not to pass, they are skipped for the time
being (overriden from RealVectorAbstractTest, without @Test annotation). When
the tests in RealVectorAbstractTest are split, only the smaller tests which do
not make sense in the present context will be skipped.
  - In RealVectorTest, the constructor of RealVectorTest.TestVectorImpl now
makes a defensive copy of the specified double[] array (see Javadoc of
    + RealVectorAbstractTest.create(double[]),
    + RealVectorAbstractTest.createAlien(double[]).

Modified:
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/ArrayRealVectorTest.java
    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
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/SparseRealVectorTest.java

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/ArrayRealVectorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/ArrayRealVectorTest.java?rev=1346243&r1=1346242&r2=1346243&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/ArrayRealVectorTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/ArrayRealVectorTest.java Tue Jun  5 05:37:37 2012
@@ -500,12 +500,6 @@ public class ArrayRealVectorTest extends
     }
 
     @Test
-    public void testSerial()  {
-        ArrayRealVector v = new ArrayRealVector(new double[] { 0, 1, 2 });
-        Assert.assertEquals(v,TestUtils.serializeAndRecover(v));
-    }
-
-    @Test
     public void testZeroVectors() {
         Assert.assertEquals(0, new ArrayRealVector(new double[0]).getDimension());
         Assert.assertEquals(0, new ArrayRealVector(new double[0], true).getDimension());

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=1346243&r1=1346242&r2=1346243&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 Tue Jun  5 05:37:37 2012
@@ -20,6 +20,7 @@ import java.util.Arrays;
 
 import junit.framework.Assert;
 
+import org.apache.commons.math3.TestUtils;
 import org.apache.commons.math3.analysis.function.Abs;
 import org.apache.commons.math3.analysis.function.Acos;
 import org.apache.commons.math3.analysis.function.Asin;
@@ -55,7 +56,10 @@ import org.junit.Test;
 public abstract class RealVectorAbstractTest {
     /**
      * Creates a new instance of {@link RealVector}, with specified entries.
-     * The returned vector must be of the type currently tested.
+     * The returned vector must be of the type currently tested. It should be
+     * noted that some tests assume that no references to the specified
+     * {@code double[]} are kept in the returned object: if necessary, defensive
+     * copy of this array should be made.
      *
      * @param data the entries of the vector to be created
      * @return a new {@link RealVector} of the type to be tested
@@ -65,7 +69,9 @@ public abstract class RealVectorAbstract
     /**
      * Creates a new instance of {@link RealVector}, with specified entries.
      * The type of the returned vector must be different from the type currently
-     * tested.
+     * tested. It should be noted that some tests assume that no references to
+     * the specified {@code double[]} are kept in the returned object: if
+     * necessary, defensive copy of this array should be made.
      *
      * @param data the entries of the vector to be created
      * @return a new {@link RealVector} of an alien type
@@ -740,6 +746,12 @@ public abstract class RealVectorAbstract
         Assert.assertTrue(v.equals(v.getSubVector(0, v.getDimension())));
     }
 
+    @Test
+    public void testSerial()  {
+        RealVector v = create(new double[] { 0, 1, 2 });
+        Assert.assertEquals(v,TestUtils.serializeAndRecover(v));
+    }
+
     /*
      * TESTS OF THE VISITOR PATTERN
      */

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=1346243&r1=1346242&r2=1346243&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 Tue Jun  5 05:37:37 2012
@@ -22,6 +22,8 @@ import org.junit.Assert;
 import org.apache.commons.math3.analysis.UnivariateFunction;
 import org.apache.commons.math3.exception.DimensionMismatchException;
 import org.apache.commons.math3.linear.RealVector.Entry;
+import org.apache.commons.math3.util.MathArrays;
+
 import java.util.Iterator;
 import java.util.Random;
 
@@ -36,7 +38,7 @@ public class RealVectorTest extends Real
         private double[] values;
 
         TestVectorImpl(double[] values) {
-            this.values = values;
+            this.values = MathArrays.copyOf(values);
         }
 
         @Override
@@ -346,11 +348,45 @@ public class RealVectorTest extends Real
 
     @Override
     public RealVector create(final double[] data) {
-        return new OpenMapRealVector(data);
+        return new TestVectorImpl(data);
     }
 
     @Override
     public RealVector createAlien(double[] data) {
         return new TestVectorImpl(data);
     }
+
+    @Override
+    public void testDataInOut() {
+        /*
+         *  TODO Some of the tests carried out in testDataInOut() do not pass,
+         *  as the methods to be tested are not implemented in TestVectorImpl.
+         *  For the time being, testDataInOut() is overriden, while ommitting
+         *  the @Test annotation, which effectively skips the test.
+         *
+         *  In the future, testDataInOut() should be split in smaller units, and
+         *  only those units which do not make sense should be skipped.
+         */
+    }
+
+    @Override
+    public void testPredicates() {
+        /*
+         *  TODO Some of the tests carried out in testPredicates() do not pass,
+         *  as the methods to be tested are not implemented in TestVectorImpl.
+         *  For the time being, testPredicates() is overriden, while ommitting
+         *  the @Test annotation, which effectively skips the test.
+         *
+         *  In the future, testPredicates() should be split in smaller units, and
+         *  only those units which do not make sense should be skipped.
+         */
+    }
+
+    @Override
+    public void testSerial() {
+        /*
+         * Abstract class RealVector is not serializable, so this test is skipped
+         * (@Test annotation ommitted).
+         */
+    }
 }

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/SparseRealVectorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/SparseRealVectorTest.java?rev=1346243&r1=1346242&r2=1346243&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/SparseRealVectorTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/SparseRealVectorTest.java Tue Jun  5 05:37:37 2012
@@ -298,12 +298,6 @@ public class SparseRealVectorTest extend
 
     }
 
-    @Test
-    public void testSerial()  {
-        OpenMapRealVector v = new OpenMapRealVector(new double[] { 0, 1, 2 });
-        Assert.assertEquals(v,TestUtils.serializeAndRecover(v));
-    }
-
     /* Check that the operations do not throw an exception (cf. MATH-645). */
     @Test
     public void testConcurrentModification() {