package glug.gui; import static org.joda.time.Duration.standardSeconds; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import glug.model.time.LogInstant; import glug.model.time.LogInterval; import glug.parser.LogLoader; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class LogLoadingTaskTest { @Mock LogLoader logLoader; @Mock DataLoadedUIUpdater uiUpdater; @Test public void shouldNotifyUIOfEveryLoadReportIncludingTheEndOfStream() throws Exception { int numLinesLoadedBetweenUIUpdates=2; LogInterval intervalUpdated = new LogInterval(standardSeconds(1),new LogInstant(2000)); LogLoader.LoadReport endOfStreamLogReport = new LogLoader.LoadReport(true,intervalUpdated); when(logLoader.loadLines(numLinesLoadedBetweenUIUpdates)).thenReturn(endOfStreamLogReport); LogLoadingTask logLoadingTask = new LogLoadingTask(logLoader, uiUpdater, numLinesLoadedBetweenUIUpdates); logLoadingTask.execute(); logLoadingTask.get(); Thread.sleep(1000); verify(uiUpdater).updateUI(intervalUpdated); } }