package com.limegroup.gnutella.filters.response;
import junit.framework.Test;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.io.GUID;
import org.limewire.util.BaseTestCase;
import com.limegroup.gnutella.Response;
import com.limegroup.gnutella.filters.KeywordFilter;
import com.limegroup.gnutella.messages.QueryReply;
public class MutableGUIDFilterTest extends BaseTestCase {
Mockery context;
MutableGUIDFilter filter;
final KeywordFilterStub filterKeyword = new KeywordFilterStub();
QueryReply queryReplyMock;
Response responseMock;
public MutableGUIDFilterTest(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
context = new Mockery();
filter = new MutableGUIDFilter(filterKeyword);
queryReplyMock = context.mock(QueryReply.class);
responseMock = context.mock(Response.class);
}
public static Test suite() {
return buildTestSuite(MutableGUIDFilterTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
/*
* add and remove GUIDS:
* add GUIDs and test accordingly
* remove GUIDS and test accordingly
*/
public void testAddRemoveGUID(){
final GUID guid = new GUID();
final GUID guid2 = new GUID();
/*
* add guid to filter
*/
filter.addGUID(guid.bytes());
context.checking(new Expectations() {{
exactly(1).of(queryReplyMock).getGUID();
will(returnValue(guid.bytes()));
exactly(1).of(queryReplyMock).getGUID();
will(returnValue(guid2.bytes()));
}});
assertFalse(filter.allow(queryReplyMock, responseMock));
assertTrue(filter.allow(queryReplyMock, responseMock));
/*
* remove guid from filter
*/
filter.removeGUID(guid.bytes());
context.checking(new Expectations() {{
exactly(1).of(queryReplyMock).getGUID();
will(returnValue(guid.bytes()));
exactly(1).of(queryReplyMock).getGUID();
will(returnValue(guid2.bytes()));
}});
assertTrue(filter.allow(queryReplyMock, responseMock));
assertTrue(filter.allow(queryReplyMock, responseMock));
context.assertIsSatisfied();
}
private class KeywordFilterStub extends KeywordFilter {
KeywordFilterStub() {
super(false, false);
}
@Override
public boolean allow(QueryReply qr, Response response){
return false;
}
}
}