package ee.telekom.workflow.graph.node.event; import org.junit.Assert; import org.junit.Test; import ee.telekom.workflow.graph.AbstractGraphTest; import ee.telekom.workflow.graph.Graph; import ee.telekom.workflow.graph.GraphEngine; import ee.telekom.workflow.graph.GraphFactory; import ee.telekom.workflow.graph.GraphInstance; import ee.telekom.workflow.graph.RecordEventsListener; import ee.telekom.workflow.graph.Token; public class CatchTimerTest extends AbstractGraphTest { @Test public void one() { RecordEventsListener listener = new RecordEventsListener(); GraphEngine engine = createEngine(listener); Graph graph = GraphFactory.INSTANCE.timer_one(); GraphInstance instance = engine.start(graph, null); assertActiveTokens(instance, 1); Token token = instance.getTokens().iterator().next(); assertAwaitingTimer(token, GraphFactory.TIMER_MS); assertActiveWorkItems(instance, 1); completeWorkItemOnToken(engine, token); assertActiveTokens(instance, 0); assertActiveWorkItems(instance, 0); Assert.assertEquals(EVENTS_1WI, listener.getEvents()); } @Test public void one_pre_post() { RecordEventsListener listener = new RecordEventsListener(); GraphEngine engine = createEngine(listener); Graph graph = GraphFactory.INSTANCE.timer_one_pre_post(); GraphInstance instance = engine.start(graph, null); assertActiveTokens(instance, 1); Token token = instance.getTokens().iterator().next(); assertAwaitingTimer(token, GraphFactory.TIMER_MS); assertActiveWorkItems(instance, 1); completeWorkItemOnToken(engine, token); assertActiveTokens(instance, 0); assertActiveWorkItems(instance, 0); assertPath(instance, "1,3"); Assert.assertEquals(EVENTS_1WI, listener.getEvents()); } @Test public void two() { RecordEventsListener listener = new RecordEventsListener(); GraphEngine engine = createEngine(listener); Graph graph = GraphFactory.INSTANCE.timer_two(); GraphInstance instance = engine.start(graph, null); assertActiveTokens(instance, 1); Token token = instance.getTokens().iterator().next(); assertAwaitingTimer(token, GraphFactory.TIMER_MS); assertActiveWorkItems(instance, 1); completeWorkItemOnToken(engine, token); assertActiveTokens(instance, 1); assertActiveWorkItems(instance, 1); assertAwaitingTimer(token, GraphFactory.TIMER_MS); completeWorkItemOnToken(engine, token); assertActiveTokens(instance, 0); assertActiveWorkItems(instance, 0); Assert.assertEquals(EVENTS_2WI_SERIAL, listener.getEvents()); } @Test public void parallel() { RecordEventsListener listener = new RecordEventsListener(); GraphEngine engine = createEngine(listener); Graph graph = GraphFactory.INSTANCE.timer_parallel_pre_post(); GraphInstance instance = engine.start(graph, null); assertActiveTokens(instance, 3); Token token2 = getTokenById(instance.getTokens(), 2); Token token3 = getTokenById(instance.getTokens(), 3); assertAwaitingTimer(token2, GraphFactory.TIMER_MS); assertAwaitingTimer(token3, GraphFactory.TIMER_MS); assertActiveWorkItems(instance, 2); assertPath(instance, "1"); completeWorkItemOnToken(engine, token2); assertAwaitingTimer(token3, GraphFactory.TIMER_MS); assertActiveWorkItems(instance, 1); assertPath(instance, "1"); completeWorkItemOnToken(engine, token3); assertActiveTokens(instance, 0); assertActiveWorkItems(instance, 0); assertPath(instance, "1,6"); Assert.assertEquals(EVENTS_2WI_PARALLEL, listener.getEvents()); } }