package org.limewire.core.impl.monitor; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import org.limewire.util.BaseTestCase; public class CoreIncomingSearchManagerTest extends BaseTestCase { public CoreIncomingSearchManagerTest(String name) { super(name); } public void testHandlingQueries() { TestIncomingSearchListenerList incomingSearchListenerList = new TestIncomingSearchListenerList(); CoreIncomingSearchManager coreIncomingSearchManager = new CoreIncomingSearchManager( incomingSearchListenerList); List<String> incomingSearchList = coreIncomingSearchManager.getIncomingSearchList(); assertEmpty(incomingSearchList); String query1 = "query1"; incomingSearchListenerList.handleQueryString(query1); assertEquals(1, incomingSearchList.size()); assertContains(incomingSearchList, query1); String query2 = "query2"; incomingSearchListenerList.handleQueryString(query2); assertEquals(2, incomingSearchList.size()); assertContains(incomingSearchList, query1); assertContains(incomingSearchList, query2); } public void testDisablingEnablingCoreSearchManager() { TestIncomingSearchListenerList incomingSearchListenerList = new TestIncomingSearchListenerList(); CoreIncomingSearchManager coreIncomingSearchManager = new CoreIncomingSearchManager( incomingSearchListenerList); List<String> incomingSearchList = coreIncomingSearchManager.getIncomingSearchList(); assertEmpty(incomingSearchList); coreIncomingSearchManager.setListEnabled(false); String query1 = "query1"; incomingSearchListenerList.handleQueryString(query1); assertEmpty(incomingSearchList); String query2 = "query2"; incomingSearchListenerList.handleQueryString(query2); assertEmpty(incomingSearchList); coreIncomingSearchManager.setListEnabled(true); incomingSearchListenerList.handleQueryString(query1); assertEquals(1, incomingSearchList.size()); assertContains(incomingSearchList, query1); incomingSearchListenerList.handleQueryString(query2); assertEquals(2, incomingSearchList.size()); assertContains(incomingSearchList, query1); assertContains(incomingSearchList, query2); } public void testSettingListSize() { TestIncomingSearchListenerList incomingSearchListenerList = new TestIncomingSearchListenerList(); CoreIncomingSearchManager coreIncomingSearchManager = new CoreIncomingSearchManager( incomingSearchListenerList); List<String> incomingSearchList = coreIncomingSearchManager.getIncomingSearchList(); assertEmpty(incomingSearchList); coreIncomingSearchManager.setListSize(1); String query1 = "query1"; incomingSearchListenerList.handleQueryString(query1); assertEquals(1, incomingSearchList.size()); assertContains(incomingSearchList, query1); String query2 = "query2"; incomingSearchListenerList.handleQueryString(query2); assertEquals(1, incomingSearchList.size()); assertContains(incomingSearchList, query2); String query3 = "query3"; incomingSearchListenerList.handleQueryString(query3); assertEquals(1, incomingSearchList.size()); assertContains(incomingSearchList, query3); coreIncomingSearchManager.setListSize(2); incomingSearchListenerList.handleQueryString(query1); assertEquals(2, incomingSearchList.size()); assertContains(incomingSearchList, query1); assertContains(incomingSearchList, query3); incomingSearchListenerList.handleQueryString(query2); assertEquals(2, incomingSearchList.size()); assertContains(incomingSearchList, query2); assertContains(incomingSearchList, query1); incomingSearchListenerList.handleQueryString(query3); assertEquals(2, incomingSearchList.size()); assertContains(incomingSearchList, query3); assertContains(incomingSearchList, query2); } private class TestIncomingSearchListenerList implements IncomingSearchListenerList, IncomingSearchListener { private final CopyOnWriteArrayList<IncomingSearchListener> listeners; public TestIncomingSearchListenerList() { this.listeners = new CopyOnWriteArrayList<IncomingSearchListener>(); } @Override public void addIncomingSearchListener(IncomingSearchListener listener) { listeners.add(listener); } @Override public void removeIncomingSearchListener(IncomingSearchListener listener) { listeners.remove(listener); } @Override public void handleQueryString(String query) { for (IncomingSearchListener listener : listeners) { listener.handleQueryString(query); } } } }