package pipe.actions.gui.animate; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import pipe.actions.gui.ToggleAnimateAction; import pipe.controllers.PetriNetController; import pipe.controllers.application.PipeApplicationController; import pipe.controllers.GUIAnimator; import pipe.actions.gui.PipeApplicationModel; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ToggleAnimateActionTest { private ToggleAnimateAction action; @Mock private PipeApplicationController controller; @Mock private PetriNetController petriNetController; @Mock private PipeApplicationModel model; @Mock private GUIAnimator animator; @Before public void setUp() { action = new ToggleAnimateAction("Toggle", "Tooltip", "T", model, controller); when(controller.getActivePetriNetController()).thenReturn(petriNetController); when(petriNetController.getAnimator()).thenReturn(animator); } @Test public void startsAnimation() { when(petriNetController.toggleAnimation()).thenReturn(true); action.actionPerformed(null); verify(animator).startAnimation(); } @Test public void finishesAnimation() { when(petriNetController.toggleAnimation()).thenReturn(false); action.actionPerformed(null); verify(animator).finish(); } @Test public void togglesAnimation(){ when(petriNetController.toggleAnimation()).thenReturn(false); action.actionPerformed(null); verify(petriNetController).toggleAnimation(); } }