package org.sef4j.core.helpers.senders; import java.util.Arrays; import java.util.List; import java.util.function.Function; import org.junit.Assert; import org.junit.Test; import org.sef4j.core.MockEvent; import org.sef4j.core.helpers.senders.AbstractTransformerEventSender.FuncTransformerEventSender; public class AbstractTransformerEventSenderTest { private static class F { public final MockEvent wrapped; public F(MockEvent wrapped) { this.wrapped = wrapped; } } protected Function<MockEvent,F> transform = (x) -> new F(x); protected InMemoryEventSender<F> targetEventSender = new InMemoryEventSender<F>(); protected FuncTransformerEventSender<MockEvent,F> sut = new FuncTransformerEventSender<MockEvent,F>(targetEventSender, transform); MockEvent e1 = new MockEvent("event1"); MockEvent e2 = new MockEvent("event2"); @Test public void testSendEvent() { // Prepare // Perform sut.sendEvent(e1); // Post-check List<F> transformedEvents = targetEventSender.clearAndGet(); Assert.assertEquals(1, transformedEvents.size()); Assert.assertTrue(transformedEvents.get(0) instanceof F); Assert.assertTrue(((F) transformedEvents.get(0)).wrapped == e1); } @Test public void testSendEvents() { // Prepare // Perform sut.sendEvents(Arrays.asList(e1, e2)); // Post-check List<F> transformedEvents = targetEventSender.clearAndGet(); Assert.assertEquals(2, transformedEvents.size()); Assert.assertSame(((F) transformedEvents.get(0)).wrapped, e1); Assert.assertSame(((F) transformedEvents.get(1)).wrapped, e2); } }