package edu.kit.pse.ws2013.routekit.models; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import org.junit.Before; import org.junit.Test; import edu.kit.pse.ws2013.routekit.routecalculation.Route; import edu.kit.pse.ws2013.routekit.routecalculation.RouteDescription; import edu.kit.pse.ws2013.routekit.util.Coordinates; public class TestRouteModel { int listenerFired = 0; class DummyListener implements RouteModelListener { @Override public void routeModelChanged() { listenerFired++; } } RouteModel rm; @Before public void setUp() throws Exception { rm = new RouteModel(); rm.addRouteListener(new DummyListener()); } @Test public void testCurrentDescription() { RouteDescription rd1 = new RouteDescription(null, null); RouteDescription rd2 = new RouteDescription(null, null); assertNotSame(rd1, rd2); // Sanity check assertEquals(0, listenerFired); assertNull(rm.getCurrentDescription()); assertEquals(0, listenerFired); rm.setCurrentDescription(rd1); assertEquals(1, listenerFired); assertSame(rd1, rm.getCurrentDescription()); assertEquals(1, listenerFired); rm.setCurrentDescription(rd2); assertEquals(2, listenerFired); assertSame(rd2, rm.getCurrentDescription()); assertEquals(2, listenerFired); } @Test public void testCurrentRoute() { Route r1 = new Route(null, null, null, null); Route r2 = new Route(null, null, null, null); assertNotSame(r1, r2); // Sanity check assertEquals(0, listenerFired); assertNull(rm.getCurrentRoute()); assertEquals(0, listenerFired); rm.setCurrentRoute(r1); assertEquals(1, listenerFired); assertSame(r1, rm.getCurrentRoute()); assertEquals(1, listenerFired); rm.setCurrentRoute(r2); assertEquals(2, listenerFired); assertSame(r2, rm.getCurrentRoute()); assertEquals(2, listenerFired); } @Test public void testStartAndDestination() { Coordinates c1 = new Coordinates(10, 10); Coordinates c2 = new Coordinates(11, 11); assertNotSame(c1, c2); // Sanity check assertEquals(0, listenerFired); assertNull(rm.getStart()); assertEquals(0, listenerFired); assertNull(rm.getDestination()); assertEquals(0, listenerFired); rm.setStart(c1); assertEquals(1, listenerFired); assertSame(c1, rm.getStart()); assertEquals(1, listenerFired); rm.setDestination(c2); assertEquals(2, listenerFired); assertSame(c2, rm.getDestination()); assertEquals(2, listenerFired); rm.setStart(c2); assertEquals(3, listenerFired); assertSame(c2, rm.getStart()); assertEquals(3, listenerFired); } @Test public void testMultipleListeners() { rm.addRouteListener(new DummyListener()); Coordinates c1 = new Coordinates(10, 10); Coordinates c2 = new Coordinates(11, 11); assertEquals(0, listenerFired); rm.setStart(c1); assertEquals(2, listenerFired); rm.setDestination(c2); assertEquals(4, listenerFired); } }