Fixed: disconnection during lobby creation
This commit is contained in:
@@ -96,20 +96,25 @@ public class Game implements Serializable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
disconnetedPlayers.put(player,true);
|
disconnetedPlayers.put(player,true);
|
||||||
if(currentState.getCurrentPlayer().equals(player))
|
if (currentState.equals(GameStages.WAITING)) {
|
||||||
if(!currentState.getGameStage().equals(GameStages.TOTEM_CHOICE))
|
playersList.remove(player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(currentState.getCurrentPlayer().equals(player)) {
|
||||||
|
if (!currentState.getGameStage().equals(GameStages.TOTEM_CHOICE)) {
|
||||||
nextPlayerSetup();
|
nextPlayerSetup();
|
||||||
else
|
return true;
|
||||||
{
|
}
|
||||||
if(totemChoiceQueue.isEmpty())
|
else {
|
||||||
{
|
if (totemChoiceQueue.isEmpty()) {
|
||||||
player.totem=getAvailableTotems().get(new Random().nextInt(getAvailableTotems().size()-1));
|
player.totem = getAvailableTotems().get(new Random().nextInt(getAvailableTotems().size() - 1));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
totemChoiceQueue.add(player);
|
totemChoiceQueue.add(player);
|
||||||
}
|
}
|
||||||
currentState.PlayerUpdate(totemChoiceQueue.poll(),null);
|
currentState.PlayerUpdate(totemChoiceQueue.poll(), null);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,141 +0,0 @@
|
|||||||
package it.polimi.ingsw.gc14.Controller;
|
|
||||||
|
|
||||||
import it.polimi.ingsw.gc14.Model.Game;
|
|
||||||
import it.polimi.ingsw.gc14.Model.Player;
|
|
||||||
import it.polimi.ingsw.gc14.Network.IClient;
|
|
||||||
import it.polimi.ingsw.gc14.View.IView;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import java.rmi.RemoteException;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
class ClientControllerTest {
|
|
||||||
|
|
||||||
private FakeView view;
|
|
||||||
private FakeClient client;
|
|
||||||
private ClientController controller;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setUp() {
|
|
||||||
view = new FakeView();
|
|
||||||
client = new FakeClient();
|
|
||||||
controller = new ClientController(view);
|
|
||||||
controller.setClient(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testConstructorInitialization() {
|
|
||||||
assertSame(view, controller.view);
|
|
||||||
assertNotNull(controller.localController);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testSetModelUpdatesLocalControllerAndView() {
|
|
||||||
Game game = createGame();
|
|
||||||
controller.setModel(game);
|
|
||||||
|
|
||||||
assertSame(game, controller.localController.getModel());
|
|
||||||
assertSame(game, view.model);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testOnError() {
|
|
||||||
controller.onError("Errore di test");
|
|
||||||
assertEquals("Errore di test", view.lastError);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testSetClientDelegatesAction() {
|
|
||||||
FakeClient newClient = new FakeClient();
|
|
||||||
controller.setClient(newClient);
|
|
||||||
|
|
||||||
Game game = createGame();
|
|
||||||
controller.setModel(game);
|
|
||||||
|
|
||||||
String current = game.getCurrentState().getCurrentPlayer().getUserName();
|
|
||||||
controller.drawUpperTribeCard(current, 0);
|
|
||||||
|
|
||||||
assertEquals("drawUpperTribeCard", newClient.lastMethodCalled);
|
|
||||||
assertEquals(current, newClient.lastUsername);
|
|
||||||
assertEquals(0, newClient.lastPos);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testDrawUpperTribeCardDelegatesCorrectly() {
|
|
||||||
Game game = createGame();
|
|
||||||
controller.setModel(game);
|
|
||||||
|
|
||||||
String current = game.getCurrentState().getCurrentPlayer().getUserName();
|
|
||||||
controller.drawUpperTribeCard(current, 0);
|
|
||||||
|
|
||||||
assertEquals("drawUpperTribeCard", client.lastMethodCalled);
|
|
||||||
assertEquals(current, client.lastUsername);
|
|
||||||
assertEquals(0, client.lastPos);
|
|
||||||
assertNull(view.lastError);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testDrawUpperTribeCardWrongPlayerShowsError() {
|
|
||||||
Game game = createGame();
|
|
||||||
controller.setModel(game);
|
|
||||||
|
|
||||||
String current = game.getCurrentState().getCurrentPlayer().getUserName();
|
|
||||||
String wrong = current.equals("p1") ? "p2" : "p1";
|
|
||||||
controller.drawUpperTribeCard(wrong, 0);
|
|
||||||
|
|
||||||
assertEquals("It's not your turn!", view.lastError);
|
|
||||||
assertNull(client.lastMethodCalled);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testSlotChoiceDelegatesCorrectly() {
|
|
||||||
Game game = createGame();
|
|
||||||
controller.setModel(game);
|
|
||||||
|
|
||||||
String current = game.getCurrentState().getCurrentPlayer().getUserName();
|
|
||||||
controller.slotChoice(current, 1);
|
|
||||||
|
|
||||||
assertEquals("slotChoice", client.lastMethodCalled);
|
|
||||||
assertEquals(current, client.lastUsername);
|
|
||||||
assertEquals(1, client.lastPos);
|
|
||||||
assertNull(view.lastError);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Game createGame() {
|
|
||||||
Game game = new Game(2);
|
|
||||||
game.addPlayer(new Player("p1"));
|
|
||||||
game.addPlayer(new Player("p2"));
|
|
||||||
return game;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static class FakeView implements IView {
|
|
||||||
Game model;
|
|
||||||
String lastError;
|
|
||||||
|
|
||||||
@Override public void setModel(Game game) { this.model = game; }
|
|
||||||
@Override public void render() {}
|
|
||||||
@Override public void showMessage(String message) {}
|
|
||||||
@Override public void showError(String message) { this.lastError = message; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class FakeClient implements IClient {
|
|
||||||
String lastMethodCalled;
|
|
||||||
String lastUsername;
|
|
||||||
int lastPos;
|
|
||||||
|
|
||||||
@Override public boolean connect(String username, int preferredInt) { return true; }
|
|
||||||
@Override public void drawUpperTribeCard(String u, int pos) throws RemoteException { lastMethodCalled = "drawUpperTribeCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void drawLowerTribeCard(String u, int pos) throws RemoteException { lastMethodCalled = "drawLowerTribeCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void drawUpperBuildingCard(String u, int pos) throws RemoteException { lastMethodCalled = "drawUpperBuildingCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void drawLowerBuildingCard(String u, int pos) throws RemoteException { lastMethodCalled = "drawLowerBuildingCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void skipTurn(String u) throws RemoteException { lastMethodCalled = "skipTurn"; lastUsername = u; }
|
|
||||||
@Override public void pickOptionalTribeCard(String u, int pos) throws RemoteException { lastMethodCalled = "pickOptionalTribeCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void pickOptionalBuildingCard(String u, int pos) throws RemoteException { lastMethodCalled = "pickOptionalBuildingCard"; lastUsername = u; lastPos = pos; }
|
|
||||||
@Override public void noOptionalCard(String u) throws RemoteException { lastMethodCalled = "noOptionalCard"; lastUsername = u; }
|
|
||||||
@Override public void slotChoice(String u, int pos) throws RemoteException { lastMethodCalled = "slotChoice"; lastUsername = u; lastPos = pos; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user