package org.jvalue.ods.processor.filter; import com.codahale.metrics.MetricRegistry; import org.junit.Test; import org.junit.runner.RunWith; import org.jvalue.ods.api.sources.DataSource; import mockit.Mocked; import mockit.integration.junit4.JMockit; import static org.junit.Assert.assertEquals; @RunWith(JMockit.class) public final class AbstractFilterTest { @Mocked private DataSource source; @Mocked private MetricRegistry registry; private int filterCount = 0, completeCount = 0; @Test public final void testChain() throws FilterException { String value = "dummy"; AbstractFilter<String, String> chain = new DummyFilter(value); chain .setNextFilter(new DummyFilter(value)) .setNextFilter(new DummyFilter(value)) .setNextFilter(new DummyFilter(value)); chain.filter(value); chain.onComplete(); assertEquals(4, filterCount); assertEquals(4, completeCount); } private class DummyFilter extends AbstractFilter<String, String> { private String value; public DummyFilter(String value) { super(AbstractFilterTest.this.source, registry); this.value = value; } @Override protected String doFilter(String param) { assertEquals(value, param); filterCount++; return param; } @Override protected void doOnComplete() { completeCount++; } } }