From 5e1dec0ede56c0af77251fa64afcc4c615004158 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Sat, 9 May 2015 19:26:20 +0100 Subject: [PATCH] Add test for triggerless region transitions --- .../transition/TransitionTests.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/transition/TransitionTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/transition/TransitionTests.java index 8431bdb6..5fece584 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/transition/TransitionTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/transition/TransitionTests.java @@ -89,6 +89,20 @@ public class TransitionTests extends AbstractStateMachineTests { ctx.close(); } + @SuppressWarnings({ "unchecked" }) + @Test + public void testTriggerlessTransitionInRegions() throws Exception { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(BaseConfig.class, Config5.class); + assertTrue(ctx.containsBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE)); + EnumStateMachine machine = + ctx.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, EnumStateMachine.class); + machine.start(); + assertThat(machine.getState().getIds(), contains(TestStates.S1)); + machine.sendEvent(MessageBuilder.withPayload(TestEvents.E1).build()); + assertThat(machine.getState().getIds(), contains(TestStates.S2)); + ctx.close(); + } + @SuppressWarnings({ "unchecked" }) @Test public void testInternalTransition() throws Exception { @@ -246,4 +260,49 @@ public class TransitionTests extends AbstractStateMachineTests { } + @Configuration + @EnableStateMachine + public static class Config5 extends EnumStateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states + .withStates() + .initial(TestStates.S1) + .state(TestStates.S2) + .and() + .withStates() + .parent(TestStates.S2) + .initial(TestStates.S20) + .state(TestStates.S201) + .end(TestStates.S201) + .and() + .withStates() + .parent(TestStates.S2) + .initial(TestStates.S21) + .state(TestStates.S211) + .end(TestStates.S211); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(TestStates.S1) + .target(TestStates.S2) + .event(TestEvents.E1) + .and() + .withExternal() + .state(TestStates.S2) + .source(TestStates.S20) + .target(TestStates.S201) + .and() + .withExternal() + .state(TestStates.S2) + .source(TestStates.S21) + .target(TestStates.S211); + } + + } + }