package net.i2p.client.streaming.impl;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
import org.mockito.Mock;
public class SchedulerDeadTest extends TaskSchedulerTestBase {
@Mock private Connection con;
@Mock private ConnectionOptions opts;
protected TaskScheduler createScheduler() {
return new SchedulerDead(context);
}
private void setMocks(int now, int discSchOn, int connTimeout, int lifetime, int sendStreamId) {
when(clock.now()).thenReturn((long) now);
when(con.getDisconnectScheduledOn()).thenReturn((long) discSchOn);
when(con.getOptions()).thenReturn(opts);
when(opts.getConnectTimeout()).thenReturn((long) connTimeout);
when(con.getLifetime()).thenReturn((long) lifetime);
when(con.getSendStreamId()).thenReturn((long) sendStreamId);
}
@Test
public void testAccept_nothingLeftToDo() {
setMocks(10*60*1000, 9*60*1000 - Connection.DISCONNECT_TIMEOUT, 0, 0, 0);
assertTrue(scheduler.accept(con));
}
@Test
public void testAccept_noDisconnectScheduled() {
setMocks(10*60*1000, 0, 0, 0, 0);
assertFalse(scheduler.accept(con));
}
@Test
public void testAccept_timedOut() {
setMocks(0, 0, Connection.DISCONNECT_TIMEOUT/2, Connection.DISCONNECT_TIMEOUT, 0);
assertTrue(scheduler.accept(con));
}
@Test
public void testEventOccurred() {
scheduler.eventOccurred(con);
verify(con).disconnectComplete();
}
}