package pipe.views;
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.gui.PetriNetTab;
import pipe.actions.gui.PipeApplicationModel;
import pipe.handlers.ArcHandler;
import uk.ac.imperial.pipe.models.petrinet.*;
import java.awt.geom.Point2D;
import java.util.Arrays;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class ArcViewTest {
private ArcView<Place, Transition> arcView;
@Mock
PetriNetTab parent;
@Mock
private PipeApplicationModel model;
@Mock
ArcHandler<? extends Connectable, ? extends Connectable> handler;
@Mock
private Arc<Place, Transition> mockArc;
private Point2D.Double start = new Point2D.Double(50, 39);
private Point2D.Double end = new Point2D.Double(100, 500);
private Place source;
private Transition target;
@Before
public void setUp() {
PetriNetController mockController = mock(PetriNetController.class);
source = new DiscretePlace("P0","P0");
target = new DiscreteTransition("T0", "T0");
when(mockArc.getSource()).thenReturn(source);
when(mockArc.getTarget()).thenReturn(target);
when(mockArc.getStartPoint()).thenReturn(start);
when(mockArc.getEndPoint()).thenReturn(end);
when(mockArc.getArcPoints()).thenReturn(Arrays.asList(new ArcPoint(start, false), new ArcPoint(end, false)));
arcView = new NormalArcView<>(mockArc, mockController, parent, handler, model);
}
@Test
public void ArcViewSetsCorrectPathInConstructor() {
ArcPath path = arcView.getArcPath();
assertEquals(2, path.getNumPoints());
assertEquals(start, path.getPoint(0));
assertEquals(end, path.getPoint(1));
}
}