You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rw...@apache.org on 2002/11/01 20:54:27 UTC
cvs commit: jakarta-commons/collections/src/test/org/apache/commons/collections TestCollectionUtils.java
rwaldhoff 2002/11/01 11:54:27
Modified: collections/src/java/org/apache/commons/collections
CollectionUtils.java
collections/src/test/org/apache/commons/collections
TestCollectionUtils.java
Log:
allow cardinality(null,collection) and add test for it
(fixing http://issues.apache.org/bugzilla/show_bug.cgi?id=13785 per suggestion of Serhiy Yevtushenko)
Revision Changes Path
1.19 +17 -10 jakarta-commons/collections/src/java/org/apache/commons/collections/CollectionUtils.java
Index: CollectionUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/CollectionUtils.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- CollectionUtils.java 13 Oct 2002 00:38:36 -0000 1.18
+++ CollectionUtils.java 1 Nov 2002 19:54:26 -0000 1.19
@@ -1,5 +1,5 @@
/*
- * $Header$
+ * $Id$
* $Revision$
* $Date$
*
@@ -7,7 +7,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -75,6 +75,7 @@
import org.apache.commons.collections.iterators.ArrayIterator;
import org.apache.commons.collections.iterators.EnumerationIterator;
+
/**
* A set of {@link Collection} related utility methods.
*
@@ -318,11 +319,17 @@
*/
public static int cardinality(Object obj, final Collection col) {
int count = 0;
- Iterator it = col.iterator();
- while(it.hasNext()) {
- Object elt = it.next();
- if((null == obj && null == elt) || obj.equals(elt)) {
- count++;
+ if(null == obj) {
+ for(Iterator it = col.iterator();it.hasNext();) {
+ if(null == it.next()) {
+ count++;
+ }
+ }
+ } else {
+ for(Iterator it = col.iterator();it.hasNext();) {
+ if(obj.equals(it.next())) {
+ count++;
+ }
}
}
return count;
1.7 +64 -19 jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollectionUtils.java
Index: TestCollectionUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollectionUtils.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TestCollectionUtils.java 7 Sep 2002 19:49:49 -0000 1.6
+++ TestCollectionUtils.java 1 Nov 2002 19:54:27 -0000 1.7
@@ -1,5 +1,5 @@
/*
- * $Header$
+ * $Id$
* $Revision$
* $Date$
*
@@ -7,7 +7,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -66,7 +66,7 @@
/**
* @author Rodney Waldhoff
- * @version $Id$
+ * @version $Revision$ $Date$
*/
public class TestCollectionUtils extends TestCase {
public TestCollectionUtils(String testName) {
@@ -117,10 +117,10 @@
assertEquals(new Integer(2),freq.get("b"));
assertEquals(new Integer(3),freq.get("c"));
assertEquals(new Integer(4),freq.get("d"));
- assertTrue(null == freq.get("e"));
+ assertNull(freq.get("e"));
freq = CollectionUtils.getCardinalityMap(_b);
- assertTrue(null == freq.get("a"));
+ assertNull(freq.get("a"));
assertEquals(new Integer(4),freq.get("b"));
assertEquals(new Integer(3),freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
@@ -140,6 +140,51 @@
assertEquals(2,CollectionUtils.cardinality("d",_b));
assertEquals(1,CollectionUtils.cardinality("e",_b));
}
+
+ public void testCardinalityOfNull() {
+ List list = new ArrayList();
+ assertEquals(0,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertNull(freq.get(null));
+ }
+ list.add("A");
+ assertEquals(0,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertNull(freq.get(null));
+ }
+ list.add(null);
+ assertEquals(1,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertEquals(new Integer(1),freq.get(null));
+ }
+ list.add("B");
+ assertEquals(1,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertEquals(new Integer(1),freq.get(null));
+ }
+ list.add(null);
+ assertEquals(2,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertEquals(new Integer(2),freq.get(null));
+ }
+ list.add("B");
+ assertEquals(2,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertEquals(new Integer(2),freq.get(null));
+ }
+ list.add(null);
+ assertEquals(3,CollectionUtils.cardinality(null,list));
+ {
+ Map freq = CollectionUtils.getCardinalityMap(list);
+ assertEquals(new Integer(3),freq.get(null));
+ }
+ }
public void testContainsAny() {
Collection empty = new ArrayList(0);
@@ -203,19 +248,19 @@
public void testIntersection() {
Collection col = CollectionUtils.intersection(_a,_b);
Map freq = CollectionUtils.getCardinalityMap(col);
- assertTrue(null == freq.get("a"));
+ assertNull(freq.get("a"));
assertEquals(new Integer(2),freq.get("b"));
assertEquals(new Integer(3),freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
- assertTrue(null == freq.get("e"));
+ assertNull(freq.get("e"));
Collection col2 = CollectionUtils.intersection(_b,_a);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
- assertTrue(null == freq2.get("a"));
+ assertNull(freq2.get("a"));
assertEquals(new Integer(2),freq2.get("b"));
assertEquals(new Integer(3),freq2.get("c"));
assertEquals(new Integer(2),freq2.get("d"));
- assertTrue(null == freq2.get("e"));
+ assertNull(freq2.get("e"));
}
public void testDisjunction() {
@@ -223,7 +268,7 @@
Map freq = CollectionUtils.getCardinalityMap(col);
assertEquals(new Integer(1),freq.get("a"));
assertEquals(new Integer(2),freq.get("b"));
- assertTrue(null == freq.get("c"));
+ assertNull(freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
assertEquals(new Integer(1),freq.get("e"));
@@ -231,7 +276,7 @@
Map freq2 = CollectionUtils.getCardinalityMap(col2);
assertEquals(new Integer(1),freq2.get("a"));
assertEquals(new Integer(2),freq2.get("b"));
- assertTrue(null == freq2.get("c"));
+ assertNull(freq2.get("c"));
assertEquals(new Integer(2),freq2.get("d"));
assertEquals(new Integer(1),freq2.get("e"));
}
@@ -254,18 +299,18 @@
Collection col = CollectionUtils.subtract(_a,_b);
Map freq = CollectionUtils.getCardinalityMap(col);
assertEquals(new Integer(1),freq.get("a"));
- assertTrue(null == freq.get("b"));
- assertTrue(null == freq.get("c"));
+ assertNull(freq.get("b"));
+ assertNull(freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
- assertTrue(null == freq.get("e"));
+ assertNull(freq.get("e"));
Collection col2 = CollectionUtils.subtract(_b,_a);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
assertEquals(new Integer(1),freq2.get("e"));
- assertTrue(null == freq2.get("d"));
- assertTrue(null == freq2.get("c"));
+ assertNull(freq2.get("d"));
+ assertNull(freq2.get("c"));
assertEquals(new Integer(2),freq2.get("b"));
- assertTrue(null == freq2.get("a"));
+ assertNull(freq2.get("a"));
}
public void testIsSubCollectionOfSelf() {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>