// Copyright © 2011-2014, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.daemon; import fi.jumi.actors.eventizers.Event; import fi.jumi.actors.queue.MessageQueue; import fi.jumi.core.api.SuiteListener; import fi.jumi.core.network.NetworkConnection; import fi.jumi.core.util.timeout.SpyTimeout; import org.junit.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; public class DaemonNetworkEndpointTest { private final NetworkConnection unimportantConnection = mock(NetworkConnection.class); private final MessageQueue<Event<SuiteListener>> unimportantSender = new MessageQueue<>(); private final SpyTimeout startupTimeout = new SpyTimeout(); private final SpyTimeout idleTimeout = new SpyTimeout(); private final DaemonNetworkEndpoint endpoint = new DaemonNetworkEndpoint(null, null, startupTimeout, idleTimeout, null); @Before public void setInitialTimeoutStates() { startupTimeout.willTimeOut = true; idleTimeout.willTimeOut = false; } @Test public void cancels_the_startup_timeout_when_the_first_user_connects() { assertThat("timeout before connected", startupTimeout.willTimeOut, is(true)); endpoint.onConnected(unimportantConnection, unimportantSender); assertThat("timeout after connected", startupTimeout.willTimeOut, is(false)); } @Test public void actives_the_idle_timeout_after_the_last_user_disconnects() { endpoint.onConnected(unimportantConnection, unimportantSender); assertThat("timeout when connected", idleTimeout.willTimeOut, is(false)); endpoint.onDisconnected(); assertThat("timeout after disconnected", idleTimeout.willTimeOut, is(true)); } }