141 lines
5.2 KiB
Java
141 lines
5.2 KiB
Java
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; }
|
|
}
|
|
} |