test: added tests for add and remove Participants as well as first message Tests (broadcast needs to be fixed)

This commit is contained in:
Richard Reiber 2021-06-06 19:59:35 +02:00
parent eebd6e923c
commit 4e39d01ac6

View File

@ -2,10 +2,14 @@ package uulm.teamname.marvelous.server.lobbymanager;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import uulm.teamname.marvelous.gamelibrary.events.Event;
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
import uulm.teamname.marvelous.gamelibrary.events.EventType;
import uulm.teamname.marvelous.gamelibrary.messages.BasicMessage; import uulm.teamname.marvelous.gamelibrary.messages.BasicMessage;
import org.java_websocket.WebSocket; import org.java_websocket.WebSocket;
import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType; import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType;
import uulm.teamname.marvelous.gamelibrary.messages.server.EventMessage;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
@ -60,4 +64,135 @@ class LobbyConnectionTest {
assertThat(connection.isFull()).isTrue(); assertThat(connection.isFull()).isTrue();
} }
@Test
void addPlayerOneTest(){
var websocket = mock(WebSocket.class);
Participant playerOne = new Participant(websocket, ParticipantType.PlayerOne, "PlayerOne");
assertThat(connection.addPlayer1(playerOne)).isTrue();
assertThat(connection.hasPlayer1()).isTrue();
assertThat(connection.addPlayer1(playerOne)).isFalse();
}
@Test
void addPlayerTwoTest(){
var websocket = mock(WebSocket.class);
Participant playerTwo = new Participant(websocket, ParticipantType.PlayerTwo, "PlayerTwo");
assertThat(connection.addPlayer2(playerTwo)).isTrue();
assertThat(connection.hasPlayer2()).isTrue();
assertThat(connection.addPlayer2(playerTwo)).isFalse();
}
@Test
void addPlayerTest(){
var websocket = mock(WebSocket.class);
Participant playerOne = new Participant(websocket, ParticipantType.PlayerOne, "PlayerOne");
Participant playerTwo = new Participant(websocket, ParticipantType.PlayerTwo, "PlayerTwo");
Participant spectator = new Participant(websocket, ParticipantType.Spectator,"Spectator");
assertThat(connection.addPlayer(playerOne)).isTrue();
assertThat(connection.addPlayer(playerTwo)).isTrue();
assertThat(connection.addPlayer(spectator)).isFalse();
assertThat(connection.contains(playerOne)).isTrue();
assertThat(connection.contains(playerTwo)).isTrue();
assertThat(connection.contains(spectator)).isFalse();
}
@Test
void addSpectatorTest(){
var websocket = mock(WebSocket.class);
Participant playerOne = new Participant(websocket, ParticipantType.PlayerOne, "PlayerOne");
Participant playerTwo = new Participant(websocket, ParticipantType.PlayerTwo, "PlayerTwo");
Participant spectator = new Participant(websocket, ParticipantType.Spectator,"Spectator");
assertThat(connection.addSpectator(playerOne)).isFalse();
assertThat(connection.addSpectator(playerTwo)).isFalse();
assertThat(connection.addSpectator(spectator)).isTrue();
assertThat(connection.contains(playerOne)).isFalse();
assertThat(connection.contains(playerTwo)).isFalse();
assertThat(connection.contains(spectator)).isTrue();
}
@Test
void addOneSpectatorAndOnePlayer(){
var websocket = mock(WebSocket.class);
Participant playerOne = new Participant(websocket, ParticipantType.PlayerOne, "PlayerOne");
Participant spectator = new Participant(websocket, ParticipantType.Spectator,"Spectator");
assertThat(connection.addPlayer(playerOne)).isTrue();
assertThat(connection.addSpectator(spectator)).isTrue();
assertThat(connection.contains(playerOne)).isTrue();
assertThat(connection.contains(spectator)).isTrue();
}
@Test
void removeParticipantTest(){
var websocket = mock(WebSocket.class);
Participant playerOne = new Participant(websocket, ParticipantType.PlayerOne, "PlayerOne");
Participant playerTwo = new Participant(websocket, ParticipantType.PlayerTwo, "PlayerTwo");
Participant spectator = new Participant(websocket, ParticipantType.Spectator,"Spectator");
connection.addPlayer(playerOne);
connection.addPlayer(playerTwo);
connection.addSpectator(spectator);
assertThat(connection.removeParticipant(spectator)).isTrue();
assertThat(connection.removeParticipant(playerOne)).isTrue();
assertThat(connection.removeParticipant(playerOne)).isFalse();
assertThat(connection.removeParticipant(playerTwo)).isTrue();
}
@Test
void sendMessageTest(){
var webSocket = mock(WebSocket.class);
var participant = new Participant(webSocket, ParticipantType.PlayerOne, "playerOne");
var event = new Event[]{
new EventBuilder(EventType.PauseStartEvent).buildGameEvent(),
new EventBuilder(EventType.MoveEvent).buildGameEvent()
};
var message = new EventMessage();
message.messages = event;
connection.sendEvents(participant, event);
verify(sendMessageCallback).accept(participant.getConnection(), message);
}
@Test
void broadcastEventTest(){
var webSock = mock(WebSocket.class);
Participant playerOne = new Participant(webSock, ParticipantType.PlayerOne, "playerOne");
Participant playerTwo = new Participant(webSock, ParticipantType.PlayerTwo, "playerTwo");
Participant spectatorOne = new Participant(webSock, ParticipantType.Spectator, "spectatorOne");
Participant spectatorTwo = new Participant(webSock, ParticipantType.Spectator, "spectatorTwo");
connection.addPlayer(playerOne);
connection.addPlayer(playerTwo);
connection.addSpectator(spectatorOne);
connection.addSpectator(spectatorTwo);
var events = new Event[]{
new EventBuilder(EventType.PauseStartEvent).buildGameEvent(),
new EventBuilder(EventType.MoveEvent).buildGameEvent()
};
var message = new EventMessage();
message.messages = events;
//TODO: fix them
connection.broadcastEvents(events);
verify(sendMessageCallback).accept(playerOne.getConnection(), message);
verify(sendMessageCallback).accept(playerTwo.getConnection(), message);
verify(sendMessageCallback).accept(spectatorOne.getConnection(), message);
verify(sendMessageCallback).accept(spectatorTwo.getConnection(), message);
}
} }