diff --git a/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsImplTest.java b/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsImplTest.java
index f65206329..933b60447 100644
--- a/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsImplTest.java
+++ b/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsImplTest.java
@@ -1,251 +1,39 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
package org.apache.commons.math.stat.descriptive;
import junit.framework.Test;
-import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.commons.math.random.RandomData;
-import org.apache.commons.math.random.RandomDataImpl;
-
/**
* Test cases for the {@link Univariate} class.
- *
- * @version $Revision$ $Date$
+ * @version $Revision$ $Date: 2007-08-16 15:36:33 -0500 (Thu, 16 Aug
+ * 2007) $
*/
-
-public final class DescriptiveStatisticsImplTest extends TestCase {
- private double one = 1;
- private float two = 2;
- private int three = 3;
- private double mean = 2;
- private double sumSq = 18;
- private double sum = 8;
- private double var = 0.666666666666666666667;
- private double std = Math.sqrt(var);
- private double n = 4;
- private double min = 1;
- private double max = 3;
- private double tolerance = 10E-15;
+public final class DescriptiveStatisticsImplTest extends DescriptiveStatisticsTest {
public DescriptiveStatisticsImplTest(String name) {
super(name);
}
-
- public void setUp() {
- }
-
+
public static Test suite() {
TestSuite suite = new TestSuite(DescriptiveStatisticsImplTest.class);
- suite.setName("DescriptiveStatistics Tests");
+ suite.setName("DescriptiveStatisticsImpl Tests");
return suite;
}
-
- /** test stats */
- public void testStats() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- assertEquals("total count",0,u.getN(),tolerance);
- u.addValue(one);
- u.addValue(two);
- u.addValue(two);
- u.addValue(three);
- assertEquals("N",n,u.getN(),tolerance);
- assertEquals("sum",sum,u.getSum(),tolerance);
- assertEquals("sumsq",sumSq,u.getSumsq(),tolerance);
- assertEquals("var",var,u.getVariance(),tolerance);
- assertEquals("std",std,u.getStandardDeviation(),tolerance);
- assertEquals("mean",mean,u.getMean(),tolerance);
- assertEquals("min",min,u.getMin(),tolerance);
- assertEquals("max",max,u.getMax(),tolerance);
- u.clear();
- assertEquals("total count",0,u.getN(),tolerance);
- }
-
- public void testN0andN1Conditions() throws Exception {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
-
- assertTrue("Mean of n = 0 set should be NaN",
- Double.isNaN( u.getMean() ) );
- assertTrue("Standard Deviation of n = 0 set should be NaN",
- Double.isNaN( u.getStandardDeviation() ) );
- assertTrue("Variance of n = 0 set should be NaN",
- Double.isNaN(u.getVariance() ) );
- u.addValue(one);
-
- assertTrue( "Mean of n = 1 set should be value of single item n1",
- u.getMean() == one);
- assertTrue( "StdDev of n = 1 set should be zero, instead it is: "
- + u.getStandardDeviation(), u.getStandardDeviation() == 0);
- assertTrue( "Variance of n = 1 set should be zero",
- u.getVariance() == 0);
+ protected DescriptiveStatistics createDescriptiveStatistics() {
+ return new DescriptiveStatisticsImpl();
}
-
- public void testSkewAndKurtosis() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
-
- double[] testArray =
- { 12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3, 14.1,
- 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10, 8.8, 9, 12.3 };
- for( int i = 0; i < testArray.length; i++) {
- u.addValue( testArray[i]);
- }
-
- assertEquals("mean", 12.40455, u.getMean(), 0.0001);
- assertEquals("variance", 10.00236, u.getVariance(), 0.0001);
- assertEquals("skewness", 1.437424, u.getSkewness(), 0.0001);
- assertEquals("kurtosis", 2.37719, u.getKurtosis(), 0.0001);
- }
-
- public void testProductAndGeometricMean() throws Exception {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- u.setWindowSize(10);
-
- u.addValue( 1.0 );
- u.addValue( 2.0 );
- u.addValue( 3.0 );
- u.addValue( 4.0 );
-
- //assertEquals( "Product not expected",
- // 24.0, u.getProduct(), Double.MIN_VALUE );
- assertEquals( "Geometric mean not expected",
- 2.213364, u.getGeometricMean(), 0.00001 );
-
- // Now test rolling - StorelessDescriptiveStatistics should discount the contribution
- // of a discarded element
- for( int i = 0; i < 10; i++ ) {
- u.addValue( i + 2 );
- }
- // Values should be (2,3,4,5,6,7,8,9,10,11)
-
- //assertEquals( "Product not expected", 39916800.0,
- // u.getProduct(), 0.00001 );
- assertEquals( "Geometric mean not expected", 5.755931,
- u.getGeometricMean(), 0.00001 );
- }
-
- public void testGetSortedValues() {
- double[] test1 = {5,4,3,2,1};
- double[] test2 = {5,2,1,3,4,0};
- double[] test3 = {1};
- int[] testi = null;
- double[] test4 = null;
- RandomData rd = new RandomDataImpl();
- tstGetSortedValues(test1);
- tstGetSortedValues(test2);
- tstGetSortedValues(test3);
- for (int i = 0; i < 10; i++) {
- testi = rd.nextPermutation(10,6);
- test4 = new double[6];
- for (int j = 0; j < testi.length; j++) {
- test4[j] = (double) testi[j];
- }
- tstGetSortedValues(test4);
- }
- for (int i = 0; i < 10; i++) {
- testi = rd.nextPermutation(10,5);
- test4 = new double[5];
- for (int j = 0; j < testi.length; j++) {
- test4[j] = (double) testi[j];
- }
- tstGetSortedValues(test4);
- }
- }
-
-
- private void tstGetSortedValues(double[] test) {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- for (int i = 0; i < test.length; i++) {
- u.addValue(test[i]);
- }
- double[] sorted = u.getSortedValues();
- if (sorted.length != test.length) {
- fail("wrong length for sorted values array");
- }
- for (int i = 0; i < sorted.length-1; i++) {
- if (sorted[i] > sorted[i+1]) {
- fail("sorted values out of sequence");
- }
- }
- }
-
- public void testPercentiles() {
- double[] test = {5,4,3,2,1};
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- for (int i = 0; i < test.length; i++) {
- u.addValue(test[i]);
- }
- assertEquals("expecting min",1,u.getPercentile(5),10E-12);
- assertEquals("expecting max",5,u.getPercentile(99),10E-12);
- assertEquals("expecting middle",3,u.getPercentile(50),10E-12);
- try {
- u.getPercentile(0);
- fail("expecting IllegalArgumentException for getPercentile(0)");
- } catch (IllegalArgumentException ex) {
- ;
- }
- try {
- u.getPercentile(120);
- fail("expecting IllegalArgumentException for getPercentile(120)");
- } catch (IllegalArgumentException ex) {
- ;
- }
-
- u.clear();
- double[] test2 = {1,2,3,4};
- for (int i = 0; i < test2.length; i++) {
- u.addValue(test2[i]);
- }
- assertEquals("Q1",1.25,u.getPercentile(25),10E-12);
- assertEquals("Q3",3.75,u.getPercentile(75),10E-12);
- assertEquals("Q2",2.5,u.getPercentile(50),10E-12);
-
- u.clear();
- double[] test3 = {1};
- for (int i = 0; i < test3.length; i++) {
- u.addValue(test3[i]);
- }
- assertEquals("Q1",1,u.getPercentile(25),10E-12);
- assertEquals("Q3",1,u.getPercentile(75),10E-12);
- assertEquals("Q2",1,u.getPercentile(50),10E-12);
-
- u.clear();
- RandomData rd = new RandomDataImpl();
- int[] testi = rd.nextPermutation(100,100); // will contain 0-99
- for (int j = 0; j < testi.length; j++) {
- u.addValue((double) testi[j]); //OK, laugh at me for the cast
- }
- for (int i = 1; i < 100; i++) {
- assertEquals("percentile " + i,
- (double) i-1 + (double) i*(.01), u.getPercentile(i),10E-12);
- }
-
- u.clear();
- double[] test4 = {1,2,3,4,100};
- for (int i = 0; i < test4.length; i++) {
- u.addValue(test4[i]);
- }
- assertEquals("80th",80.8,u.getPercentile(80),10E-12);
-
- u.clear();
- assertTrue("empty value set should return NaN",
- Double.isNaN(u.getPercentile(50)));
- }
-
}
-
diff --git a/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsTest.java b/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsTest.java
index 46d605108..f9473f084 100644
--- a/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsTest.java
+++ b/src/test/org/apache/commons/math/stat/descriptive/DescriptiveStatisticsTest.java
@@ -29,122 +29,40 @@ import org.apache.commons.math.random.RandomDataImpl;
*
* @version $Revision$ $Date$
*/
-
-public final class DescriptiveStatisticsTest extends TestCase {
- private double one = 1;
- private float two = 2;
- private int three = 3;
- private double mean = 2;
- private double sumSq = 18;
- private double sum = 8;
+public abstract class DescriptiveStatisticsTest extends TestCase {
private double var = 0.666666666666666666667;
- private double std = Math.sqrt(var);
- private double n = 4;
- private double min = 1;
private double max = 3;
+ private double mean = 2;
+ private double min = 1;
+ private double n = 4;
+ private double one = 1;
+ private double std = Math.sqrt(var);
+ private double sum = 8;
+ private double sumSq = 18;
+ private int three = 3;
private double tolerance = 10E-15;
+ private float two = 2;
public DescriptiveStatisticsTest(String name) {
super(name);
}
- public void setUp() {
- }
-
public static Test suite() {
TestSuite suite = new TestSuite(DescriptiveStatisticsTest.class);
suite.setName("Descriptive Statistics Tests");
return suite;
}
- /** test stats */
- public void testStats() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- assertEquals("total count",0,u.getN(),tolerance);
- u.addValue(one);
- u.addValue(two);
- u.addValue(two);
- u.addValue(three);
- assertEquals("N",n,u.getN(),tolerance);
- assertEquals("sum",sum,u.getSum(),tolerance);
- assertEquals("sumsq",sumSq,u.getSumsq(),tolerance);
- assertEquals("var",var,u.getVariance(),tolerance);
- assertEquals("std",std,u.getStandardDeviation(),tolerance);
- assertEquals("mean",mean,u.getMean(),tolerance);
- assertEquals("min",min,u.getMin(),tolerance);
- assertEquals("max",max,u.getMax(),tolerance);
- u.clear();
- assertEquals("total count",0,u.getN(),tolerance);
- }
+ protected abstract DescriptiveStatistics createDescriptiveStatistics();
- public void testN0andN1Conditions() throws Exception {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
-
- assertTrue("Mean of n = 0 set should be NaN",
- Double.isNaN( u.getMean() ) );
- assertTrue("Standard Deviation of n = 0 set should be NaN",
- Double.isNaN( u.getStandardDeviation() ) );
- assertTrue("Variance of n = 0 set should be NaN",
- Double.isNaN(u.getVariance() ) );
-
- u.addValue(one);
-
- assertTrue( "Mean of n = 1 set should be value of single item n1",
- u.getMean() == one);
- assertTrue( "StdDev of n = 1 set should be zero, instead it is: "
- + u.getStandardDeviation(), u.getStandardDeviation() == 0);
- assertTrue( "Variance of n = 1 set should be zero",
- u.getVariance() == 0);
- }
-
- public void testSkewAndKurtosis() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
-
- double[] testArray =
- { 12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3, 14.1,
- 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10, 8.8, 9, 12.3 };
- for( int i = 0; i < testArray.length; i++) {
- u.addValue( testArray[i]);
- }
-
- assertEquals("mean", 12.40455, u.getMean(), 0.0001);
- assertEquals("variance", 10.00236, u.getVariance(), 0.0001);
- assertEquals("skewness", 1.437424, u.getSkewness(), 0.0001);
- assertEquals("kurtosis", 2.37719, u.getKurtosis(), 0.0001);
+ public void setUp() {
}
- public void testProductAndGeometricMean() throws Exception {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- u.setWindowSize(10);
-
- u.addValue( 1.0 );
- u.addValue( 2.0 );
- u.addValue( 3.0 );
- u.addValue( 4.0 );
-
- //assertEquals( "Product not expected",
- // 24.0, u.getProduct(), Double.MIN_VALUE );
- assertEquals( "Geometric mean not expected",
- 2.213364, u.getGeometricMean(), 0.00001 );
-
- // Now test rolling - StorelessDescriptiveStatistics should discount the contribution
- // of a discarded element
- for( int i = 0; i < 10; i++ ) {
- u.addValue( i + 2 );
- }
- // Values should be (2,3,4,5,6,7,8,9,10,11)
-
- //assertEquals( "Product not expected", 39916800.0,
- // u.getProduct(), 0.00001 );
- assertEquals( "Geometric mean not expected", 5.755931,
- u.getGeometricMean(), 0.00001 );
- }
-
public void testAddValue() {
double[] test1 = {5,4,3,2,1,0};
double[] test2 = {5,2,1,0,4,3};
- DescriptiveStatistics stats = DescriptiveStatistics.newInstance();
+ DescriptiveStatistics stats = createDescriptiveStatistics();
stats.setWindowSize(12);
for(int i = 0; i < test1.length; i++){
@@ -189,7 +107,7 @@ public final class DescriptiveStatisticsTest extends TestCase {
//System.out.println(test3[i] + " "+test2[i-6]);
}
- }
+ }
public void testGetSortedValues() {
double[] test1 = {5,4,3,2,1};
@@ -219,28 +137,54 @@ public final class DescriptiveStatisticsTest extends TestCase {
}
}
-
-
- private void tstGetSortedValues(double[] test) {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- u.setWindowSize(test.length);
- for (int i = 0; i < test.length; i++) {
- u.addValue(test[i]);
+ public void testN0andN1Conditions() throws Exception {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+
+ assertTrue("Mean of n = 0 set should be NaN",
+ Double.isNaN( u.getMean() ) );
+ assertTrue("Standard Deviation of n = 0 set should be NaN",
+ Double.isNaN( u.getStandardDeviation() ) );
+ assertTrue("Variance of n = 0 set should be NaN",
+ Double.isNaN(u.getVariance() ) );
+
+ u.addValue(one);
+
+ assertTrue( "Mean of n = 1 set should be value of single item n1",
+ u.getMean() == one);
+ assertTrue( "StdDev of n = 1 set should be zero, instead it is: "
+ + u.getStandardDeviation(), u.getStandardDeviation() == 0);
+ assertTrue( "Variance of n = 1 set should be zero",
+ u.getVariance() == 0);
+ }
+
+ public void testNewInstanceClassNull() {
+ try {
+ DescriptiveStatistics.newInstance((Class)null);
+ fail("null is not a valid descriptive statistics class");
+ } catch (NullPointerException ex) {
+ // success
+ } catch (Exception ex) {
+ fail();
}
- double[] sorted = u.getSortedValues();
- if (sorted.length != test.length) {
- fail("wrong length for sorted values array");
- }
- for (int i = 0; i < sorted.length-1; i++) {
- if (sorted[i] > sorted[i+1]) {
- fail("sorted values out of sequence");
- }
+
+ }
+
+ public void testNewInstanceClassValid() {
+ try {
+ DescriptiveStatistics u = DescriptiveStatistics.newInstance(
+ DescriptiveStatisticsImpl.class);
+ assertNotNull(u);
+ assertTrue(u instanceof DescriptiveStatisticsImpl);
+ } catch (InstantiationException ex) {
+ fail();
+ } catch (IllegalAccessException ex) {
+ fail();
}
}
public void testPercentiles() {
double[] test = {5,4,3,2,1};
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
+ DescriptiveStatistics u = createDescriptiveStatistics();
u.setWindowSize(110);
for (int i = 0; i < test.length; i++) {
u.addValue(test[i]);
@@ -301,10 +245,39 @@ public final class DescriptiveStatisticsTest extends TestCase {
assertTrue("empty value set should return NaN",
Double.isNaN(u.getPercentile(50)));
}
-
+
+
+
+ public void testProductAndGeometricMean() throws Exception {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+ u.setWindowSize(10);
+
+ u.addValue( 1.0 );
+ u.addValue( 2.0 );
+ u.addValue( 3.0 );
+ u.addValue( 4.0 );
+
+ //assertEquals( "Product not expected",
+ // 24.0, u.getProduct(), Double.MIN_VALUE );
+ assertEquals( "Geometric mean not expected",
+ 2.213364, u.getGeometricMean(), 0.00001 );
+
+ // Now test rolling - StorelessDescriptiveStatistics should discount the contribution
+ // of a discarded element
+ for( int i = 0; i < 10; i++ ) {
+ u.addValue( i + 2 );
+ }
+ // Values should be (2,3,4,5,6,7,8,9,10,11)
+
+ //assertEquals( "Product not expected", 39916800.0,
+ // u.getProduct(), 0.00001 );
+ assertEquals( "Geometric mean not expected", 5.755931,
+ u.getGeometricMean(), 0.00001 );
+ }
+
/** test stats */
public void testSerialization() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
+ DescriptiveStatistics u = createDescriptiveStatistics();
assertEquals("total count",0,u.getN(),tolerance);
u.addValue(one);
u.addValue(two);
@@ -325,51 +298,60 @@ public final class DescriptiveStatisticsTest extends TestCase {
u2.clear();
assertEquals("total count",0,u2.getN(),tolerance);
+ }
+
+ public void testSkewAndKurtosis() {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+
+ double[] testArray =
+ { 12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3, 14.1,
+ 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10, 8.8, 9, 12.3 };
+ for( int i = 0; i < testArray.length; i++) {
+ u.addValue( testArray[i]);
+ }
+
+ assertEquals("mean", 12.40455, u.getMean(), 0.0001);
+ assertEquals("variance", 10.00236, u.getVariance(), 0.0001);
+ assertEquals("skewness", 1.437424, u.getSkewness(), 0.0001);
+ assertEquals("kurtosis", 2.37719, u.getKurtosis(), 0.0001);
}
- public void testNewInstanceClassNull() {
- try {
- DescriptiveStatistics.newInstance((Class)null);
- fail("null is not a valid descriptive statistics class");
- } catch (NullPointerException ex) {
- // success
- } catch (Exception ex) {
- fail();
- }
-
+ /** test stats */
+ public void testStats() {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+ assertEquals("total count",0,u.getN(),tolerance);
+ u.addValue(one);
+ u.addValue(two);
+ u.addValue(two);
+ u.addValue(three);
+ assertEquals("N",n,u.getN(),tolerance);
+ assertEquals("sum",sum,u.getSum(),tolerance);
+ assertEquals("sumsq",sumSq,u.getSumsq(),tolerance);
+ assertEquals("var",var,u.getVariance(),tolerance);
+ assertEquals("std",std,u.getStandardDeviation(),tolerance);
+ assertEquals("mean",mean,u.getMean(),tolerance);
+ assertEquals("min",min,u.getMin(),tolerance);
+ assertEquals("max",max,u.getMax(),tolerance);
+ u.clear();
+ assertEquals("total count",0,u.getN(),tolerance);
}
- public void testNewInstanceClassValid() {
- try {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance(
- DescriptiveStatisticsImpl.class);
- assertNotNull(u);
- assertTrue(u instanceof DescriptiveStatisticsImpl);
- } catch (InstantiationException ex) {
- fail();
- } catch (IllegalAccessException ex) {
- fail();
- }
- }
-
- public void testWindowSize() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- u.setWindowSize(1234);
- assertEquals(1234, u.getWindowSize());
-
- u.addValue(1.0);
- u.addValue(2.0);
- u.addValue(3.0);
- u.addValue(4.0);
- u.addValue(5.0);
- assertEquals(5, u.getN());
-
- u.setWindowSize(DescriptiveStatistics.INFINITE_WINDOW);
- assertEquals(5, u.getN());
+ public void testToString() {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+ assertTrue(u.toString().indexOf("NaN") > 0);
+ assertTrue(u.toString().startsWith("DescriptiveStatistics"));
+ double[] testArray =
+ { 12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3, 14.1,
+ 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10, 8.8, 9, 12.3 };
+ for( int i = 0; i < testArray.length; i++) {
+ u.addValue( testArray[i]);
+ }
+ assertTrue(u.toString().indexOf("NaN") == -1);
+ assertTrue(u.toString().startsWith("DescriptiveStatistics"));
}
public void testWindowing() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
+ DescriptiveStatistics u = createDescriptiveStatistics();
u.setWindowSize(2);
u.addValue(1.0);
@@ -385,18 +367,37 @@ public final class DescriptiveStatisticsTest extends TestCase {
assertEquals(3.0, u.getMean(), tolerance);
}
- public void testToString() {
- DescriptiveStatistics u = DescriptiveStatistics.newInstance();
- assertTrue(u.toString().indexOf("NaN") > 0);
- assertTrue(u.toString().startsWith("DescriptiveStatistics"));
- double[] testArray =
- { 12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3, 14.1,
- 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10, 8.8, 9, 12.3 };
- for( int i = 0; i < testArray.length; i++) {
- u.addValue( testArray[i]);
- }
- assertTrue(u.toString().indexOf("NaN") == -1);
- assertTrue(u.toString().startsWith("DescriptiveStatistics"));
+ public void testWindowSize() {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+ u.setWindowSize(1234);
+ assertEquals(1234, u.getWindowSize());
+
+ u.addValue(1.0);
+ u.addValue(2.0);
+ u.addValue(3.0);
+ u.addValue(4.0);
+ u.addValue(5.0);
+ assertEquals(5, u.getN());
+
+ u.setWindowSize(DescriptiveStatistics.INFINITE_WINDOW);
+ assertEquals(5, u.getN());
+ }
+
+ private void tstGetSortedValues(double[] test) {
+ DescriptiveStatistics u = createDescriptiveStatistics();
+ u.setWindowSize(test.length);
+ for (int i = 0; i < test.length; i++) {
+ u.addValue(test[i]);
+ }
+ double[] sorted = u.getSortedValues();
+ if (sorted.length != test.length) {
+ fail("wrong length for sorted values array");
+ }
+ for (int i = 0; i < sorted.length-1; i++) {
+ if (sorted[i] > sorted[i+1]) {
+ fail("sorted values out of sequence");
+ }
+ }
}
}
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 0758f75a4..1fd7cc8a1 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -95,6 +95,9 @@ Commons Math Release Notes
MaxIterationsExceededException and return 0 or 1, resp. if the argument
is more than 20 standard deviations from the mean.
+
+ Added SynchronizedDescriptiveStatistics class.
+