### Question:
InformationCollector implements EventListener, ChangeLevelListener, Information { @Override public void event(Object event) { collector.put(event.toString()); if (event instanceof CustomMessage) { pool.add(((CustomMessage) event).getMessage()); } else { Object before = playerScores.getScore(); playerScores.event(event); add(before); } } InformationCollector(PlayerScores playerScores); @Override void event(Object event); @Override String getMessage(); @Override void levelChanged(LevelProgress progress); void setInfo(String information); String popLastMessages();  }### Answer:
@Test public void shouldCallPlayerScoreWhenSnakeEatApple() { snakeEatApple(); verify(playerScores).event(Events.EAT_APPLE); }
@Test public void shouldCallPlayerScoreWhenSnakeEatStone() { snakeEatStone(); verify(playerScores).event(Events.EAT_STONE); }
@Test public void shouldCallPlayerScoreWhenSnakeIsDead() { snakeIsDead(); verify(playerScores).event(Events.KILL); }