/** */ package org.webpieces.javasm.api; import junit.framework.TestCase; /** */ public class TestMultieventTransition extends TestCase { private MockActionListener mockOffListener = new MockActionListener(); private MockActionListener mockOnListener = new MockActionListener(); private StateMachine sm; private String flipOn; private String alsoFlipOn; private String flipOff; private State on; private Transition onToOff; @Override protected void setUp() throws Exception { super.setUp(); StateMachineFactory factory = StateMachineFactory.createFactory(); sm = factory.createStateMachine("TestMultieventTransition"); flipOn = "flipOn"; alsoFlipOn = "alsoFlipOn"; flipOff = "flipOff"; on = sm.createState("on"); State off = sm.createState("off"); onToOff = sm.createTransition(on, off, flipOff); onToOff.addActionListener(mockOffListener); Transition offToOn = sm.createTransition(off, on, flipOn, alsoFlipOn); offToOn.addActionListener(mockOnListener); } @Override protected void tearDown() throws Exception { super.tearDown(); //make sure no more extra events mockOffListener.expectNoMethodCalls(); mockOnListener.expectNoMethodCalls(); } public void testDifferentEvents() { Memento memento = sm.createMementoFromState("id", on); //fire turn off sm.fireEvent(memento, flipOff); mockOnListener.expectNoMethodCalls(); mockOffListener.expectOneMethodCall(); //fire turn off again... sm.fireEvent(memento, flipOff); mockOnListener.expectNoMethodCalls(); mockOffListener.expectNoMethodCalls(); //fire turn on..... sm.fireEvent(memento, flipOn); mockOnListener.expectOneMethodCall(); mockOffListener.expectNoMethodCalls(); //fire turn off again... sm.fireEvent(memento, flipOff); mockOnListener.expectNoMethodCalls(); mockOffListener.expectOneMethodCall(); // and turn back on with the other event sm.fireEvent(memento, alsoFlipOn); mockOnListener.expectOneMethodCall(); mockOffListener.expectNoMethodCalls(); //fire turn off again... sm.fireEvent(memento, flipOff); mockOnListener.expectNoMethodCalls(); mockOffListener.expectOneMethodCall(); //fire turn on..... sm.fireEvent(memento, flipOn); mockOnListener.expectOneMethodCall(); mockOffListener.expectNoMethodCalls(); } }