📄 testcollectionutils.java
字号:
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.Vector;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.collections.bag.HashBag;
import org.apache.commons.collections.buffer.BoundedFifoBuffer;
import org.apache.commons.collections.collection.AbstractTestCollection;
import org.apache.commons.collections.collection.PredicatedCollection;
import org.apache.commons.collections.collection.SynchronizedCollection;
import org.apache.commons.collections.collection.TransformedCollection;
import org.apache.commons.collections.collection.UnmodifiableCollection;
/**
* Tests for CollectionUtils.
*
* @author Rodney Waldhoff
* @author Matthew Hawthorne
* @author Stephen Colebourne
* @author Phil Steitz
* @author Steven Melzer
* @author Neil O'Toole
* @author Stephen Smith
*
* @version $Revision: 646780 $ $Date: 2008-04-10 13:48:07 +0100 (Thu, 10 Apr 2008) $
*/
public class TestCollectionUtils extends TestCase {
public TestCollectionUtils(String testName) {
super(testName);
}
public static Test suite() {
return new TestSuite(TestCollectionUtils.class);
}
public static void main(String args[]) {
String[] testCaseName = { TestCollectionUtils.class.getName() };
junit.textui.TestRunner.main(testCaseName);
}
private Collection collectionA = null;
private Collection collectionB = null;
public void setUp() {
collectionA = new ArrayList();
collectionA.add("a");
collectionA.add("b");
collectionA.add("b");
collectionA.add("c");
collectionA.add("c");
collectionA.add("c");
collectionA.add("d");
collectionA.add("d");
collectionA.add("d");
collectionA.add("d");
collectionB = new LinkedList();
collectionB.add("e");
collectionB.add("d");
collectionB.add("d");
collectionB.add("c");
collectionB.add("c");
collectionB.add("c");
collectionB.add("b");
collectionB.add("b");
collectionB.add("b");
collectionB.add("b");
}
public void testGetCardinalityMap() {
Map freq = CollectionUtils.getCardinalityMap(collectionA);
assertEquals(new Integer(1),freq.get("a"));
assertEquals(new Integer(2),freq.get("b"));
assertEquals(new Integer(3),freq.get("c"));
assertEquals(new Integer(4),freq.get("d"));
assertNull(freq.get("e"));
freq = CollectionUtils.getCardinalityMap(collectionB);
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"));
assertEquals(new Integer(1),freq.get("e"));
}
public void testCardinality() {
assertEquals(1, CollectionUtils.cardinality("a", collectionA));
assertEquals(2, CollectionUtils.cardinality("b", collectionA));
assertEquals(3, CollectionUtils.cardinality("c", collectionA));
assertEquals(4, CollectionUtils.cardinality("d", collectionA));
assertEquals(0, CollectionUtils.cardinality("e", collectionA));
assertEquals(0, CollectionUtils.cardinality("a", collectionB));
assertEquals(4, CollectionUtils.cardinality("b", collectionB));
assertEquals(3, CollectionUtils.cardinality("c", collectionB));
assertEquals(2, CollectionUtils.cardinality("d", collectionB));
assertEquals(1, CollectionUtils.cardinality("e", collectionB));
Set set = new HashSet();
set.add("A");
set.add("C");
set.add("E");
set.add("E");
assertEquals(1, CollectionUtils.cardinality("A", set));
assertEquals(0, CollectionUtils.cardinality("B", set));
assertEquals(1, CollectionUtils.cardinality("C", set));
assertEquals(0, CollectionUtils.cardinality("D", set));
assertEquals(1, CollectionUtils.cardinality("E", set));
Bag bag = new HashBag();
bag.add("A", 3);
bag.add("C");
bag.add("E");
bag.add("E");
assertEquals(3, CollectionUtils.cardinality("A", bag));
assertEquals(0, CollectionUtils.cardinality("B", bag));
assertEquals(1, CollectionUtils.cardinality("C", bag));
assertEquals(0, CollectionUtils.cardinality("D", bag));
assertEquals(2, CollectionUtils.cardinality("E", bag));
}
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);
Collection one = new ArrayList(1);
one.add("1");
Collection two = new ArrayList(1);
two.add("2");
Collection three = new ArrayList(1);
three.add("3");
Collection odds = new ArrayList(2);
odds.add("1");
odds.add("3");
assertTrue("containsAny({1},{1,3}) should return true.",
CollectionUtils.containsAny(one,odds));
assertTrue("containsAny({1,3},{1}) should return true.",
CollectionUtils.containsAny(odds,one));
assertTrue("containsAny({3},{1,3}) should return true.",
CollectionUtils.containsAny(three,odds));
assertTrue("containsAny({1,3},{3}) should return true.",
CollectionUtils.containsAny(odds,three));
assertTrue("containsAny({2},{2}) should return true.",
CollectionUtils.containsAny(two,two));
assertTrue("containsAny({1,3},{1,3}) should return true.",
CollectionUtils.containsAny(odds,odds));
assertTrue("containsAny({2},{1,3}) should return false.",
!CollectionUtils.containsAny(two,odds));
assertTrue("containsAny({1,3},{2}) should return false.",
!CollectionUtils.containsAny(odds,two));
assertTrue("containsAny({1},{3}) should return false.",
!CollectionUtils.containsAny(one,three));
assertTrue("containsAny({3},{1}) should return false.",
!CollectionUtils.containsAny(three,one));
assertTrue("containsAny({1,3},{}) should return false.",
!CollectionUtils.containsAny(odds,empty));
assertTrue("containsAny({},{1,3}) should return false.",
!CollectionUtils.containsAny(empty,odds));
assertTrue("containsAny({},{}) should return false.",
!CollectionUtils.containsAny(empty,empty));
}
public void testUnion() {
Collection col = CollectionUtils.union(collectionA,collectionB);
Map freq = CollectionUtils.getCardinalityMap(col);
assertEquals(new Integer(1),freq.get("a"));
assertEquals(new Integer(4),freq.get("b"));
assertEquals(new Integer(3),freq.get("c"));
assertEquals(new Integer(4),freq.get("d"));
assertEquals(new Integer(1),freq.get("e"));
Collection col2 = CollectionUtils.union(collectionB,collectionA);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
assertEquals(new Integer(1),freq2.get("a"));
assertEquals(new Integer(4),freq2.get("b"));
assertEquals(new Integer(3),freq2.get("c"));
assertEquals(new Integer(4),freq2.get("d"));
assertEquals(new Integer(1),freq2.get("e"));
}
public void testIntersection() {
Collection col = CollectionUtils.intersection(collectionA,collectionB);
Map freq = CollectionUtils.getCardinalityMap(col);
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"));
assertNull(freq.get("e"));
Collection col2 = CollectionUtils.intersection(collectionB,collectionA);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
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"));
assertNull(freq2.get("e"));
}
public void testDisjunction() {
Collection col = CollectionUtils.disjunction(collectionA,collectionB);
Map freq = CollectionUtils.getCardinalityMap(col);
assertEquals(new Integer(1),freq.get("a"));
assertEquals(new Integer(2),freq.get("b"));
assertNull(freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
assertEquals(new Integer(1),freq.get("e"));
Collection col2 = CollectionUtils.disjunction(collectionB,collectionA);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
assertEquals(new Integer(1),freq2.get("a"));
assertEquals(new Integer(2),freq2.get("b"));
assertNull(freq2.get("c"));
assertEquals(new Integer(2),freq2.get("d"));
assertEquals(new Integer(1),freq2.get("e"));
}
public void testDisjunctionAsUnionMinusIntersection() {
Collection dis = CollectionUtils.disjunction(collectionA,collectionB);
Collection un = CollectionUtils.union(collectionA,collectionB);
Collection inter = CollectionUtils.intersection(collectionA,collectionB);
assertTrue(CollectionUtils.isEqualCollection(dis,CollectionUtils.subtract(un,inter)));
}
public void testDisjunctionAsSymmetricDifference() {
Collection dis = CollectionUtils.disjunction(collectionA,collectionB);
Collection amb = CollectionUtils.subtract(collectionA,collectionB);
Collection bma = CollectionUtils.subtract(collectionB,collectionA);
assertTrue(CollectionUtils.isEqualCollection(dis,CollectionUtils.union(amb,bma)));
}
public void testSubtract() {
Collection col = CollectionUtils.subtract(collectionA,collectionB);
Map freq = CollectionUtils.getCardinalityMap(col);
assertEquals(new Integer(1),freq.get("a"));
assertNull(freq.get("b"));
assertNull(freq.get("c"));
assertEquals(new Integer(2),freq.get("d"));
assertNull(freq.get("e"));
Collection col2 = CollectionUtils.subtract(collectionB,collectionA);
Map freq2 = CollectionUtils.getCardinalityMap(col2);
assertEquals(new Integer(1),freq2.get("e"));
assertNull(freq2.get("d"));
assertNull(freq2.get("c"));
assertEquals(new Integer(2),freq2.get("b"));
assertNull(freq2.get("a"));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -