From 21c62eb49ca6093ebb4b8525eee810a96fb29fd8 Mon Sep 17 00:00:00 2001 From: Morgan James Delagrange Date: Fri, 1 Mar 2002 23:31:35 +0000 Subject: [PATCH] added tests for ComparatorChain class git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130630 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/commons/collections/TestAll.java | 9 +- .../comparators/TestComparatorChain.java | 119 ++++++++++++++++++ 2 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 src/test/org/apache/commons/collections/comparators/TestComparatorChain.java diff --git a/src/test/org/apache/commons/collections/TestAll.java b/src/test/org/apache/commons/collections/TestAll.java index cbcb2947f..0d4fb1b4d 100644 --- a/src/test/org/apache/commons/collections/TestAll.java +++ b/src/test/org/apache/commons/collections/TestAll.java @@ -1,7 +1,7 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestAll.java,v 1.22 2002/03/01 19:06:44 morgand Exp $ - * $Revision: 1.22 $ - * $Date: 2002/03/01 19:06:44 $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestAll.java,v 1.23 2002/03/01 23:31:35 morgand Exp $ + * $Revision: 1.23 $ + * $Date: 2002/03/01 23:31:35 $ * * ==================================================================== * @@ -67,7 +67,7 @@ import junit.framework.*; /** * Entry point for all Collections tests. * @author Rodney Waldhoff - * @version $Id: TestAll.java,v 1.22 2002/03/01 19:06:44 morgand Exp $ + * @version $Id: TestAll.java,v 1.23 2002/03/01 23:31:35 morgand Exp $ */ public class TestAll extends TestCase { public TestAll(String testName) { @@ -82,6 +82,7 @@ public class TestAll extends TestCase { suite.addTest(TestBeanMap.suite()); suite.addTest(TestCollectionUtils.suite()); suite.addTest(TestComparableComparator.suite()); + suite.addTest(TestComparatorChain.suite()); suite.addTest(TestCursorableLinkedList.suite()); suite.addTest(TestDoubleOrderedMap.suite()); suite.addTest(TestExtendedProperties.suite()); diff --git a/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java b/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java new file mode 100644 index 000000000..646f22c0a --- /dev/null +++ b/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java @@ -0,0 +1,119 @@ +package org.apache.commons.collections.comparators; + +import java.io.Serializable; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class TestComparatorChain extends TestComparator { + + public TestComparatorChain(String testName) { + super(testName); + } + + public static Test suite() { + return new TestSuite(TestComparatorChain.class); + } + + /** + * + * @return + */ + public Comparator makeComparator() { + ComparatorChain chain = new ComparatorChain(new ColumnComparator(0)); + chain.addComparator(new ColumnComparator(1),true); // reverse the second column + chain.addComparator(new ColumnComparator(2),false); + return chain; + } + + public List getComparableObjectsOrdered() { + List list = new LinkedList(); + // this is the correct order assuming a + // "0th forward, 1st reverse, 2nd forward" sort + list.add(new PseudoRow(1,2,3)); + list.add(new PseudoRow(2,3,5)); + list.add(new PseudoRow(2,2,4)); + list.add(new PseudoRow(2,2,8)); + list.add(new PseudoRow(3,1,0)); + list.add(new PseudoRow(4,4,4)); + list.add(new PseudoRow(4,4,7)); + return list; + } + + public static class PseudoRow implements Serializable { + + public int cols[] = new int[3]; + + public PseudoRow(int col1, int col2, int col3) { + cols[0] = col1; + cols[1] = col2; + cols[2] = col3; + } + + public int getColumn(int colIndex) { + return cols[colIndex]; + } + + public String toString() { + StringBuffer buf = new StringBuffer(); + buf.append("["); + buf.append(cols[0]); + buf.append(","); + buf.append(cols[1]); + buf.append(","); + buf.append(cols[2]); + buf.append("]"); + return buf.toString(); + } + + public boolean equals(Object o) { + if (!(o instanceof PseudoRow)) { + return false; + } + + PseudoRow row = (PseudoRow) o; + if (getColumn(0) != row.getColumn(0)) { + return false; + } + + if (getColumn(1) != row.getColumn(1)) { + return false; + } + + if (getColumn(2) != row.getColumn(2)) { + return false; + } + + return true; + } + + } + + public static class ColumnComparator implements Comparator,Serializable { + + protected int colIndex = 0; + + public ColumnComparator(int colIndex) { + this.colIndex = colIndex; + } + + public int compare(Object o1, Object o2) { + + int col1 = ( (PseudoRow) o1).getColumn(colIndex); + int col2 = ( (PseudoRow) o2).getColumn(colIndex); + + if (col1 > col2) { + return 1; + } else if (col1 < col2) { + return -1; + } + + return 0; + } + } +}