package org.limewire.ui.swing.search.model;
import java.util.ArrayList;
import java.util.Collections;
import org.limewire.core.api.FilePropertyKey;
import junit.framework.TestCase;
public class SimilarResultsGroupingComparatorTest extends TestCase {
private static final String NON_PARENT_1 = "nonParent1";
private static final String NON_PARENT_2 = "nonParent2";
private static final String SIMILAR1 = "similar1";
private static final String SIMILAR2 = "similar2";
private static final String PARENT = "parent";
private ArrayList<VisualSearchResult> results;
private MockVisualSearchResult parent;
private VisualSearchResult simResult1;
private VisualSearchResult simResult2;
private MockVisualSearchResult nonParent1;
private MockVisualSearchResult nonParent2;
private SimilarResultsGroupingComparator comparator;
@Override
protected void setUp() {
comparator = new SimilarResultsGroupingComparator() {
@Override
protected int doCompare(VisualSearchResult result1, VisualSearchResult result2) {
return result1.getHeading().compareTo(result2.getHeading());
}
};
results = new ArrayList<VisualSearchResult>();
parent = new MockVisualSearchResult(PARENT);
simResult1 = new MockVisualSearchResult(SIMILAR1, parent);
simResult2 = new MockVisualSearchResult(SIMILAR2, parent);
nonParent1 = new MockVisualSearchResult(NON_PARENT_1);
nonParent2 = new MockVisualSearchResult(NON_PARENT_2);
}
public void testSorting1() {
populate(nonParent2, simResult2, parent, nonParent1, simResult1);
assertOrder(NON_PARENT_1, NON_PARENT_2, PARENT, SIMILAR2, SIMILAR1);
}
public void testSorting2() {
populate(nonParent1, simResult2, parent, simResult1, nonParent2);
assertOrder(NON_PARENT_1, NON_PARENT_2, PARENT, SIMILAR2, SIMILAR1);
}
public void testSorting3() {
populate(simResult2, simResult1, parent, nonParent1, nonParent2);
assertOrder( NON_PARENT_1, NON_PARENT_2, PARENT, SIMILAR2, SIMILAR1);
}
public void testSorting4() {
populate(simResult1, simResult2, nonParent1, parent, nonParent2);
assertOrder(NON_PARENT_1, NON_PARENT_2, PARENT, SIMILAR1, SIMILAR2);
results.clear();
populate(parent, nonParent2, simResult2, nonParent1, simResult1);
assertOrder(NON_PARENT_1, NON_PARENT_2, PARENT, SIMILAR2, SIMILAR1);
}
private void populate(VisualSearchResult... results) {
for(VisualSearchResult result : results) {
this.results.add(result);
}
}
private void assertOrder(String... order) {
Collections.sort(results, comparator);
/*for(VisualSearchResult result : results) {
System.out.print(result.getDescription() + ", ");
}
System.out.println("");*/
int index = 0;
for (String result : order) {
assertEquals(result, results.get(index++).getProperty(FilePropertyKey.NAME));
}
}
}