@Test
  public void testRemoveEvent() throws InterruptedException {
    final Character chara = MockFactory.mockCharacter();
    event = MockFactory.mockTimedEvent(chara);

    // Schedule for execution in 50ms, but cancel before.
    service.addEvent(chara, event, 50L);
    service.removeEvent(event);

    Thread.sleep(55L);

    verify(event, never()).execute();
  }
  @Test
  public void testAddEventCharacterTimedEventLongLongLong() throws Exception {
    final Character chara = MockFactory.mockCharacter();
    event = MockFactory.mockTimedEvent(chara);

    // This one shouldn't be executed, the next is supposed to replace it and renew the timing.
    service.addEvent(chara, event, 100L, 10L, 20L);
    service.addEvent(chara, event, 20L, 10L, 40L);

    // Wait for the events to be executed.
    Thread.sleep(70L);

    verify(event, times(4)).execute();
  }
  @Test
  public void testAddEventCharacterTimedEventLong() throws Exception {
    final Character chara = MockFactory.mockCharacter();
    event = MockFactory.mockTimedEvent(chara);
    service.addEvent(chara, event, 10L);

    // Wait for the event to be executed.
    Thread.sleep(15L);

    verify(event).execute();
  }
  @Test
  public void testRemoveCharacterEvents() throws Exception {
    final Character chara = MockFactory.mockCharacter();
    final TimedEvent event2 = MockFactory.mockTimedEvent(chara);
    final TimedEvent event3 = MockFactory.mockTimedEvent(chara);

    event = MockFactory.mockTimedEvent(chara);

    service.addEvent(chara, event, 50L, 50L, 300L);
    service.addEvent(chara, event2, 100L);
    service.addEvent(chara, event3, 200L);

    // Let the first event execute and then stop its repetition.
    Thread.sleep(55L);

    service.removeCharacterEvents(chara);

    verify(event).execute();
    // These hadn't got time to execute
    verifyZeroInteractions(event2, event3);
  }