package com.limegroup.gnutella.routing;
import junit.framework.Test;
import org.limewire.gnutella.tests.LimeTestCase;
import org.limewire.gnutella.tests.LimeTestUtils;
import org.limewire.lifecycle.ServiceRegistry;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.limegroup.gnutella.library.FileCollection;
import com.limegroup.gnutella.library.FileDesc;
import com.limegroup.gnutella.library.FileDescStub;
import com.limegroup.gnutella.library.GnutellaFiles;
import com.limegroup.gnutella.library.LibraryStubModule;
import com.limegroup.gnutella.stubs.QueryRequestStub;
public class QRPUpdaterTest extends LimeTestCase {
@Inject private QRPUpdater qrpUpdater;
@Inject private Injector injector;
@Inject @GnutellaFiles private FileCollection gnutellaFileCollection;
public QRPUpdaterTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(QRPUpdaterTest.class);
}
@Override
protected void setUp() throws Exception {
injector = LimeTestUtils.createInjectorNonEagerly(new LibraryStubModule(), LimeTestUtils.createModule(this));
injector.getInstance(ServiceRegistry.class).initialize();
}
public void testGetQRT() {
QueryRouteTable table = qrpUpdater.getQRT();
//only defaults should be found
assertTrue(table.contains(new QueryRequestImpl("limewire")));
assertFalse(table.contains(new QueryRequestImpl("FoundFile.txt")));
assertFalse(table.contains(new QueryRequestImpl("NotFound.txt")));
FileDesc fd = new FileDescStub("FoundFile.txt");
gnutellaFileCollection.add(fd);
table = qrpUpdater.getQRT();
assertTrue(table.contains(new QueryRequestImpl("limewire")));
assertTrue(table.contains(new QueryRequestImpl("FoundFile.txt")));
assertFalse(table.contains(new QueryRequestImpl("NotFound.txt")));
gnutellaFileCollection.remove(fd);
table = qrpUpdater.getQRT();
assertTrue(table.contains(new QueryRequestImpl("limewire")));
assertFalse(table.contains(new QueryRequestImpl("FoundFile.txt")));
assertFalse(table.contains(new QueryRequestImpl("NotFound.txt")));
}
private class QueryRequestImpl extends QueryRequestStub {
private String keyWords;
public QueryRequestImpl(String keywords) {
this.keyWords = keywords;
}
@Override
public String getQuery() {
return keyWords;
}
}
}