diff --git a/src/main/java/teetime/framework/test/InputHolder.java b/src/main/java/teetime/framework/test/InputHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..338a6a052cfe2f0d5e92657686d97ad74839bc5a --- /dev/null +++ b/src/main/java/teetime/framework/test/InputHolder.java @@ -0,0 +1,39 @@ +package teetime.framework.test; + +import teetime.framework.InputPort; +import teetime.framework.Stage; + +public final class InputHolder<I> { + + private final StageTester stageTester; + private final Stage stage; + private final Iterable<Object> input; + + private InputPort<Object> port; + + @SuppressWarnings("unchecked") + InputHolder(final StageTester stageTester, final Stage stage, final Iterable<I> input) { + this.stageTester = stageTester; + this.stage = stage; + this.input = (Iterable<Object>) input; + } + + @SuppressWarnings("unchecked") + public StageTester to(final InputPort<? extends I> port) { + if (port.getOwningStage() != stage) { + throw new AssertionError(); + } + this.port = (InputPort<Object>) port; + + return stageTester; + } + + public Iterable<Object> getInput() { + return input; + } + + public InputPort<Object> getPort() { + return port; + } + +} diff --git a/src/main/java/teetime/framework/test/OutputHolder.java b/src/main/java/teetime/framework/test/OutputHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..9a5dece0f8f9665d18834638c8ca4f6f28f89be3 --- /dev/null +++ b/src/main/java/teetime/framework/test/OutputHolder.java @@ -0,0 +1,36 @@ +package teetime.framework.test; + +import java.util.List; + +import teetime.framework.OutputPort; +import teetime.framework.Stage; + +public final class OutputHolder<O> { + + private final StageTester stageTester; + private final List<Object> outputElements; + + private OutputPort<Object> port; + + @SuppressWarnings("unchecked") + OutputHolder(final StageTester stageTester, final Stage stage, final List<O> outputList) { + this.stageTester = stageTester; + this.outputElements = (List<Object>) outputList; + } + + @SuppressWarnings("unchecked") + public StageTester from(final OutputPort<O> port) { + this.port = (OutputPort<Object>) port; + + return stageTester; + } + + public List<Object> getOutputElements() { + return outputElements; + } + + public OutputPort<Object> getPort() { + return port; + } + +} diff --git a/src/main/java/teetime/framework/test/StageTester.java b/src/main/java/teetime/framework/test/StageTester.java index 2326e224d379b0204e35f28bf88b88244c4edc81..2dd7d3b05d9e75555dec4461412b4997574df5bd 100644 --- a/src/main/java/teetime/framework/test/StageTester.java +++ b/src/main/java/teetime/framework/test/StageTester.java @@ -22,8 +22,6 @@ import java.util.List; import teetime.framework.Analysis; import teetime.framework.AnalysisConfiguration; -import teetime.framework.InputPort; -import teetime.framework.OutputPort; import teetime.framework.Stage; import teetime.framework.pipe.IPipeFactory; import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering; @@ -52,7 +50,7 @@ public final class StageTester { } public <I> InputHolder<I> send(final Iterable<I> input) { - final InputHolder<I> inputHolder = new InputHolder<I>(input); + final InputHolder<I> inputHolder = new InputHolder<I>(this, stage, input); this.inputHolders.add(inputHolder); return inputHolder; } @@ -62,7 +60,7 @@ public final class StageTester { } public <O> OutputHolder<O> receive(final List<O> outputList) { - final OutputHolder<O> outputHolder = new OutputHolder<O>(outputList); + final OutputHolder<O> outputHolder = new OutputHolder<O>(this, stage, outputList); this.outputHolders.add(outputHolder); return outputHolder; } @@ -72,71 +70,14 @@ public final class StageTester { } public Collection<Pair<Thread, Throwable>> start() { - final AnalysisConfiguration configuration = new Configuration(); + final AnalysisConfiguration configuration = new Configuration(inputHolders, stage, outputHolders); final Analysis analysis = new Analysis(configuration); return analysis.start(); } - public final class InputHolder<I> { - - private final Iterable<Object> input; - private InputPort<Object> port; - - @SuppressWarnings("unchecked") - private InputHolder(final Iterable<I> input) { - this.input = (Iterable<Object>) input; - } - - @SuppressWarnings("unchecked") - public StageTester to(final InputPort<? extends I> port) { - if (port.getOwningStage() != stage) { - throw new AssertionError(); - } - this.port = (InputPort<Object>) port; - - return StageTester.this; - } - - public Iterable<Object> getInput() { - return input; - } - - public InputPort<Object> getPort() { - return port; - } - - } - - public final class OutputHolder<O> { - - private final List<Object> outputElements; - private OutputPort<Object> port; - - @SuppressWarnings("unchecked") - private OutputHolder(final List<O> outputList) { - this.outputElements = (List<Object>) outputList; - } - - @SuppressWarnings("unchecked") - public StageTester from(final OutputPort<O> port) { - this.port = (OutputPort<Object>) port; - - return StageTester.this; - } - - public List<Object> getOutputElements() { - return outputElements; - } - - public OutputPort<Object> getPort() { - return port; - } - - } - private final class Configuration extends AnalysisConfiguration { - public Configuration() { + public Configuration(final List<InputHolder<?>> inputHolders, final Stage stage, final List<OutputHolder<?>> outputHolders) { final IPipeFactory interPipeFactory = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, false); for (InputHolder<?> inputHolder : inputHolders) { diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki index 63ccbbc87bd2c0e6599ca91502149dba3cfb99de..0e4474577e1f49bc96e734c286b2d9e0363895e8 160000 --- a/src/site/markdown/wiki +++ b/src/site/markdown/wiki @@ -1 +1 @@ -Subproject commit 63ccbbc87bd2c0e6599ca91502149dba3cfb99de +Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8