test: created tests for LobbyConnection / Manager / Runner
This commit is contained in:
parent
6043a21e22
commit
472a1e70ce
@ -0,0 +1,63 @@
|
|||||||
|
package uulm.teamname.marvelous.server.lobbymanager;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.messages.BasicMessage;
|
||||||
|
|
||||||
|
import org.java_websocket.WebSocket;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
class LobbyConnectionTest {
|
||||||
|
|
||||||
|
BiConsumer<WebSocket, BasicMessage> sendMessageCallback;
|
||||||
|
BiConsumer<WebSocket, String> sendErrorCallback;
|
||||||
|
|
||||||
|
WebSocket player1, player2, spectator;
|
||||||
|
|
||||||
|
Participant player1Participant, player2Participant, spectatorParticipant;
|
||||||
|
|
||||||
|
LobbyConnection connection;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void beforeEach() {
|
||||||
|
sendMessageCallback = mock(BiConsumer.class);
|
||||||
|
sendErrorCallback = mock(BiConsumer.class);
|
||||||
|
|
||||||
|
player1 = mock(WebSocket.class);
|
||||||
|
player2 = mock(WebSocket.class);
|
||||||
|
spectator = mock(WebSocket.class);
|
||||||
|
|
||||||
|
player1Participant = new Participant(player1, ParticipantType.PlayerOne, "Player1");
|
||||||
|
player2Participant = new Participant(player2, ParticipantType.PlayerTwo, "Player2");
|
||||||
|
spectatorParticipant = new Participant(spectator, ParticipantType.Spectator, "Spectator");
|
||||||
|
|
||||||
|
connection = new LobbyConnection("/AwesomeGame", sendMessageCallback, sendErrorCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void lobbyIsFullTest() {
|
||||||
|
assertThat(connection.isFull()).isFalse();
|
||||||
|
connection.addPlayer1(player1Participant);
|
||||||
|
assertThat(connection.isFull()).isFalse();
|
||||||
|
connection.addPlayer2(player2Participant);
|
||||||
|
assertThat(connection.isFull()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void lobbyIsFullTestTwo() {
|
||||||
|
assertThat(connection.isFull()).isFalse();
|
||||||
|
connection.addPlayer2(player2Participant);
|
||||||
|
assertThat(connection.isFull()).isFalse();
|
||||||
|
connection.addSpectator(spectatorParticipant);
|
||||||
|
assertThat(connection.isFull()).isFalse();
|
||||||
|
connection.addPlayer1(player1Participant);
|
||||||
|
assertThat(connection.isFull()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,23 +4,21 @@ import org.java_websocket.WebSocket;
|
|||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.jupiter.api.DisplayName;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.mockito.MockedStatic;
|
import uulm.teamname.marvelous.gamelibrary.messages.BasicMessage;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import uulm.teamname.marvelous.gamelibrary.config.FieldType;
|
|
||||||
import uulm.teamname.marvelous.gamelibrary.config.ScenarioConfig;
|
|
||||||
import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType;
|
import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType;
|
||||||
import uulm.teamname.marvelous.gamelibrary.messages.RoleEnum;
|
import uulm.teamname.marvelous.gamelibrary.messages.RoleEnum;
|
||||||
import uulm.teamname.marvelous.gamelibrary.messages.client.PlayerReadyMessage;
|
import uulm.teamname.marvelous.gamelibrary.messages.client.PlayerReadyMessage;
|
||||||
import uulm.teamname.marvelous.server.Server;
|
|
||||||
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
class LobbyManagerTest {
|
class LobbyManagerTest {
|
||||||
|
|
||||||
|
BiConsumer<WebSocket, BasicMessage> onMessageCallback;
|
||||||
|
BiConsumer<WebSocket, String> onErrorCallback;
|
||||||
|
|
||||||
LobbyManager manager;
|
LobbyManager manager;
|
||||||
WebSocket player1;
|
WebSocket player1;
|
||||||
WebSocket player2;
|
WebSocket player2;
|
||||||
@ -37,7 +35,11 @@ class LobbyManagerTest {
|
|||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void beforeEach() {
|
void beforeEach() {
|
||||||
manager = new LobbyManager();
|
|
||||||
|
onMessageCallback = mock(BiConsumer.class);
|
||||||
|
onErrorCallback = mock(BiConsumer.class);
|
||||||
|
|
||||||
|
manager = new LobbyManager(onMessageCallback, onErrorCallback);
|
||||||
|
|
||||||
player1 = mock(WebSocket.class);
|
player1 = mock(WebSocket.class);
|
||||||
player2 = mock(WebSocket.class);
|
player2 = mock(WebSocket.class);
|
||||||
@ -82,7 +84,7 @@ class LobbyManagerTest {
|
|||||||
|
|
||||||
when(player1.getResourceDescriptor()).thenReturn("/ResourcesFTW");
|
when(player1.getResourceDescriptor()).thenReturn("/ResourcesFTW");
|
||||||
|
|
||||||
manager.assignLobbyToParticipant(player1, "AwesomePlayer", message);
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", message);
|
||||||
|
|
||||||
Participant player1Participant = new Participant(player1, ParticipantType.PlayerOne, "AwesomePlayer");
|
Participant player1Participant = new Participant(player1, ParticipantType.PlayerOne, "AwesomePlayer");
|
||||||
|
|
||||||
@ -105,8 +107,8 @@ class LobbyManagerTest {
|
|||||||
when(player1.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
when(player1.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
||||||
when(player2.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
when(player2.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
||||||
|
|
||||||
manager.assignLobbyToParticipant(player1, "AwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", playerReady);
|
||||||
manager.assignLobbyToParticipant(player2, "MoreAwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player2, "MoreAwesomePlayer", playerReady);
|
||||||
|
|
||||||
Participant player1Participant = new Participant(
|
Participant player1Participant = new Participant(
|
||||||
player1, ParticipantType.PlayerOne, "AwesomePlayer");
|
player1, ParticipantType.PlayerOne, "AwesomePlayer");
|
||||||
@ -126,12 +128,58 @@ class LobbyManagerTest {
|
|||||||
.isNotNull();
|
.isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("when three participants with same ResourceDescriptor connect, the third gets a new, random lobby")
|
||||||
|
void threeParticipantsRandomLobbyTest() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
when(player1.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
||||||
|
when(player2.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
||||||
|
when(player3.getResourceDescriptor()).thenReturn("/fancyResourceDescriptor");
|
||||||
|
|
||||||
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", playerReady);
|
||||||
|
manager.assignLobbyToConnection(player2, "MoreAwesomePlayer", playerReady);
|
||||||
|
manager.assignLobbyToConnection(player3, "AwesomestAwesomePlayer", playerReady);
|
||||||
|
|
||||||
|
assertThat(manager.getLobbies()).containsOnlyKeys(
|
||||||
|
player1Participant,
|
||||||
|
player2Participant,
|
||||||
|
player3Participant);
|
||||||
|
assertThat(manager.getLobbies().get(player1Participant))
|
||||||
|
.isEqualTo(manager.getLobbies().get(player2Participant))
|
||||||
|
.isNotEqualTo(manager.getLobbies().get(player3Participant))
|
||||||
|
.isNotNull();
|
||||||
|
|
||||||
|
assertThat(manager.getResourceDescriptorToLobby()).containsKey("/fancyResourceDescriptor");
|
||||||
|
assertThat(manager.getResourceDescriptorToLobby().get("/fancyResourceDescriptor"))
|
||||||
|
.isEqualTo(manager.getLobbies().get(player1Participant))
|
||||||
|
.isEqualTo(manager.getLobbies().get(player2Participant))
|
||||||
|
.isNotNull();
|
||||||
|
|
||||||
|
assertThat(manager.getResourceDescriptorToLobby().get(manager.getLobbies().get(player1Participant).gameID))
|
||||||
|
.isNotNull()
|
||||||
|
.isEqualTo(manager.getLobbies().get(player1Participant))
|
||||||
|
.isEqualTo(manager.getLobbies().get(player2Participant))
|
||||||
|
.isNotEqualTo(manager.getLobbies().get(player3Participant));
|
||||||
|
|
||||||
|
System.out.println(manager.getLobbies().get(player3Participant));
|
||||||
|
System.out.println(manager.getResourceDescriptorToLobby());
|
||||||
|
|
||||||
|
assertThat(manager.getResourceDescriptorToLobby().get(manager.getLobbies().get(player3Participant).gameID))
|
||||||
|
.isNotNull()
|
||||||
|
.isNotEqualTo(manager.getLobbies().get(player1Participant))
|
||||||
|
.isNotEqualTo(manager.getLobbies().get(player2Participant))
|
||||||
|
.isEqualTo(manager.getLobbies().get(player3Participant));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("On Participant without ResourceDescriptor random lobby gets generated")
|
@DisplayName("On Participant without ResourceDescriptor random lobby gets generated")
|
||||||
void randomLobbyTest() {
|
void randomLobbyTest() {
|
||||||
when(player1.getResourceDescriptor()).thenReturn(null);
|
when(player1.getResourceDescriptor()).thenReturn(null);
|
||||||
|
|
||||||
manager.assignLobbyToParticipant(player1, "AwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", playerReady);
|
||||||
|
|
||||||
assertThat(manager.getLobbies()).hasSize(1);
|
assertThat(manager.getLobbies()).hasSize(1);
|
||||||
assertThat(manager.getLobbies().get(player1Participant)).isNotNull();
|
assertThat(manager.getLobbies().get(player1Participant)).isNotNull();
|
||||||
@ -148,8 +196,8 @@ class LobbyManagerTest {
|
|||||||
void randomLobbyTwoPlayerTest() {
|
void randomLobbyTwoPlayerTest() {
|
||||||
when(player1.getResourceDescriptor()).thenReturn(null);
|
when(player1.getResourceDescriptor()).thenReturn(null);
|
||||||
when(player2.getResourceDescriptor()).thenReturn(null);
|
when(player2.getResourceDescriptor()).thenReturn(null);
|
||||||
manager.assignLobbyToParticipant(player1, "AwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", playerReady);
|
||||||
manager.assignLobbyToParticipant(player2, "MoreAwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player2, "MoreAwesomePlayer", playerReady);
|
||||||
|
|
||||||
assertThat(manager.getLobbies()).hasSize(2);
|
assertThat(manager.getLobbies()).hasSize(2);
|
||||||
assertThat(manager.getLobbies().get(player1Participant))
|
assertThat(manager.getLobbies().get(player1Participant))
|
||||||
@ -169,9 +217,9 @@ class LobbyManagerTest {
|
|||||||
when(player1.getResourceDescriptor()).thenReturn(null);
|
when(player1.getResourceDescriptor()).thenReturn(null);
|
||||||
when(player2.getResourceDescriptor()).thenReturn(null);
|
when(player2.getResourceDescriptor()).thenReturn(null);
|
||||||
when(player3.getResourceDescriptor()).thenReturn(null);
|
when(player3.getResourceDescriptor()).thenReturn(null);
|
||||||
manager.assignLobbyToParticipant(player1, "AwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player1, "AwesomePlayer", playerReady);
|
||||||
manager.assignLobbyToParticipant(player2, "MoreAwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player2, "MoreAwesomePlayer", playerReady);
|
||||||
manager.assignLobbyToParticipant(player3, "AwesomestAwesomePlayer", playerReady);
|
manager.assignLobbyToConnection(player3, "AwesomestAwesomePlayer", playerReady);
|
||||||
|
|
||||||
assertThat(manager.getLobbies()).hasSize(3);
|
assertThat(manager.getLobbies()).hasSize(3);
|
||||||
assertThat(manager.getLobbies().get(player1Participant))
|
assertThat(manager.getLobbies().get(player1Participant))
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package uulm.teamname.marvelous.server.lobbymanager;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class LobbyRunnerTest {
|
||||||
|
|
||||||
|
LobbyConnection connection;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
connection = mock(LobbyConnection.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void lobbyGetsStartedTest() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user