tests + ado equals override
This commit is contained in:
@@ -301,4 +301,11 @@ public class ChessBoard {
|
||||
this.lastMove = lastMove;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object otherBoard){
|
||||
if (!(otherBoard instanceof ChessBoard)) return false;
|
||||
return ((hashPlayerPieces(Color.White) == ((ChessBoard)otherBoard).hashPlayerPieces(Color.White))
|
||||
&& (hashPlayerPieces(Color.Black) == ((ChessBoard)otherBoard).hashPlayerPieces(Color.Black)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,4 +28,7 @@ public abstract class Piece {
|
||||
|
||||
public abstract <T> T accept(PieceVisitor<T> visitor);
|
||||
|
||||
@Override
|
||||
public abstract boolean equals(Object other);
|
||||
|
||||
}
|
||||
|
||||
@@ -20,4 +20,9 @@ public class Bishop extends Piece {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof Bishop && ((Bishop) obj).getColor() == this.getColor());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,4 +19,9 @@ public class King extends Piece {
|
||||
public int hashCode() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof King && ((King) obj).getColor() == this.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,9 @@ public class Knight extends Piece {
|
||||
public int hashCode() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof Knight && ((Knight) obj).getColor() == this.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,4 +23,9 @@ public class Pawn extends Piece {
|
||||
public int hashCode() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof Pawn && ((Pawn) obj).getColor() == this.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,9 @@ public class Queen extends Piece {
|
||||
public int hashCode() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof Queen && ((Queen) obj).getColor() == this.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,9 @@ public class Rook extends Piece {
|
||||
public int hashCode() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Piece obj) {
|
||||
return (obj instanceof Rook && ((Rook) obj).getColor() == this.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,57 @@
|
||||
*/
|
||||
package chess;
|
||||
|
||||
import chess.ai.DumbAI;
|
||||
import chess.controller.Command;
|
||||
import chess.controller.CommandExecutor;
|
||||
import chess.controller.commands.NewGameCommand;
|
||||
import chess.controller.commands.UndoCommand;
|
||||
import chess.controller.event.GameAdaptator;
|
||||
import chess.model.*;
|
||||
import chess.model.pieces.*;
|
||||
import chess.simulator.Simulator;
|
||||
import chess.view.simplerender.Window;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
class AppTest {
|
||||
@Test void appHasAGreeting() {
|
||||
// App classUnderTest = new App();
|
||||
// assertNotNull(classUnderTest.getGreeting(), "app should have a greeting");
|
||||
@Test void functionalRollback(){
|
||||
Game game = new Game(new ChessBoard());
|
||||
CommandExecutor commandExecutor = new CommandExecutor(game);
|
||||
|
||||
DumbAI ai = new DumbAI(commandExecutor, Color.Black);
|
||||
commandExecutor.addListener(ai);
|
||||
|
||||
DumbAI ai2 = new DumbAI(commandExecutor, Color.White);
|
||||
commandExecutor.addListener(ai2);
|
||||
|
||||
commandExecutor.addListener(new GameAdaptator() {
|
||||
@Override
|
||||
public void onGameEnd() {
|
||||
|
||||
Command.CommandResult result;
|
||||
do {
|
||||
result = commandExecutor.executeCommand(new UndoCommand());
|
||||
} while (result != Command.CommandResult.NotAllowed);
|
||||
|
||||
Game initialGame = new Game(new ChessBoard());
|
||||
CommandExecutor initialCommandExecutor = new CommandExecutor(initialGame);
|
||||
commandExecutor.executeCommand(new NewGameCommand());
|
||||
|
||||
assert(game.getBoard().equals(initialGame.getBoard()));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
commandExecutor.executeCommand(new NewGameCommand());
|
||||
|
||||
}
|
||||
|
||||
@Test void functionalRollbacks(){
|
||||
for (int i=0; i<100; i++) {
|
||||
functionalRollback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user