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]