assertTrue(exec.get().isComplete());
}
@Test public void blocks() throws Throwable {
SemaphoreStep step = new SemaphoreStep();
BlockSemaphoreStep block = new BlockSemaphoreStep();
final AtomicReference<FlowExecution> exec = new AtomicReference<FlowExecution>();
exec.set(new STMFlowDefinition(Arrays.<State>asList(new BlockState("block", STMExecution.END, block, "step"), new StepState("step", STMExecution.END, step))).create(new OwnerImpl(exec, tmp), Collections.<Action>emptyList()));
SemaphoreListener l = new SemaphoreListener();
exec.get().addListener(l);
exec.get().start();
FlowNode n = l.next();
assertTrue(String.valueOf(n), n instanceof FlowStartNode);
n = l.next();
assertTrue(n instanceof BlockStartNode);
n = l.next();
assertTrue(n instanceof BlockStartNode);
block.startBlock();
step.success(null);
n = l.next();
assertTrue(n instanceof AtomNode);
assertEquals(null, block.waitForBlock());
block.finishSuccess(null);
n = l.next();
assertTrue(n instanceof BlockEndNode);
n = l.next();
assertTrue(n instanceof BlockEndNode);
n = l.next();