@Override public void addObjectAt(RoadUser newObj, Point pos) { delegate().addObjectAt(newObj, pos); }
@Override public void addObjectAtSamePosition(RoadUser newObj, RoadUser existingObj) { delegate().addObjectAtSamePosition(newObj, existingObj); }
@Override public MoveProgress followPath(MovingRoadUser object, Queue<Point> path, TimeLapse time) { return delegate().followPath(object, path, time); }
@Test public void testGetObjectsAndPositions() { final RoadUser agent1 = new TestRoadUser(); final RoadUser agent2 = new TestRoadUser(); final RoadUser agent3 = new RoadUser() { @Override public void initRoadUser(RoadModel pModel) { // can be ignored in this test [bm] } }; model.addObjectAt(agent1, SW); model.addObjectAt(agent2, SE); model.addObjectAt(agent3, NE); final Map<RoadUser, Point> mapCopy = model.getObjectsAndPositions(); final Set<RoadUser> setCopy = model.getObjects(); final Set<TestRoadUser> subsetCopy = model .getObjectsOfType(TestRoadUser.class); final Collection<Point> posCopy = model.getObjectPositions(); assertEquals(3, model.getObjectsAndPositions().size()); assertEquals(3, mapCopy.size()); assertEquals(3, setCopy.size()); assertEquals(2, subsetCopy.size()); assertEquals(3, posCopy.size()); model.removeObject(agent1); assertEquals(2, model.getObjectsAndPositions().size()); assertEquals(3, mapCopy.size()); assertEquals(3, setCopy.size()); assertEquals(2, subsetCopy.size()); assertEquals(3, posCopy.size()); }
@Test public void getDestination() { final TestRoadUser testRoadUser = new TestRoadUser(); model.addObjectAt(testRoadUser, SW); assertNull(model.getDestination(testRoadUser)); assertNull(model.getDestination(new TestRoadUser())); final List<Point> path = model.getShortestPathTo(SW, NW); model.followPath(testRoadUser, newLinkedList(path), TimeLapseFactory.create(0, 1)); assertEquals(NW, model.getDestination(testRoadUser)); model.moveTo(testRoadUser, NE, TimeLapseFactory.create(0, 1)); assertEquals(NE, model.getDestination(testRoadUser)); }
@Test(expected = IllegalArgumentException.class) public void followPathFailTime() { final TestRoadUser testRoadUser = new TestRoadUser(); model.addObjectAt(testRoadUser, SW); model.followPath(testRoadUser, new LinkedList<Point>(Arrays.asList(SW)), emptyTimeLapse); }
@Test public void testMoveToDistance() { final TestRoadUser testRoadUser = new TestRoadUser(); model.addObjectAt(testRoadUser, SW); final Point start = model.getPosition(testRoadUser); final MoveProgress mp = model.moveTo(testRoadUser, NW, timeLength(3)); final Point end = model.getPosition(testRoadUser); final double lineDist = Point.distance(start, end); assertThat(lineDist).isWithin(EPSILON) .of(mp.distance().doubleValue(model.getDistanceUnit())); }
@Test public void containsObjectAt() { assertFalse(model.containsObjectAt(new TestRoadUser(), new Point(2, 3))); final TestRoadUser ru = new TestRoadUser(); model.addObjectAt(ru, SW); assertFalse(model.containsObjectAt(ru, new Point(2, 3))); assertTrue(model.containsObjectAt(ru, SW)); model.followPath(ru, asPath(SE), hour(1)); final Point p = model.getPosition(ru); assertTrue(model.containsObjectAt(ru, PointTestUtil.duplicate(p))); }
@Test public void addObjectAtSamePosition() { final RoadUser agent1 = new TestRoadUser(); final RoadUser agent2 = new TestRoadUser(); model.addObjectAt(agent1, SW); model.addObjectAtSamePosition(agent2, agent1); assertEquals(SW, model.getPosition(agent1)); assertEquals(SW, model.getPosition(agent2)); }
@Test public void followPathEventIssuerType() { final MovingRoadUser user = new TestRoadUser(); model.addObjectAt(user, SW); final ListenerEventHistory list = new ListenerEventHistory(); model.getEventAPI().addListener(list, RoadEventType.MOVE); assertTrue(list.getHistory().isEmpty()); model.followPath(user, newLinkedList(asList(SW, SE, NE, NW)), TimeLapseFactory.create(0, 10)); assertEquals(1, list.getHistory().size()); assertEquals(RoadEventType.MOVE, list.getHistory().get(0).getEventType()); assertEquals(model, list.getHistory().get(0).getIssuer()); }
@Test public void moveToEventIssuerType() { final MovingRoadUser user = new TestRoadUser(); model.addObjectAt(user, SW); final ListenerEventHistory list = new ListenerEventHistory(); model.getEventAPI().addListener(list, RoadEventType.MOVE); assertTrue(list.getHistory().isEmpty()); model.moveTo(user, NW, TimeLapseFactory.create(0, 10)); assertEquals(1, list.getHistory().size()); assertEquals(RoadEventType.MOVE, list.getHistory().get(0).getEventType()); assertEquals(model, list.getHistory().get(0).getIssuer()); }
@Test public void testEqualPosition() { final RoadUser agent1 = new NonMovingRoadUser(); final RoadUser agent2 = new NonMovingRoadUser(); assertFalse(model.equalPosition(agent1, agent2)); model.addObjectAt(agent1, SW); assertFalse(model.equalPosition(agent1, agent2)); model.addObjectAt(agent2, NE); assertFalse(model.equalPosition(agent1, agent2)); model.removeObject(agent2); model.addObjectAt(agent2, SW); assertTrue(model.equalPosition(agent1, agent2)); }
@Test public void testClear() { final RoadUser agent1 = new TestRoadUser(); final RoadUser agent2 = new TestRoadUser(); final RoadUser agent3 = new TestRoadUser(); model.addObjectAt(agent1, SW); model.addObjectAt(agent2, SE); model.addObjectAt(agent3, NE); assertEquals(3, model.getObjects().size()); model.clear(); assertTrue(model.getObjects().isEmpty()); }
@Override public MoveProgress moveTo(MovingRoadUser object, Point destination, TimeLapse time) { return delegate().moveTo(object, destination, time); }
@Test(expected = IllegalArgumentException.class) public void addObjectAtSamePositionFail() { final RoadUser agent1 = new TestRoadUser(); final RoadUser agent2 = new TestRoadUser(); model.addObjectAt(agent1, SW); model.addObjectAt(agent2, SE); model.addObjectAtSamePosition(agent2, agent1); }
@Test public void unregister() { assertFalse(model.unregister(new TestRoadUser())); final TestRoadUser driver = new TestRoadUser(); assertTrue(model.register(driver)); assertFalse(model.unregister(driver)); model.addObjectAt(driver, SW); assertTrue(model.unregister(driver)); }
@Test public void getPosition() { final RoadUser ru = new TestRoadUser(); model.addObjectAt(ru, SW); assertEquals(SW, model.getPosition(ru)); }
@Test public void removeObjectTest() { final RoadUser agent1 = new TestRoadUser(); model.addObjectAt(agent1, new Point(0, 0)); model.removeObject(agent1); }
@Test public void getObjectsAt() { final NonMovingRoadUser agent1 = new NonMovingRoadUser(); final NonMovingRoadUser agent2 = new NonMovingRoadUser(); final NonMovingRoadUser agent3 = new NonMovingRoadUser(); final NonMovingRoadUser agent4 = new NonMovingRoadUser(); final NonMovingRoadUser agent5 = new NonMovingRoadUser(); model.addObjectAt(agent1, SW); model.addObjectAt(agent2, NE); model.addObjectAt(agent3, SE); model.addObjectAt(agent4, NE); model.addObjectAt(agent5, SE); assertTrue(Sets.difference(asSet(agent1), model.getObjectsAt(agent1, NonMovingRoadUser.class)).isEmpty()); assertTrue(Sets.difference(asSet(agent2, agent4), model.getObjectsAt(agent2, NonMovingRoadUser.class)).isEmpty()); assertTrue(model.getObjectsAt(agent2, SpeedyRoadUser.class).isEmpty()); }
@Override public boolean equalPosition(RoadUser obj1, RoadUser obj2) { return delegate().equalPosition(obj1, obj2); }