package org.sef4j.core.helpers.senders; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.sef4j.core.helpers.senders.InMemoryCyclicEventSender; public class InMemoryCyclicEventSenderTest { private InMemoryCyclicEventSender<Integer> sut = new InMemoryCyclicEventSender<Integer>(); @Test public void testSendEvent() { // Prepare Integer e1 = Integer.valueOf(1); // Perform sut.sendEvent(e1); // Post-check List<Integer> ls = sut.getCopy(); Assert.assertEquals(1, ls.size()); Assert.assertSame(e1, ls.get(0)); // Prepare Integer e2 = Integer.valueOf(2); // Perform sut.sendEvent(e2); // Post-check ls = sut.getCopy(); Assert.assertEquals(2, ls.size()); Assert.assertSame(e1, ls.get(0)); Assert.assertSame(e2, ls.get(1)); } @Test public void testSendEvents() { // Prepare Integer e1 = Integer.valueOf(1); Integer e2 = Integer.valueOf(2); // Perform sut.sendEvents(Arrays.asList(e1, e2)); // Post-check List<Integer> ls = sut.getCopy(); Assert.assertEquals(2, ls.size()); Assert.assertSame(e1, ls.get(0)); Assert.assertSame(e2, ls.get(1)); } @Test public void testSendEvent_modulo() { // Prepare int len = sut.getMaxEventLen(); // Perform int maxI = (2*len+3); for (int i = 0; i < maxI; i++) { Integer e = Integer.valueOf(i); sut.sendEvent(e); } // Post-check List<Integer> ls = sut.getCopy(); Assert.assertEquals(len, ls.size()); int firstInBuffer = maxI - len; Assert.assertEquals(firstInBuffer, (int) ls.get(0)); for (int i = 0; i < len; i++) { Assert.assertEquals(firstInBuffer+i, (int) ls.get(i)); } } @Test public void testClearAndGet() { // Prepare Integer e1 = Integer.valueOf(1); Integer e2 = Integer.valueOf(2); // Perform sut.sendEvent(e1); sut.sendEvent(e2); // Post-check List<Integer> ls = sut.clearAndGet(); Assert.assertEquals(2, ls.size()); Assert.assertSame(e1, ls.get(0)); Assert.assertSame(e2, ls.get(1)); Assert.assertEquals(0, sut.getCopy().size()); } }