psteitz     2004/06/17 15:33:23

  Modified:    math/src/test/org/apache/commons/math/stat/univariate
                        StorelessUnivariateStatisticAbstractTest.java
  Log:
  Added tests for equals and hashcode.
  
  Revision  Changes    Path
  1.13      +55 -1     
jakarta-commons/math/src/test/org/apache/commons/math/stat/univariate/StorelessUnivariateStatisticAbstractTest.java
  
  Index: StorelessUnivariateStatisticAbstractTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/stat/univariate/StorelessUnivariateStatisticAbstractTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- StorelessUnivariateStatisticAbstractTest.java     27 Apr 2004 16:42:32 -0000     
 1.12
  +++ StorelessUnivariateStatisticAbstractTest.java     17 Jun 2004 22:33:23 -0000     
 1.13
  @@ -28,10 +28,13 @@
           super(name);
       }
   
  +    /** Return a new instance of the statistic */
       public abstract UnivariateStatistic getUnivariateStatistic();
   
  +    /**Expected value for  the testArray defined in UnivariateStatisticAbstractTest 
*/
       public abstract double expectedValue();
       
  +    /** Verify that calling increment() in a loop over testArray results in correct 
state */
       public void testIncrementation() throws Exception {
   
           StorelessUnivariateStatistic statistic =
  @@ -44,6 +47,7 @@
           }
   
           assertEquals(expectedValue(), statistic.getResult(), getTolerance());
  +        //TODO:  add test for getN() once type is fixed
   
           statistic.clear();
   
  @@ -55,6 +59,8 @@
   
           StorelessUnivariateStatistic statistic =
               (StorelessUnivariateStatistic) getUnivariateStatistic();
  +        
  +        TestUtils.checkSerializedEquality(statistic);
   
           statistic.clear();
   
  @@ -64,12 +70,60 @@
                   statistic = 
(StorelessUnivariateStatistic)TestUtils.serializeAndRecover(statistic); 
           }
           
  +        TestUtils.checkSerializedEquality(statistic);
  +        
           assertEquals(expectedValue(), statistic.getResult(), getTolerance());
   
           statistic.clear();
   
           assertTrue(Double.isNaN(statistic.getResult()));
   
  +    }
  +    
  +    public void testEqualsAndHashCode() {
  +        StorelessUnivariateStatistic statistic =
  +            (StorelessUnivariateStatistic) getUnivariateStatistic();
  +        StorelessUnivariateStatistic statistic2 = null;
  +        
  +        assertTrue("non-null, compared to null", !statistic.equals(statistic2));
  +        assertTrue("reflexive, non-null", statistic.equals(statistic));
  +        
  +        int emptyHash = statistic.hashCode();
  +        statistic2 = (StorelessUnivariateStatistic) getUnivariateStatistic();
  +        assertTrue("empty stats should be equal", statistic.equals(statistic2));
  +        assertEquals("empty stats should have the same hashcode", 
  +                emptyHash, statistic2.hashCode());
  +        
  +        statistic.increment(1d);
  +        assertTrue("reflexive, non-empty", statistic.equals(statistic));
  +        assertTrue("non-empty, compared to empty", !statistic.equals(statistic2));
  +        assertTrue("non-empty, compared to empty", !statistic2.equals(statistic));
  +        assertTrue("non-empty stat should have different hashcode from empty stat",
  +                statistic.hashCode() != emptyHash);
  +        
  +        statistic2.increment(1d);
  +        assertTrue("stats with same data should be equal", 
statistic.equals(statistic2));
  +        assertEquals("stats with same data should have the same hashcode", 
  +                statistic.hashCode(), statistic2.hashCode());
  +        
  +        statistic.increment(Double.POSITIVE_INFINITY);
  +        assertTrue("stats with different n's should not be equal", 
!statistic2.equals(statistic));
  +        assertTrue("stats with different n's should have different hashcodes",
  +                statistic.hashCode() != statistic2.hashCode());
  +        
  +        statistic2.increment(Double.POSITIVE_INFINITY);
  +        assertTrue("stats with same data should be equal", 
statistic.equals(statistic2));
  +        assertEquals("stats with same data should have the same hashcode", 
  +                statistic.hashCode(), statistic2.hashCode()); 
  +        
  +        statistic.clear();
  +        statistic2.clear();
  +        assertTrue("cleared stats should be equal", statistic.equals(statistic2));
  +        assertEquals("cleared stats should have thashcode of empty stat", 
  +                emptyHash, statistic2.hashCode());
  +        assertEquals("cleared stats should have thashcode of empty stat", 
  +                emptyHash, statistic.hashCode());
  +        
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to