From 6a5cc2795263a3020e3e39c882caffcc665eb3a9 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Thu, 20 Nov 2014 13:55:26 +0100
Subject: [PATCH] Added tests for new signalhandling in merger

---
 .../stage/basic/merger/MergerTest.java        | 70 ++++++++++++++++
 .../stage/basic/merger/MergerTestingPipe.java | 81 +++++++++++++++++++
 2 files changed, 151 insertions(+)
 create mode 100644 src/test/java/teetime/stage/basic/merger/MergerTest.java
 create mode 100644 src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java

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 00000000..a5d235ad
--- /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 00000000..e4c47289
--- /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
+
+	}
+
+}
-- 
GitLab