TimeUtil.interArrivalTimes(tt.getBeforeTimeStamps());
final Range<Double> acceptableDuration = Range.closed(90d, 120d);
assertThat(tt.getClockModes()).hasSize(31);
assertThat(tt.getClockModes().subList(0, 3)).containsExactly(
SIMULATED, SIMULATED, SIMULATED);
assertThat(sum(interArrivalTimes.subList(0, 3))).isAtMost(100d);
assertThat(tt.getClockModes().subList(3, 8)).containsExactly(
REAL_TIME, REAL_TIME, REAL_TIME, REAL_TIME, REAL_TIME);
assertThat(interArrivalTimes.get(3)).isIn(acceptableDuration);
assertThat(interArrivalTimes.get(6)).isIn(acceptableDuration);
assertThat(tt.getClockModes().subList(8, 10)).containsExactly(
SIMULATED, SIMULATED);
assertThat(sum(interArrivalTimes.subList(6, 10))).isAtMost(150d);
assertThat(tt.getClockModes().subList(10, 15)).containsExactly(
REAL_TIME, REAL_TIME, REAL_TIME, REAL_TIME, REAL_TIME);
assertThat(interArrivalTimes.get(10)).isIn(acceptableDuration);
assertThat(interArrivalTimes.get(13)).isIn(acceptableDuration);
assertThat(tt.getClockModes().subList(15, 30)).doesNotContain(REAL_TIME);
assertThat(sum(interArrivalTimes.subList(13, 30))).isAtMost(150d);
assertThat(tt.getClockModes().get(30)).isEqualTo(REAL_TIME);