Builder(RoadUnits ru, TimeLapse timeLapse) { unitConversion = ru; time = timeLapse; startTimeConsumed = time.getTimeConsumed(); travelDistance = 0; used = false; traveledNodes = new ArrayList<>(); }
/** * Constructs a new {@link MoveProgress} instance using all information that * was added via this builder. This method may be called only once per * builder. * @return A new {@link MoveProgress} instance. */ public MoveProgress build() { checkState(!used, "This method may be called only once."); used = true; final Measure<Double, Length> distTraveled = unitConversion .toExDistMeasure(travelDistance); final Measure<Long, Duration> timeConsumed = Measure.valueOf( time.getTimeConsumed() - startTimeConsumed, time.getTimeUnit()); return create(distTraveled, timeConsumed, traveledNodes); } }
static TimeLapse copy(TimeLapse tl) { final TimeLapse copy = TimeLapseFactory.create(tl.getTimeUnit(), tl.getStartTime(), tl.getEndTime()); if (tl.getTimeConsumed() > 0) { copy.consume(tl.getTimeConsumed()); } return copy; }
@Override protected MoveProgress doFollowPath(MovingRoadUser object, Queue<Point> path, TimeLapse time) { final long startTimeConsumed = time.getTimeConsumed(); Point loc = registry().getPosition(object); .toExDistMeasure(traveled); final Measure<Long, Duration> timeConsumed = Measure.valueOf( time.getTimeConsumed() - startTimeConsumed, time.getTimeUnit()); return MoveProgress.create(distTraveled, timeConsumed, travelledNodes);
/** * Tests flyweight implementation. */ @Test public void testFlyweight() { final TimeLapse tl = create(0, 10); assertThat(tl.toString()).isEqualTo("[0,10)"); assertThat(tl.isIn(7)).isTrue(); assertThat(tl.isIn(-1)).isFalse(); assertThat(tl.isIn(0)).isTrue(); assertThat(tl.isIn(10)).isFalse(); assertThat(tl.isIn(11)).isFalse(); tl.consume(7L); assertThat(tl.getTimeConsumed()).isEqualTo(7L); assertThat(tl.getStartTime()).isEqualTo(0); assertThat(tl.getEndTime()).isEqualTo(10L); tl.reset(); assertThat(tl.getTimeConsumed()).isEqualTo(0L); assertThat(tl.getStartTime()).isEqualTo(0); assertThat(tl.getEndTime()).isEqualTo(10L); tl.consume(6L); tl.next(); assertThat(tl.getTimeConsumed()).isEqualTo(0L); assertThat(tl.getStartTime()).isEqualTo(10); assertThat(tl.getEndTime()).isEqualTo(20L); }
@Test public void constructor() { final TimeLapse tl = create(0, 10); assertEquals(0, tl.getTime()); assertEquals(0, tl.getTimeConsumed()); assertEquals(10, tl.getTickLength()); assertEquals(10, tl.getTimeLeft()); assertTrue(tl.hasTimeLeft()); }
@Test public void consume1() { final int[] start = {0, 10, 100, 500}; final int[] end = {100, 1000, 113, 783}; for (int i = 0; i < start.length; i++) { final TimeLapse tl = create(start[i], end[i]); assertEquals(end[i] - start[i], tl.getTimeLeft()); assertEquals(start[i], tl.getTime()); assertEquals(0, tl.getTimeConsumed()); assertTrue(tl.hasTimeLeft()); assertEquals(end[i] - start[i], tl.getTickLength()); tl.consume(10); assertEquals(end[i] - start[i] - 10, tl.getTimeLeft()); assertEquals(start[i] + 10, tl.getTime()); assertEquals(10, tl.getTimeConsumed()); assertTrue(tl.hasTimeLeft()); assertEquals(end[i] - start[i], tl.getTickLength()); tl.consumeAll(); assertEquals(0, tl.getTimeLeft()); assertEquals(end[i], tl.getTime()); assertEquals(end[i] - start[i], tl.getTimeConsumed()); assertFalse(tl.hasTimeLeft()); assertEquals(end[i] - start[i], tl.getTickLength()); } }