package pipe.gui; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import pipe.controllers.PetriNetController; import pipe.controllers.SelectionManager; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class SelectionManagerTest { SelectionManager manager; @Mock PetriNetTab tab; @Mock PetriNetController mockController; @Before public void setUp() { when(mockController.getPetriNetTab()).thenReturn(tab); manager = new SelectionManager(mockController); } @Test public void deselectCallsController() { manager.clearSelection(); verify(mockController).deselectAll(); } @Test public void selectsUsingLocationOnMousePress() { MouseEvent e = mock(MouseEvent.class); when(e.getButton()).thenReturn(MouseEvent.BUTTON1); when(e.isControlDown()).thenReturn(false); Point clickPoint = new Point(50, 50); when(e.getPoint()).thenReturn(clickPoint); manager.mousePressed(e); int x = (int) clickPoint.getX(); int y = (int) clickPoint.getY(); Rectangle rect = new Rectangle(x, y, 0, 0); verify(mockController).select(rect); } @Test public void selectsLocationOnMouseDrag() { MouseEvent clickEvent = mock(MouseEvent.class); when(clickEvent.getButton()).thenReturn(MouseEvent.BUTTON1); when(clickEvent.isControlDown()).thenReturn(false); Point clickPoint = new Point(50, 50); when(clickEvent.getPoint()).thenReturn(clickPoint); manager.mousePressed(clickEvent); MouseEvent dragEvent = mock(MouseEvent.class); Point dragPoint = new Point(160, 170); when(dragEvent.getPoint()).thenReturn(dragPoint); when(dragEvent.getX()).thenReturn(dragPoint.x); when(dragEvent.getY()).thenReturn(dragPoint.y); manager.mouseDragged(dragEvent); double x = clickPoint.getX(); double y = clickPoint.getY(); double w = dragPoint.getX() - clickPoint.getX(); double h = dragPoint.getY() - clickPoint.getY(); Rectangle rect = new Rectangle((int) x, (int) y, (int) w, (int) h); verify(mockController, times(2)).select(rect); } }