You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2003/09/05 04:16:33 UTC
cvs commit: jakarta-commons/collections/src/test/org/apache/commons/collections TestCollectionUtils.java
psteitz 2003/09/04 19:16:33
Modified: collections/src/java/org/apache/commons/collections
CollectionUtils.java
collections/src/test/org/apache/commons/collections
TestCollectionUtils.java
Log:
Fixed a javadoc error, improved efficiency and added tests for CollectionUtils.isProperSubCollection
Revision Changes Path
1.36 +11 -5 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.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- CollectionUtils.java 31 Aug 2003 17:26:44 -0000 1.35
+++ CollectionUtils.java 5 Sep 2003 02:16:33 -0000 1.36
@@ -282,13 +282,19 @@
* for each element <i>e</i> in <i>a</i>, and there is at least one
* element <i>f</i> such that the cardinality of <i>f</i> in <i>b</i>
* is strictly greater than the cardinality of <i>f</i> in <i>a</i>.
+ * <p>
+ * The implementation assumes
+ * <ul>
+ * <li><code>a.size()</code> and <code>b.size()</code> represent the
+ * total cardinality of <i>a</i> and <i>b</i>, resp. </li>
+ * <li><code>a.size() < Integer.MAXVALUE</code></li>
+ * </ul></p>
*
* @see #isSubCollection
* @see Collection#containsAll
*/
public static boolean isProperSubCollection(final Collection a, final Collection b) {
- // XXX optimize me!
- return CollectionUtils.isSubCollection(a,b) && (!(CollectionUtils.isEqualCollection(a,b)));
+ return (a.size() < b.size()) && CollectionUtils.isSubCollection(a,b);
}
/**
@@ -675,7 +681,7 @@
* </ul>
*
* @param obj the object to get an index of
- * @param index the index to get
+ * @param idx the index to get
* @throws IndexOutOfBoundsException
* @throws NoSuchElementException
*/
1.18 +28 -4 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.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TestCollectionUtils.java 31 Aug 2003 17:28:43 -0000 1.17
+++ TestCollectionUtils.java 5 Sep 2003 02:16:33 -0000 1.18
@@ -411,6 +411,30 @@
assertTrue(CollectionUtils.isEqualCollection(a,b));
assertTrue(CollectionUtils.isEqualCollection(b,a));
}
+
+ public void testIsProperSubCollection() {
+ Collection a = new ArrayList();
+ Collection b = new ArrayList();
+ assertTrue(!CollectionUtils.isProperSubCollection(a,b));
+ b.add("1");
+ assertTrue(CollectionUtils.isProperSubCollection(a,b));
+ assertTrue(!CollectionUtils.isProperSubCollection(b,a));
+ assertTrue(!CollectionUtils.isProperSubCollection(b,b));
+ assertTrue(!CollectionUtils.isProperSubCollection(a,a));
+ a.add("1");
+ a.add("2");
+ b.add("2");
+ assertTrue(!CollectionUtils.isProperSubCollection(b,a));
+ assertTrue(!CollectionUtils.isProperSubCollection(a,b));
+ a.add("1");
+ assertTrue(CollectionUtils.isProperSubCollection(b,a));
+ assertTrue(CollectionUtils.isProperSubCollection(
+ CollectionUtils.intersection(_a, _b), _a));
+ assertTrue(CollectionUtils.isProperSubCollection(
+ CollectionUtils.subtract(a, b), a));
+ assertTrue(!CollectionUtils.isProperSubCollection(
+ a, CollectionUtils.subtract(a, b)));
+ }
public void testIndex() {