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() {