You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2009/04/17 15:34:59 UTC
svn commit: r765996 - in /commons/proper/math/trunk/src:
java/org/apache/commons/math/stat/Frequency.java
test/org/apache/commons/math/stat/FrequencyTest.java
Author: sebb
Date: Fri Apr 17 13:34:59 2009
New Revision: 765996
URL: http://svn.apache.org/viewvc?rev=765996&view=rev
Log:
MATH-259 - check for Comparable when adding values
Modified:
commons/proper/math/trunk/src/java/org/apache/commons/math/stat/Frequency.java
commons/proper/math/trunk/src/test/org/apache/commons/math/stat/FrequencyTest.java
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/Frequency.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/Frequency.java?rev=765996&r1=765995&r2=765996&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/stat/Frequency.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/stat/Frequency.java Fri Apr 17 13:34:59 2009
@@ -101,9 +101,26 @@
* </p>
*
* @param v the value to add.
- * @throws IllegalArgumentException if <code>v</code> is not comparable.
+ * @throws IllegalArgumentException if <code>v</code> is not comparable with previous entries
+ * @throws ClassCastException if <code>v</code> is not Comparable
+ * @deprecated use {@link #addValue(Comparable)} instead
*/
+ @Deprecated
public void addValue(Object v) {
+ addValue((Comparable<?>) v);
+ }
+
+ /**
+ * Adds 1 to the frequency count for v.
+ * <p>
+ * If other objects have already been added to this Frequency, v must
+ * be comparable to those that have already been added.
+ * </p>
+ *
+ * @param v the value to add.
+ * @throws IllegalArgumentException if <code>v</code> is not comparable with previous entries
+ */
+ public void addValue(Comparable<?>v){
Object obj = v;
if (v instanceof Integer) {
obj = Long.valueOf(((Integer) v).longValue());
Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/stat/FrequencyTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/FrequencyTest.java?rev=765996&r1=765995&r2=765996&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/stat/FrequencyTest.java (original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/stat/FrequencyTest.java Fri Apr 17 13:34:59 2009
@@ -189,6 +189,22 @@
}
}
+ // Check what happens when non-Comparable objects are added
+ public void testAddNonComparable(){
+ try {
+ f.addValue(new Object()); // This was OK
+ fail("Expected ClassCastException");
+ } catch (ClassCastException expected) {
+ }
+ f.clear();
+ f.addValue(1);
+ try {
+ f.addValue(new Object());
+ fail("Expected ClassCastException"); // Previously would have been IllegalArgument
+ } catch (ClassCastException expected) {
+ }
+ }
+
/** test empty table */
public void testEmptyTable() {
assertEquals("freq sum, empty table", 0, f.getSumFreq());