From 5516cbc0616a7f731740b1155babbde4d1e7aee0 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Thu, 18 Dec 2014 12:26:04 +0100
Subject: [PATCH] Added test for the merger

---
 .../basic/distributor/DistributorTest.java    |  2 +-
 .../stage/basic/merger/MergerTest.java        | 60 +++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 src/test/java/teetime/stage/basic/merger/MergerTest.java

diff --git a/src/test/java/teetime/stage/basic/distributor/DistributorTest.java b/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
index 3ea966db..58116c47 100644
--- a/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
+++ b/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
@@ -29,7 +29,7 @@ public class DistributorTest {
 	private CollectorSink<Integer> sndCollector;
 
 	@Before
-	public void initializeRecordSimplificator() throws Exception {
+	public void initializeDistributor() throws Exception {
 		this.distributorUnderTest = new Distributor<Integer>();
 		this.fstCollector = new CollectorSink<Integer>();
 		this.sndCollector = new CollectorSink<Integer>();
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..0ea68fc1
--- /dev/null
+++ b/src/test/java/teetime/stage/basic/merger/MergerTest.java
@@ -0,0 +1,60 @@
+package teetime.stage.basic.merger;
+
+import static org.hamcrest.Matchers.contains;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import teetime.framework.pipe.IPipeFactory;
+import teetime.framework.pipe.SingleElementPipeFactory;
+import teetime.stage.CollectorSink;
+import teetime.stage.InitialElementProducer;
+
+/**
+ * @author Nils Christian Ehmke
+ *
+ * @since 1.0
+ */
+public class MergerTest {
+
+	private Merger<Integer> mergerUnderTest;
+	private CollectorSink<Integer> collector;
+	private InitialElementProducer<Integer> fstProducer;
+	private InitialElementProducer<Integer> sndProducer;
+
+	@Before
+	public void initializeMerger() throws Exception {
+		this.mergerUnderTest = new Merger<Integer>();
+		this.collector = new CollectorSink<Integer>();
+		this.fstProducer = new InitialElementProducer<Integer>(1, 2, 3);
+		this.sndProducer = new InitialElementProducer<Integer>(4, 5, 6);
+
+		final IPipeFactory pipeFactory = new SingleElementPipeFactory();
+		pipeFactory.create(this.fstProducer.getOutputPort(), this.mergerUnderTest.getNewInputPort());
+		pipeFactory.create(this.sndProducer.getOutputPort(), this.mergerUnderTest.getNewInputPort());
+		pipeFactory.create(this.mergerUnderTest.getOutputPort(), this.collector.getInputPort());
+
+		mergerUnderTest.onStarting();
+	}
+
+	@Test
+	public void roundRobinShouldWork() {
+		mergerUnderTest.setStrategy(new RoundRobinStrategy());
+
+		this.fstProducer.executeWithPorts();
+		this.sndProducer.executeWithPorts();
+
+		assertThat(this.collector.getElements(), contains(1, 2, 3, 4, 5, 6));
+	}
+
+	@Test
+	public void roundRobinWithSingleProducerShouldWork() {
+		mergerUnderTest.setStrategy(new RoundRobinStrategy());
+
+		this.fstProducer.executeWithPorts();
+
+		assertThat(this.collector.getElements(), contains(1, 2, 3));
+	}
+
+}
-- 
GitLab