void doHandleEvent(Event e) { synchronized (computingSimSolvers) { final boolean isComputingBefore = isComputing(); LOGGER.trace("receive: {}, computing: {}, clock is ticking: {}, {}", e, isComputingBefore, clock.isTicking(), computingSimSolvers); if (e.getEventType() == EventType.START_COMPUTING) { if (!isComputingBefore) { LOGGER.debug("start computing -> switch to real time"); clock.switchToRealTime(); } computingSimSolvers.add((RtSimSolverSchedulerBridge) e.getIssuer()); } else if (e.getEventType() == EventType.DONE_COMPUTING) { // done computing checkState(computingSimSolvers.remove(e.getIssuer())); // if (!isComputing()) { // stop(); // } } else { throw new IllegalArgumentException("Unexpected event: " + e); } } }
@Override public void handleEvent(Event event) { assertSame(event.toString(), modelRef, event.getIssuer()); } }, PDPModelEventType.values());
@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()); }