package jrummikub.control; import java.util.Collection; import jrummikub.model.Stone; import jrummikub.util.Event; import jrummikub.util.IEvent; import jrummikub.util.IListener; import jrummikub.view.IHandPanel; import jrummikub.view.IPlayerPanel; import jrummikub.view.ITablePanel; import jrummikub.view.IView; import jrummikub.view.MockView; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TurnControlTest { class MockTimer implements ITurnTimer { public boolean timerRunning; public Event timeRunOutEvent = new Event(); @Override public void startTimer() { timerRunning = true; } @Override public void stopTimer() { timerRunning = false; } @Override public IEvent getTimeRunOutEvent() { return timeRunOutEvent; } } MockView mockView; MockTimer mockTimer; boolean eventFired; @Before public void setUp() { mockView = new MockView(); mockTimer = new MockTimer(); } @Test public void viewEndOfTurn() { eventFired = false; mockTimer.timerRunning = true; TurnControl testControl = new TurnControl(null, null, mockView, mockTimer); testControl.getEndOfTurnEvent().add(new IListener() { @Override public void handle() { eventFired = true; } }); mockView.playerPanel.endTurnEvent.emit(); assertTrue(eventFired); assertFalse(mockTimer.timerRunning); } @Test public void timerEndOfTurn() { eventFired = false; mockTimer.timerRunning = true; TurnControl testControl = new TurnControl(null, null, mockView, mockTimer); testControl.getEndOfTurnEvent().add(new IListener() { @Override public void handle() { eventFired = true; } }); mockTimer.timeRunOutEvent.emit(); assertTrue(eventFired); assertFalse(mockTimer.timerRunning); } }