diff --git a/src/test/java/teetime/stage/basic/merger/MergerTest.java b/src/test/java/teetime/stage/basic/merger/MergerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a5d235ad159f3710c847139ccf3b936e1b685c77 --- /dev/null +++ b/src/test/java/teetime/stage/basic/merger/MergerTest.java @@ -0,0 +1,70 @@ +package teetime.stage.basic.merger; + +import org.junit.Assert; +import org.junit.Test; + +import teetime.framework.InputPort; +import teetime.framework.signal.StartingSignal; +import teetime.framework.signal.TerminatingSignal; + +public class MergerTest { + + private Merger<Integer> merger; + private InputPort<Integer> firstPort; + private InputPort<Integer> secondPort; + private MergerTestingPipe testPipe; + + public void beforeSignalTesting() { + merger = new Merger<Integer>(); + + firstPort = merger.getNewInputPort(); + secondPort = merger.getNewInputPort(); + + testPipe = new MergerTestingPipe(); + merger.getOutputPort().setPipe(testPipe); + } + + @Test + public void testSameSignal() { + this.beforeSignalTesting(); + merger.onSignal(new StartingSignal(), firstPort); + Assert.assertFalse(testPipe.startSent()); + + merger.onSignal(new StartingSignal(), secondPort); + Assert.assertTrue(testPipe.startSent()); + } + + @Test + public void testDifferentSignals() { + this.beforeSignalTesting(); + merger.onSignal(new StartingSignal(), firstPort); + Assert.assertFalse(testPipe.startSent()); + + merger.onSignal(new TerminatingSignal(), secondPort); + Assert.assertFalse(testPipe.startSent()); + } + + @Test + public void testInterleavedSignals() { + this.beforeSignalTesting(); + merger.onSignal(new StartingSignal(), firstPort); + Assert.assertFalse(testPipe.startSent()); + Assert.assertFalse(testPipe.terminateSent()); + + merger.onSignal(new TerminatingSignal(), secondPort); + Assert.assertFalse(testPipe.startSent()); + Assert.assertFalse(testPipe.terminateSent()); + + merger.onSignal(new TerminatingSignal(), firstPort); + Assert.assertFalse(testPipe.startSent()); + Assert.assertTrue(testPipe.terminateSent()); + + merger.onSignal(new TerminatingSignal(), firstPort); + Assert.assertFalse(testPipe.startSent()); + Assert.assertTrue(testPipe.terminateSent()); + + merger.onSignal(new StartingSignal(), firstPort); + Assert.assertTrue(testPipe.startSent()); + Assert.assertTrue(testPipe.terminateSent()); + } +} diff --git a/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java b/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java new file mode 100644 index 0000000000000000000000000000000000000000..e4c47289d5d6b9fc18b17b5093ba7e4c2ab9864a --- /dev/null +++ b/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java @@ -0,0 +1,81 @@ +package teetime.stage.basic.merger; + +import teetime.framework.InputPort; +import teetime.framework.OutputPort; +import teetime.framework.pipe.IPipe; +import teetime.framework.signal.ISignal; +import teetime.framework.signal.StartingSignal; +import teetime.framework.signal.TerminatingSignal; + +public class MergerTestingPipe implements IPipe { + + private boolean startSent = false; + private boolean terminateSent = false; + + public MergerTestingPipe() {} + + @Override + public void sendSignal(final ISignal signal) { + if (signal.getClass().equals(StartingSignal.class)) { + this.startSent = true; + } else if (signal.getClass().equals(TerminatingSignal.class)) { + this.terminateSent = true; + } + } + + public boolean startSent() { + return this.startSent; + } + + public boolean terminateSent() { + return this.terminateSent; + } + + @Override + public boolean add(final Object element) { + return false; + } + + @Override + public boolean isEmpty() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int size() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Object removeLast() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object readLast() { + // TODO Auto-generated method stub + return null; + } + + @Override + public InputPort<?> getTargetPort() { + // TODO Auto-generated method stub + return null; + } + + @Override + public <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) { + // TODO Auto-generated method stub + + } + + @Override + public void reportNewElement() { + // TODO Auto-generated method stub + + } + +}