TimeModel(AbstractBuilder<?> builder, Enum<?>... additionalEventTypes) { tickListeners = new CopyOnWriteArraySet<>(); final Set<Enum<?>> allEventTypes = ImmutableSet.<Enum<?>>builder() .add(ClockEventType.values()) .add(additionalEventTypes) .build(); eventDispatcher = new EventDispatcher(allEventTypes); // time lapse is reused in a Flyweight kind of style timeLapse = new TimeLapse(builder.getTimeUnit(), 0L, builder.getTickLength()); }
getModel().getEventAPI().addListener(history, ImmutableSet.<Enum<?>>builder() .add(ClockEventType.values()) .add(RtClockEventType.values()) .build());
public void testEvents() { final ListenerEventHistory leh = new ListenerEventHistory(); getModel().getEventAPI().addListener(leh, ClockEventType.values());
/** * Test starting and stopping time. */ @Test public void testStartStop() { final LimitingTickListener ltl = new LimitingTickListener(getModel(), 3); final ListenerEventHistory leh = new ListenerEventHistory(); getModel().getEventAPI().addListener(leh, ClockEventType.values()); getModel().register(ltl); getModel().start(); assertEquals(3 * getModel().getTickLength(), getModel().getCurrentTime()); getModel().start(); assertEquals(6 * getModel().getTickLength(), getModel().getCurrentTime()); assertThat(leh.getEventTypeHistory()).isEqualTo( asList( ClockEventType.STARTED, ClockEventType.STOPPED, ClockEventType.STARTED, ClockEventType.STOPPED)); }