package org.sef4j.core.helpers.senders;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import org.junit.Assert;
import org.junit.Test;
import org.sef4j.core.helpers.senders.AbstractFilterEventSender.PredicateFilterEventSender;
public class AbstractFilterEventSenderTest {
private static class E {
public final String value;
public E(String value) {
this.value = value;
}
}
protected Predicate<E> predicate1 = (x) -> x.value.endsWith("1");
protected InMemoryEventSender<E> targetEventSender = new InMemoryEventSender<E>();
protected PredicateFilterEventSender<E> sut = new PredicateFilterEventSender<E>(targetEventSender, predicate1);
E e1 = new E("event1");
E e2 = new E("event2");
@Test
public void testSendEvent() {
// Prepare
// Perform
sut.sendEvent(e1);
// Post-check
List<E> filteredEvents = targetEventSender.clearAndGet();
Assert.assertEquals(1, filteredEvents.size());
Assert.assertSame(e1, filteredEvents.get(0));
// Perform
sut.sendEvent(e2);
// Post-check
filteredEvents = targetEventSender.clearAndGet();
Assert.assertEquals(0, filteredEvents.size());
}
@Test
public void testSendEvents() {
// Prepare
// Perform
sut.sendEvents(Arrays.asList(e1, e2, e1, e2));
// Post-check
List<E> filteredEvents = targetEventSender.clearAndGet();
Assert.assertEquals(2, filteredEvents.size());
Assert.assertSame(e1, filteredEvents.get(0));
Assert.assertSame(e1, filteredEvents.get(1));
}
}