package org.limewire.ui.swing.search.model;
import java.util.Comparator;
import junit.framework.TestCase;
import org.limewire.core.api.FilePropertyKey;
/**
* Test case for SortFactory.
*/
public class SortFactoryTest extends TestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/** Tests method to retrieve sort comparator by option. */
public void testGetSortComparator() {
// Get all sort options.
SortOption[] sortOptions = SortOption.values();
// Verify comparator is available for every sort option.
for (SortOption sortOption : sortOptions) {
Comparator<VisualSearchResult> comparator = SortFactory.getSortComparator(sortOption);
assertNotNull("sort comparator", comparator);
}
}
/** Tests method to retrieve date comparator. */
public void testGetDateComparator() {
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
vsr1.getProperties().put(FilePropertyKey.DATE_CREATED, new Long(2));
vsr2.getProperties().put(FilePropertyKey.DATE_CREATED, new Long(1));
// Get date comparator.
Comparator<VisualSearchResult> comparator =
SortFactory.getDateComparator(FilePropertyKey.DATE_CREATED, true);
// Verify compare.
int result = comparator.compare(vsr1, vsr2);
assertTrue("date comparator", (result > 0));
}
/** Tests method to retrieve long comparator. */
public void testGetLongComparator() {
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
vsr1.getProperties().put(FilePropertyKey.YEAR, 2009L);
vsr2.getProperties().put(FilePropertyKey.YEAR, 2008L);
// Get long comparator.
Comparator<VisualSearchResult> comparator =
SortFactory.getLongComparator(FilePropertyKey.YEAR, true);
// Verify compare.
int result = comparator.compare(vsr1, vsr2);
assertTrue("long comparator", (result > 0));
}
/** Tests method to retrieve name comparator. */
public void testGetNameComparator() {
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
// Get name comparator.
Comparator<VisualSearchResult> comparator = SortFactory.getNameComparator(true);
// Verify compare.
int result = comparator.compare(vsr1, vsr2);
assertTrue("name comparator", (result < 0));
}
/** Tests method to retrieve relevance comparator. */
public void testGetRelevanceComparator() {
// Get relevance comparator.
Comparator<VisualSearchResult> comparator = SortFactory.getRelevanceComparator();
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
// Verify compare for equal relevance - name values are compared.
int result = comparator.compare(vsr1, vsr2);
assertTrue("equal relevance", (result < 0));
// Set test relevance values.
vsr1.setRelevance(1);
vsr2.setRelevance(2);
// Verify compare for non-equal relevance - order is descending.
result = comparator.compare(vsr1, vsr2);
assertTrue("non-equal relevance", (result > 0));
}
/** Tests method to retrieve relevance comparator with sort order. */
public void testGetRelevanceComparatorBoolean() {
// Get relevance comparator.
Comparator<VisualSearchResult> comparator = SortFactory.getRelevanceComparator(true);
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
// Verify compare for equal relevance.
int result = comparator.compare(vsr1, vsr2);
assertTrue("equal relevance", (result == 0));
// Set test relevance values.
vsr1.setRelevance(1);
vsr2.setRelevance(2);
// Verify compare for non-equal relevance.
result = comparator.compare(vsr1, vsr2);
assertTrue("non-equal relevance", (result < 0));
}
/** Tests method to retrieve string comparator. */
public void testGetStringComparator() {
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
vsr1.getProperties().put(FilePropertyKey.TITLE, "zulu");
vsr2.getProperties().put(FilePropertyKey.TITLE, "yankee");
// Get string comparator.
Comparator<VisualSearchResult> comparator =
SortFactory.getStringComparator(FilePropertyKey.TITLE, true);
// Verify compare.
int result = comparator.compare(vsr1, vsr2);
assertTrue("string comparator", (result > 0));
}
/**
* Tests method to retrieve string comparator. Should be case-insensitive.
*/
public void testGetStringComparatorMixedCase() {
// Create test search results.
MockVisualSearchResult vsr1 = new MockVisualSearchResult("Hello");
MockVisualSearchResult vsr2 = new MockVisualSearchResult("World");
vsr1.getProperties().put(FilePropertyKey.TITLE, "Zulu");
vsr2.getProperties().put(FilePropertyKey.TITLE, "yankee");
// Get string comparator.
Comparator<VisualSearchResult> comparator =
SortFactory.getStringComparator(FilePropertyKey.TITLE, true);
// Verify compare is case-insensitive.
int result = comparator.compare(vsr1, vsr2);
assertTrue("string comparator", (result > 0));
}
}