package org.limewire.ui.swing.search.resultpanel; import static org.limewire.ui.swing.search.resultpanel.list.ListViewRowHeightRule.RowDisplayConfig.*; import junit.framework.TestCase; import org.limewire.core.api.FilePropertyKey; import org.limewire.ui.swing.search.model.BasicDownloadState; import org.limewire.ui.swing.search.model.MockVisualSearchResult; import org.limewire.ui.swing.search.resultpanel.list.ListViewRowHeightRuleImpl; import org.limewire.ui.swing.search.resultpanel.list.ListViewRowHeightRule.RowDisplayConfig; import org.limewire.ui.swing.search.resultpanel.list.ListViewRowHeightRule.RowDisplayResult; public class ListViewRowHeightRuleTest extends TestCase { private ListViewRowHeightRuleImpl rule; private MockVisualSearchResult mock; @Override protected void setUp() throws Exception { rule = new ListViewRowHeightRuleImpl(); mock = new MockVisualSearchResult("Foo"); } public void testHeadingOnly() { assertStuff(BasicDownloadState.DOWNLOADING, "bar", HeadingOnly, true, true); assertStuff(BasicDownloadState.DOWNLOADED, "bar", HeadingOnly, true, true); assertStuff(BasicDownloadState.LIBRARY, "bar", HeadingOnly, true, true); } public void testHeadingOnlyWhenSubheadingAndMetadataIsEmptyOrNull() { assertStuff(BasicDownloadState.DOWNLOADING, "", HeadingOnly, true, true); assertStuff(BasicDownloadState.DOWNLOADING, null, HeadingOnly, true, true); assertStuff(BasicDownloadState.DOWNLOADED, "", HeadingOnly, true, true); assertStuff(BasicDownloadState.DOWNLOADED, null, HeadingOnly, true, true); assertStuff(BasicDownloadState.LIBRARY, "", HeadingOnly, true, true); assertStuff(BasicDownloadState.LIBRARY, null, HeadingOnly, true, true); assertStuff(BasicDownloadState.NOT_STARTED, "", HeadingOnly, true, true); assertStuff(BasicDownloadState.NOT_STARTED, null, HeadingOnly, true, true); } public void testHeadingOnlyForSpam() { mock.setSpam(true); assertStuff(BasicDownloadState.NOT_STARTED, "bar", HeadingOnly, true, true); } public void testHeadingAndMetadataOnly() { mock.setHeading("bar"); mock.getProperties().put(FilePropertyKey.NAME, "foo"); assertStuff(BasicDownloadState.NOT_STARTED, "foo", HeadingAndMetadata, true, false); } private void assertStuff(BasicDownloadState state, String search, RowDisplayConfig config, boolean subHeadingEmpty, boolean metadataNull) { mock.setDownloadState(state); rule.initializeWithSearch(search); RowDisplayResult result = rule.getDisplayResult(mock); assertEquals(config, result.getConfig()); assertEquals(subHeadingEmpty , result.getSubheading() == null || "".equals(result.getSubheading())); assertEquals(metadataNull, result.getMetadata() == null); } public void testHeadingAndSubHeading() { mock.setDownloadState(BasicDownloadState.NOT_STARTED); mock.setSubHeading("bar"); assertStuff(BasicDownloadState.NOT_STARTED, "foo", HeadingAndSubheading, false, true); mock.setHeading("bar"); mock.setSubHeading("foo"); assertStuff(BasicDownloadState.NOT_STARTED, "foo", HeadingAndSubheading, false, true); assertStuff(BasicDownloadState.NOT_STARTED, "baz", HeadingAndSubheading, false, true); } public void testHeadingNotWrappedInHTMLButSubheadingIs() { mock.setDownloadState(BasicDownloadState.NOT_STARTED); mock.setSubHeading("bar"); mock.setDownloadState(BasicDownloadState.NOT_STARTED); rule.initializeWithSearch("foo"); RowDisplayResult result = rule.getDisplayResult(mock); //Only subheading is explicitly wrapped in HTML tags by the listviewrowheightrule. //The heading is wrapped in tags elsewhere later in the processing chain but subheading //is more simple and is wrapped here. assertEquals("<b>Foo</b>", result.getHeading()); assertEquals("<html>bar</html>", result.getSubheading()); } public void testHeadingSubHeadingAndMetadata() { mock.setHeading("bar"); mock.setSubHeading("baz"); mock.getProperties().put(FilePropertyKey.NAME, "foo"); assertStuff(BasicDownloadState.NOT_STARTED, "foo", HeadingSubHeadingAndMetadata, false, false); } }