|  | /* | 
|  | * Copyright 1999-2004 The Apache Software Foundation | 
|  | * | 
|  | * Licensed 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.Collections; | 
|  | import java.util.Comparator; | 
|  | import java.util.List; | 
|  |  | 
|  | @SuppressWarnings({"unchecked", "rawtypes"}) | 
|  | public abstract class TestComparator extends TestObject { | 
|  |  | 
|  |  | 
|  | public abstract Comparator makeComparator(); | 
|  | public abstract List getComparableObjectsOrdered(); | 
|  |  | 
|  | public Object makeObject() { | 
|  | return makeComparator(); | 
|  | } | 
|  |  | 
|  | /** | 
|  | * There were no Comparators in version 1.x. | 
|  | * | 
|  | * @return 2 | 
|  | */ | 
|  | public int getCompatibilityVersion() { | 
|  | return 2; | 
|  | } | 
|  |  | 
|  | public void reverseObjects(List list) { | 
|  | Collections.reverse(list); | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /** | 
|  | * Sort object according to the given Comparator. | 
|  | * | 
|  | * @param list       List to sort | 
|  | * @param comparator sorting comparator | 
|  | */ | 
|  | public void sortObjects(List list, Comparator comparator) { | 
|  |  | 
|  | Collections.sort(list,comparator); | 
|  |  | 
|  | } | 
|  |  | 
|  | public boolean supportsEmptyCollections() { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | public boolean supportsFullCollections() { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | public void testEmptyListSort() { | 
|  | List list = new ArrayList(); | 
|  | sortObjects(list,makeComparator()); | 
|  |  | 
|  | List list2 = new ArrayList(); | 
|  |  | 
|  | assertTrue("Comparator cannot sort empty lists", | 
|  | list2.equals(list)); | 
|  | } | 
|  |  | 
|  | public void testReverseListSort() { | 
|  | Comparator comparator = makeComparator(); | 
|  |  | 
|  | List randomList = getComparableObjectsOrdered(); | 
|  | reverseObjects(randomList); | 
|  | sortObjects(randomList,comparator); | 
|  |  | 
|  | List orderedList = getComparableObjectsOrdered(); | 
|  |  | 
|  | assertTrue("Comparator did not reorder the List correctly", | 
|  | orderedList.equals(randomList)); | 
|  |  | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | public String getCanonicalComparatorName(Object object) { | 
|  | StringBuffer retval = new StringBuffer(); | 
|  | retval.append("data/test/"); | 
|  | String colName = object.getClass().getName(); | 
|  | colName = colName.substring(colName.lastIndexOf(".")+1,colName.length()); | 
|  | retval.append(colName); | 
|  | retval.append(".version"); | 
|  | retval.append(getCompatibilityVersion()); | 
|  | retval.append(".obj"); | 
|  | return retval.toString(); | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Compare the current serialized form of the Comparator | 
|  | * against the canonical version in CVS. | 
|  | */ | 
|  | public void testComparatorCompatibility() { | 
|  | Comparator comparator = null; | 
|  |  | 
|  |  | 
|  | // make sure the canonical form produces the ordering we currently | 
|  | // expect | 
|  | List randomList = getComparableObjectsOrdered(); | 
|  | reverseObjects(randomList); | 
|  | sortObjects(randomList,comparator); | 
|  |  | 
|  | List orderedList = getComparableObjectsOrdered(); | 
|  |  | 
|  | assertTrue("Comparator did not reorder the List correctly:" + randomList, | 
|  | orderedList.equals(randomList)); | 
|  | } | 
|  |  | 
|  | } |