test: created test for LobbyRunner

This commit is contained in:
Yannik Bretschneider 2021-06-06 19:27:40 +02:00
parent cb2b760866
commit e544c00d2e

View File

@ -1,28 +1,67 @@
package uulm.teamname.marvelous.server.lobbymanager;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import uulm.teamname.marvelous.server.Server;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.*;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
class LobbyRunnerTest {
LobbyConnection connection;
LobbyRunner lobbyRunner;
MockedStatic<Server> serverMockedStatic;
@BeforeEach
void setUp() {
void setUp()
throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
connection = mock(LobbyConnection.class);
// when(connection.gameID).thenReturn("/SomeGameID");
var constructor = LobbyRunner.class.getDeclaredConstructor();
constructor.setAccessible(true);
lobbyRunner = constructor.newInstance();
serverMockedStatic = mockStatic(Server.class);
serverMockedStatic.when(Server::getMaxLobbies).thenReturn(1);
}
@AfterEach
void tearDown() {
serverMockedStatic.close();
}
// It seems very impractical indeed to properly to check if another thread executed this, so I won't
@Test
void lobbyGetsStartedTest() {
lobbyRunner.startLobby(connection);
verify(connection).run();
}
@Test
void lobbyGetsStartedTest() {
void canAddLobbyTest() {
assertThat(lobbyRunner.canAddLobby()).isTrue();
lobbyRunner.startLobby(connection);
assertThat(lobbyRunner.canAddLobby()).isFalse();
}
@Test
void removeLobbyRemovesLobbyAndSetsTerminationFlag() {
lobbyRunner.startLobby(connection);
}
}