package nl.tudelft.bw4t.map.renderer;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.HashSet;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class UpdaterTest {
@Mock
private AbstractMapController mc;
@Mock
private MapRenderSettings sett;
@Test
public void failToStart() {
when(mc.isRunning()).thenReturn(true);
when(mc.getRenderers()).thenReturn(new HashSet<MapRendererInterface>(0));
Updater upd = new Updater(mc);
upd.run();
verify(mc).isRunning();
verifyNoMoreInteractions(mc);
}
@Test
public void startAndRun() {
when(mc.isRunning()).thenReturn(false, true, true, false);
when(mc.isStarting()).thenReturn(true, false, false, false);
when(mc.getRenderSettings()).thenReturn(sett);
when(sett.getUpdateDelay()).thenReturn(0);
Updater upd = new Updater(mc);
upd.run();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
fail("Got interrupted!");
}
verify(mc, times(4)).isRunning();
verify(mc, times(3)).isStarting();
mc.setForceRunning(true); // no verify, this is protected
verify(mc, times(2)).run();
verify(mc, times(2)).getRenderSettings();
verifyNoMoreInteractions(mc);
verify(sett, times(2)).getUpdateDelay();
verifyNoMoreInteractions(sett);
}
}