commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From l..@apache.org
Subject svn commit: r608839 - in /commons/proper/math/trunk/src: java/org/apache/commons/math/stat/descriptive/ test/org/apache/commons/math/stat/descriptive/
Date Fri, 04 Jan 2008 13:49:15 GMT
Author: luc
Date: Fri Jan  4 05:49:14 2008
New Revision: 608839

URL: http://svn.apache.org/viewvc?rev=608839&view=rev
Log:
added SynchronizedSummaryStatistics class (and tests)

Added:
    commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java
  (with props)
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java
  (with props)
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java
  (with props)
Modified:
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsImplTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsTest.java

Added: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java?rev=608839&view=auto
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java
(added)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java
Fri Jan  4 05:49:14 2008
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.commons.math.stat.descriptive;
+
+/**
+ * Implementation of
+ * {@link org.apache.commons.math.stat.descriptive.SummaryStatistics} that
+ * is safe to use in a multithreaded environment.  Multiple threads can safely
+ * operate on a single instance without causing runtime exceptions due to race
+ * conditions.  In effect, this implementation makes modification and access
+ * methods atomic operations for a single instance.  That is to say, as one
+ * thread is computing a statistic from the instance, no other thread can modify
+ * the instance nor compute another statistic. 
+ *
+ * @since 1.2
+ * @version $Revision: 602304 $ $Date: 2007-12-08 03:48:39 +0100 (sam., 08 déc. 2007)
$
+ */
+public class SynchronizedSummaryStatistics extends SummaryStatistics {
+
+    /** Serialization UID */
+    private static final long serialVersionUID = 1909861009042253704L;
+
+    /**
+     * Construct a SynchronizedSummaryStatistics instance
+     */
+    public SynchronizedSummaryStatistics() {
+        super();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getSummary()
+     */
+    public synchronized StatisticalSummary getSummary() {
+        return super.getSummary();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#addValue(double)
+     */
+    public synchronized void addValue(double value) {
+        super.addValue(value);
+    }
+
+    /** 
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getN()
+     */
+    public synchronized long getN() {
+        return super.getN();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getSum()
+     */
+    public synchronized double getSum() {
+        return super.getSum();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getSumsq()
+     */
+    public synchronized double getSumsq() {
+        return super.getSumsq();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getMean()
+     */
+    public synchronized double getMean() {
+        return super.getMean();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getStandardDeviation()
+     */
+    public synchronized double getStandardDeviation() {
+        return super.getStandardDeviation();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getVariance()
+     */
+    public synchronized double getVariance() {
+        return super.getVariance();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getMax()
+     */
+    public synchronized double getMax() {
+        return super.getMax();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getMin()
+     */
+    public synchronized double getMin() {
+        return super.getMin();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getGeometricMean()
+     */
+    public synchronized double getGeometricMean() {
+        return super.getGeometricMean();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#toString()
+     */
+    public synchronized String toString() {
+        return super.toString();
+    }
+
+    /** 
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#clear()
+     */
+    public synchronized void clear() {
+        super.clear();
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#equals(Object)
+     */
+    public synchronized boolean equals(Object object) {
+        return super.equals(object);
+    }
+
+    /**
+     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#hashCode()
+     */
+    public synchronized int hashCode() {
+        return super.hashCode();
+    }
+
+}

Propchange: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatistics.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java?rev=608839&view=auto
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java
(added)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java
Fri Jan  4 05:49:14 2008
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+package org.apache.commons.math.stat.descriptive;
+
+
+import junit.framework.TestCase;
+
+import org.apache.commons.math.TestUtils;
+/**
+ * Test cases for the {@link SummaryStatisticsImpl} class.
+ *
+ * @version $Revision: 602305 $ $Date: 2007-12-08 03:51:23 +0100 (sam., 08 déc. 2007)
$
+ * @deprecated should be moved down into SummaryStatisticsTest
+ *   when SummaryStatisticsImpl is removed in 2.0
+ */
+
+public abstract class SummaryStatisticsAbstractTest extends TestCase {
+    private double one = 1;
+    private float twoF = 2;
+    private long twoL = 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;
+
+    protected SummaryStatistics u = null;
+
+    public SummaryStatisticsAbstractTest(String name) {
+        super(name);
+    }
+
+    protected abstract SummaryStatistics createSummaryStatistics();
+
+    public void setUp() {
+        u = createSummaryStatistics();
+    }
+
+    /** test stats */
+    public void testStats() {
+        assertEquals("total count",0,u.getN(),tolerance);
+        u.addValue(one);
+        u.addValue(twoF);
+        u.addValue(twoL);
+        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 {
+        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() ) );
+
+        /* n=1 */
+        u.addValue(one);
+        assertTrue("mean should be one (n = 1)", 
+                u.getMean() == one);
+        assertTrue("geometric should be one (n = 1) instead it is " + u.getGeometricMean(),

+                u.getGeometricMean() == one);
+        assertTrue("Std should be zero (n = 1)", 
+                u.getStandardDeviation() == 0.0);
+        assertTrue("variance should be zero (n = 1)", 
+                u.getVariance() == 0.0);
+
+        /* n=2 */               
+        u.addValue(twoF);
+        assertTrue("Std should not be zero (n = 2)", 
+                u.getStandardDeviation() != 0.0);
+        assertTrue("variance should not be zero (n = 2)", 
+                u.getVariance() != 0.0);
+
+    }
+
+    public void testProductAndGeometricMean() throws Exception {            
+        u.addValue( 1.0 );
+        u.addValue( 2.0 );
+        u.addValue( 3.0 );
+        u.addValue( 4.0 );
+
+        assertEquals( "Geometric mean not expected", 2.213364, 
+                u.getGeometricMean(), 0.00001 );
+    }
+
+    public void testNaNContracts() {
+        assertTrue("mean not NaN",Double.isNaN(u.getMean())); 
+        assertTrue("min not NaN",Double.isNaN(u.getMin())); 
+        assertTrue("std dev not NaN",Double.isNaN(u.getStandardDeviation())); 
+        assertTrue("var not NaN",Double.isNaN(u.getVariance())); 
+        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
+
+        u.addValue(1.0);
+
+        assertEquals( "mean not expected", 1.0, 
+                u.getMean(), Double.MIN_VALUE);
+        assertEquals( "variance not expected", 0.0, 
+                u.getVariance(), Double.MIN_VALUE);
+        assertEquals( "geometric mean not expected", 1.0, 
+                u.getGeometricMean(), Double.MIN_VALUE);
+
+        u.addValue(-1.0);
+
+        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
+
+        u.addValue(0.0);
+
+        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
+
+        //FiXME: test all other NaN contract specs
+    }
+
+    public void testGetSummary() {  
+        StatisticalSummary summary = u.getSummary();
+        verifySummary(summary);
+        u.addValue(1d);
+        summary = u.getSummary();
+        verifySummary(summary);
+        u.addValue(2d);
+        summary = u.getSummary();
+        verifySummary(summary);
+        u.addValue(2d);
+        summary = u.getSummary();
+        verifySummary(summary);     
+    }
+
+    public void testSerialization() {
+        // Empty test
+        TestUtils.checkSerializedEquality(u);
+        SummaryStatistics s = (SummaryStatistics) TestUtils.serializeAndRecover(u);
+        StatisticalSummary summary = s.getSummary();
+        verifySummary(summary);
+
+        // Add some data
+        u.addValue(2d);
+        u.addValue(1d);
+        u.addValue(3d);
+        u.addValue(4d);
+        u.addValue(5d);
+
+        // Test again
+        TestUtils.checkSerializedEquality(u);
+        s = (SummaryStatistics) TestUtils.serializeAndRecover(u);
+        summary = s.getSummary();
+        verifySummary(summary);
+
+    }
+
+    public void testEqualsAndHashCode() {
+        SummaryStatistics t = null;
+        int emptyHash = u.hashCode();
+        assertTrue("reflexive", u.equals(u));
+        assertFalse("non-null compared to null", u.equals(t));
+        assertFalse("wrong type", u.equals(new Double(0)));
+        t = createSummaryStatistics();
+        assertTrue("empty instances should be equal", t.equals(u));
+        assertTrue("empty instances should be equal", u.equals(t));
+        assertEquals("empty hash code", emptyHash, t.hashCode());
+
+        // Add some data to u
+        u.addValue(2d);
+        u.addValue(1d);
+        u.addValue(3d);
+        u.addValue(4d);
+        assertFalse("different n's should make instances not equal", t.equals(u));
+        assertFalse("different n's should make instances not equal", u.equals(t));
+        assertTrue("different n's should make hashcodes different", 
+                u.hashCode() != t.hashCode());
+
+        //Add data in different order to t, should not affect identity or hashcode
+        t.addValue(4d);
+        t.addValue(2d);
+        t.addValue(3d);
+        t.addValue(1d);
+        assertTrue("summaries based on same data should be equal", t.equals(u));
+        assertTrue("summaries based on same data should be equal", u.equals(t));
+        assertEquals("summaries based on same data should have same hashcodes", 
+                u.hashCode(), t.hashCode());   
+
+        // Clear and make sure summaries are indistinguishable from empty summary
+        u.clear();
+        t.clear();
+        assertTrue("empty instances should be equal", t.equals(u));
+        assertTrue("empty instances should be equal", u.equals(t));
+        assertEquals("empty hash code", emptyHash, t.hashCode());
+        assertEquals("empty hash code", emptyHash, u.hashCode());
+    }
+
+    private void verifySummary(StatisticalSummary s) {
+        assertEquals("N",s.getN(),u.getN());
+        TestUtils.assertEquals("sum",s.getSum(),u.getSum(),tolerance);
+        TestUtils.assertEquals("var",s.getVariance(),u.getVariance(),tolerance);
+        TestUtils.assertEquals("std",s.getStandardDeviation(),u.getStandardDeviation(),tolerance);
+        TestUtils.assertEquals("mean",s.getMean(),u.getMean(),tolerance);
+        TestUtils.assertEquals("min",s.getMin(),u.getMin(),tolerance);
+        TestUtils.assertEquals("max",s.getMax(),u.getMax(),tolerance);   
+    }
+}

Propchange: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsAbstractTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsImplTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsImplTest.java?rev=608839&r1=608838&r2=608839&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsImplTest.java
(original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsImplTest.java
Fri Jan  4 05:49:14 2008
@@ -18,214 +18,26 @@
 
 
 import junit.framework.Test;
-import junit.framework.TestCase;
 import junit.framework.TestSuite;
-
-import org.apache.commons.math.TestUtils;
 /**
  * Test cases for the {@link SummaryStatisticsImpl} class.
- *
+ * @deprecated - to be removed in 2.0 with SummaryStatisticsImpl
  * @version $Revision$ $Date$
  */
 
-public final class SummaryStatisticsImplTest extends TestCase {
-    private double one = 1;
-    private float twoF = 2;
-    private long twoL = 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;
-    
-    protected SummaryStatistics u = null;
-    
+public final class SummaryStatisticsImplTest extends SummaryStatisticsAbstractTest {
+
     public SummaryStatisticsImplTest(String name) {
         super(name);
     }
-    
-    public void setUp() {  
-        u = SummaryStatistics.newInstance();
-    }
-    
+
     public static Test suite() {
         TestSuite suite = new TestSuite(SummaryStatisticsImplTest.class);
-        suite.setName("Frequency Tests");
+        suite.setName("SummaryStatisticsImpl Tests");
         return suite;
     }
-    
-    /** test stats */
-    public void testStats() {
-        assertEquals("total count",0,u.getN(),tolerance);
-        u.addValue(one);
-        u.addValue(twoF);
-        u.addValue(twoL);
-        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 {
-        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() ) );
-        
-        /* n=1 */
-        u.addValue(one);
-        assertTrue("mean should be one (n = 1)", 
-            u.getMean() == one);
-        assertTrue("geometric should be one (n = 1) instead it is " + u.getGeometricMean(),

-            u.getGeometricMean() == one);
-        assertTrue("Std should be zero (n = 1)", 
-            u.getStandardDeviation() == 0.0);
-        assertTrue("variance should be zero (n = 1)", 
-            u.getVariance() == 0.0);
-                    
-        /* n=2 */               
-        u.addValue(twoF);
-        assertTrue("Std should not be zero (n = 2)", 
-            u.getStandardDeviation() != 0.0);
-        assertTrue("variance should not be zero (n = 2)", 
-            u.getVariance() != 0.0);
-            
-    }
-
-    public void testProductAndGeometricMean() throws Exception {            
-        u.addValue( 1.0 );
-        u.addValue( 2.0 );
-        u.addValue( 3.0 );
-        u.addValue( 4.0 );
 
-        assertEquals( "Geometric mean not expected", 2.213364, 
-            u.getGeometricMean(), 0.00001 );
-    }
-    
-    public void testNaNContracts() {
-        assertTrue("mean not NaN",Double.isNaN(u.getMean())); 
-        assertTrue("min not NaN",Double.isNaN(u.getMin())); 
-        assertTrue("std dev not NaN",Double.isNaN(u.getStandardDeviation())); 
-        assertTrue("var not NaN",Double.isNaN(u.getVariance())); 
-        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
-        
-        u.addValue(1.0);
-        
-        assertEquals( "mean not expected", 1.0, 
-            u.getMean(), Double.MIN_VALUE);
-        assertEquals( "variance not expected", 0.0, 
-            u.getVariance(), Double.MIN_VALUE);
-        assertEquals( "geometric mean not expected", 1.0, 
-            u.getGeometricMean(), Double.MIN_VALUE);
-        
-        u.addValue(-1.0);
-        
-        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
-        
-        u.addValue(0.0);
-        
-        assertTrue("geom mean not NaN",Double.isNaN(u.getGeometricMean()));
-        
-        //FiXME: test all other NaN contract specs
-    }
-    
-    public void testGetSummary() {  
-        StatisticalSummary summary = u.getSummary();
-        verifySummary(summary);
-        u.addValue(1d);
-        summary = u.getSummary();
-        verifySummary(summary);
-        u.addValue(2d);
-        summary = u.getSummary();
-        verifySummary(summary);
-        u.addValue(2d);
-        summary = u.getSummary();
-        verifySummary(summary);     
-    }
-    
-    public void testSerialization() {
-        // Empty test
-        TestUtils.checkSerializedEquality(u);
-        SummaryStatistics s = (SummaryStatistics) TestUtils.serializeAndRecover(u);
-        StatisticalSummary summary = s.getSummary();
-        verifySummary(summary);
-        
-        // Add some data
-        u.addValue(2d);
-        u.addValue(1d);
-        u.addValue(3d);
-        u.addValue(4d);
-        u.addValue(5d);
-        
-        // Test again
-        TestUtils.checkSerializedEquality(u);
-        s = (SummaryStatistics) TestUtils.serializeAndRecover(u);
-        summary = s.getSummary();
-        verifySummary(summary);
-        
-    }
-    
-    public void testEqualsAndHashCode() {
-        SummaryStatistics t = null;
-        int emptyHash = u.hashCode();
-        assertTrue("reflexive", u.equals(u));
-        assertFalse("non-null compared to null", u.equals(t));
-        assertFalse("wrong type", u.equals(new Double(0)));
-        t = SummaryStatistics.newInstance();
-        assertTrue("empty instances should be equal", t.equals(u));
-        assertTrue("empty instances should be equal", u.equals(t));
-        assertEquals("empty hash code", emptyHash, t.hashCode());
-        
-        // Add some data to u
-        u.addValue(2d);
-        u.addValue(1d);
-        u.addValue(3d);
-        u.addValue(4d);
-        assertFalse("different n's should make instances not equal", t.equals(u));
-        assertFalse("different n's should make instances not equal", u.equals(t));
-        assertTrue("different n's should make hashcodes different", 
-                u.hashCode() != t.hashCode());
-        
-        //Add data in different order to t, should not affect identity or hashcode
-        t.addValue(4d);
-        t.addValue(2d);
-        t.addValue(3d);
-        t.addValue(1d);
-        assertTrue("summaries based on same data should be equal", t.equals(u));
-        assertTrue("summaries based on same data should be equal", u.equals(t));
-        assertEquals("summaries based on same data should have same hashcodes", 
-                u.hashCode(), t.hashCode());   
-        
-        // Clear and make sure summaries are indistinguishable from empty summary
-        u.clear();
-        t.clear();
-        assertTrue("empty instances should be equal", t.equals(u));
-        assertTrue("empty instances should be equal", u.equals(t));
-        assertEquals("empty hash code", emptyHash, t.hashCode());
-        assertEquals("empty hash code", emptyHash, u.hashCode());
-    }
-    
-    private void verifySummary(StatisticalSummary s) {
-        assertEquals("N",s.getN(),u.getN());
-        TestUtils.assertEquals("sum",s.getSum(),u.getSum(),tolerance);
-        TestUtils.assertEquals("var",s.getVariance(),u.getVariance(),tolerance);
-        TestUtils.assertEquals("std",s.getStandardDeviation(),u.getStandardDeviation(),tolerance);
-        TestUtils.assertEquals("mean",s.getMean(),u.getMean(),tolerance);
-        TestUtils.assertEquals("min",s.getMin(),u.getMin(),tolerance);
-        TestUtils.assertEquals("max",s.getMax(),u.getMax(),tolerance);   
+    protected SummaryStatistics createSummaryStatistics() {
+        return new SummaryStatisticsImpl();
     }
 }

Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsTest.java?rev=608839&r1=608838&r2=608839&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsTest.java
(original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SummaryStatisticsTest.java
Fri Jan  4 05:49:14 2008
@@ -21,7 +21,6 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-import org.apache.commons.math.TestUtils;
 import org.apache.commons.math.stat.descriptive.moment.Mean;
 /**
  * Test cases for the {@link SummaryStatistics} class.
@@ -31,22 +30,20 @@
  * @version $Revision: 566833 $ $Date: 2007-08-16 13:36:33 -0700 (Thu, 16 Aug 2007) $
  */
 
-public final class SummaryStatisticsTest extends TestCase {
-    
-    protected SummaryStatistics u = null;
-    
+public final class SummaryStatisticsTest extends SummaryStatisticsAbstractTest {
+
     public SummaryStatisticsTest(String name) {
         super(name);
     }
     
-    public void setUp() {  
-        u = new SummaryStatistics();
-    }
-    
     public static Test suite() {
         TestSuite suite = new TestSuite(SummaryStatisticsTest.class);
         suite.setName("SummaryStatistics tests");
         return suite;
+    }
+
+    protected SummaryStatistics createSummaryStatistics() {
+        return new SummaryStatistics();
     }
     
     public void testSetterInjection() throws Exception {

Added: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java?rev=608839&view=auto
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java
(added)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java
Fri Jan  4 05:49:14 2008
@@ -0,0 +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.
+ */
+package org.apache.commons.math.stat.descriptive;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test cases for the {@link SynchronizedSummaryStatisticsTest} class.
+ * @version $Revision: 592121 $ $Date: 2007-08-16 15:36:33 -0500 (Thu, 16 Aug
+ *          2007) $
+ */
+public final class SynchronizedSummaryStatisticsTest extends SummaryStatisticsAbstractTest
{
+
+    public SynchronizedSummaryStatisticsTest(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        TestSuite suite = new TestSuite(SynchronizedSummaryStatisticsTest.class);
+        suite.setName("SynchronizedSummaryStatistics Tests");
+        return suite;
+    }
+
+    protected SummaryStatistics createSummaryStatistics() {
+        return new SynchronizedSummaryStatistics();
+    }
+}

Propchange: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/SynchronizedSummaryStatisticsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message