package org.limewire.filter;
import junit.framework.Test;
import org.limewire.util.BaseTestCase;
public class DefaultFilterSupportTest extends BaseTestCase {
private DefaultFilterSupport<Object> filterSupport;
public DefaultFilterSupportTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(DefaultFilterSupportTest.class);
}
@Override
protected void setUp() throws Exception {
filterSupport = new DefaultFilterSupport<Object>();
}
public void testAddRemoveBlackListFilter() {
Object o = new Object();
assertTrue(filterSupport.allow(o));
Filter<Object> filter = new ObjectFilter(o, false);
filterSupport.addBlackListFilter(filter);
assertFalse(filterSupport.allow(o));
filterSupport.removeBlackListFilter(filter);
assertTrue(filterSupport.allow(o));
}
public void testAddRemoveWhiteListFilter() {
Object o = new Object();
assertTrue(filterSupport.allow(o));
Filter<Object> filter = new ObjectFilter(o, false);
filterSupport.addBlackListFilter(filter);
assertFalse(filterSupport.allow(o));
Filter<Object> whiteListFilter = new ObjectFilter(o, true);
filterSupport.addWhiteListFilter(whiteListFilter);
assertTrue(filterSupport.allow(o));
filterSupport.removeWhiteListFilter(whiteListFilter);
assertFalse(filterSupport.allow(o));
}
private class ObjectFilter implements Filter<Object> {
private final Object obj;
private final boolean allow;
public ObjectFilter(Object obj, boolean allow) {
this.obj = obj;
this.allow = allow;
}
@Override
public boolean allow(Object t) {
if (obj == t) {
return allow;
}
return true;
}
}
}