From 289d1190b15e77b8f614c2816a91506132336d4c Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:01:22 -0700 Subject: [PATCH 1/6] update IntelliJ code style settings --- .idea/codeStyles/Project.xml | 10 ++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..b23d0f9 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file From 2b76f774eff0d2626479227d53dfedafa08de417 Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:03:13 -0700 Subject: [PATCH 2/6] update passoff-dependencies.jar --- server/lib/passoff-dependencies.jar | Bin 15756 -> 16788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/server/lib/passoff-dependencies.jar b/server/lib/passoff-dependencies.jar index 325e70f050d4dde88324d79fe19a1a0b8737d83f..a2b414d8e10ca90705f5cb09c49a4bd45a75e3f8 100644 GIT binary patch delta 11150 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 From 2f25c2de7aedcbb4e589f93e7f89bd05628027a5 Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:15:06 -0700 Subject: [PATCH 3/6] update phase 0 tests --- .../java/passoff/chess/ChessBoardTests.java | 4 +- .../java/passoff/chess/TestUtilities.java | 40 ++++++++++----- .../passoff/chess/piece/BishopMoveTests.java | 9 ++-- .../passoff/chess/piece/KingMoveTests.java | 9 ++-- .../passoff/chess/piece/KnightMoveTests.java | 29 +++++------ .../passoff/chess/piece/PawnMoveTests.java | 51 +++++++++---------- .../passoff/chess/piece/QueenMoveTests.java | 9 ++-- .../passoff/chess/piece/RookMoveTests.java | 9 ++-- 8 files changed, 82 insertions(+), 78 deletions(-) diff --git a/shared/src/test/java/passoff/chess/ChessBoardTests.java b/shared/src/test/java/passoff/chess/ChessBoardTests.java index f3b4865..c2c5954 100644 --- a/shared/src/test/java/passoff/chess/ChessBoardTests.java +++ b/shared/src/test/java/passoff/chess/ChessBoardTests.java @@ -8,8 +8,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import static passoff.chess.TestUtilities.*; - public class ChessBoardTests { @Test @@ -33,7 +31,7 @@ public void getAddPiece() { @Test @DisplayName("Reset Board") public void defaultGameBoard() { - var expectedBoard = defaultBoard(); + var expectedBoard = TestUtilities.defaultBoard(); var actualBoard = new ChessBoard(); actualBoard.resetBoard(); diff --git a/shared/src/test/java/passoff/chess/TestUtilities.java b/shared/src/test/java/passoff/chess/TestUtilities.java index da13534..fd09a6b 100644 --- a/shared/src/test/java/passoff/chess/TestUtilities.java +++ b/shared/src/test/java/passoff/chess/TestUtilities.java @@ -3,30 +3,35 @@ import chess.*; import org.junit.jupiter.api.Assertions; -import java.util.Collection; -import java.util.HashSet; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import java.util.Map; -import java.util.Set; public class TestUtilities { - static public void validateMoves(String boardText, ChessPosition startPosition, int[][] endPositions) { + public static void validateMoves(String boardText, ChessPosition startPosition, int[][] endPositions) { var board = loadBoard(boardText); var testPiece = board.getPiece(startPosition); var validMoves = loadMoves(startPosition, endPositions); validateMoves(board, testPiece, startPosition, validMoves); } - static public void validateMoves(ChessBoard board, ChessPiece testPiece, ChessPosition startPosition, Set validMoves) { - var pieceMoves = new HashSet<>(testPiece.pieceMoves(board, startPosition)); - assertCollectionsEquals(validMoves, pieceMoves, "Wrong moves"); + public static void validateMoves(ChessBoard board, ChessPiece testPiece, ChessPosition startPosition, + List validMoves) { + var pieceMoves = new ArrayList<>(testPiece.pieceMoves(board, startPosition)); + validateMoves(validMoves, pieceMoves); } - static public void assertCollectionsEquals(Collection first, Collection second, String message) { - Assertions.assertEquals(new HashSet<>(first), new HashSet<>(second), message); - Assertions.assertEquals(first.size(), second.size(), "Collections not the same size"); + public static void validateMoves(List expected, List actual) { + Comparator comparator = Comparator.comparingInt(TestUtilities::moveToInt); + expected.sort(comparator); + actual.sort(comparator); + + Assertions.assertEquals(expected, actual, "Wrong moves"); } - final static Map CHAR_TO_TYPE_MAP = Map.of( + + private static final Map CHAR_TO_TYPE_MAP = Map.of( 'p', ChessPiece.PieceType.PAWN, 'n', ChessPiece.PieceType.KNIGHT, 'r', ChessPiece.PieceType.ROOK, @@ -74,12 +79,21 @@ public static ChessBoard defaultBoard() { """); } - public static Set loadMoves(ChessPosition startPosition, int[][] endPositions) { - var validMoves = new HashSet(); + public static List loadMoves(ChessPosition startPosition, int[][] endPositions) { + var validMoves = new ArrayList(); for (var endPosition : endPositions) { validMoves.add(new ChessMove(startPosition, new ChessPosition(endPosition[0], endPosition[1]), null)); } return validMoves; } + + private static int positionToInt(ChessPosition position) { + return 10 * position.getRow() + position.getColumn(); + } + + private static int moveToInt(ChessMove move) { + return 1000 * positionToInt(move.getStartPosition()) + 10 * positionToInt(move.getEndPosition()) + + ((move.getPromotionPiece() != null) ? move.getPromotionPiece().ordinal() + 1 : 0); + } } diff --git a/shared/src/test/java/passoff/chess/piece/BishopMoveTests.java b/shared/src/test/java/passoff/chess/piece/BishopMoveTests.java index 91a8327..a54a820 100644 --- a/shared/src/test/java/passoff/chess/piece/BishopMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/BishopMoveTests.java @@ -2,14 +2,13 @@ import chess.ChessPosition; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.validateMoves; +import passoff.chess.TestUtilities; public class BishopMoveTests { @Test public void bishopMoveUntilEdge() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -32,7 +31,7 @@ public void bishopMoveUntilEdge() { @Test public void bishopCaptureEnemy() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | |Q| | | | | | | | | | | | | | @@ -55,7 +54,7 @@ public void bishopCaptureEnemy() { @Test public void bishopBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | diff --git a/shared/src/test/java/passoff/chess/piece/KingMoveTests.java b/shared/src/test/java/passoff/chess/piece/KingMoveTests.java index 1e4fe0f..512bf64 100644 --- a/shared/src/test/java/passoff/chess/piece/KingMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/KingMoveTests.java @@ -2,14 +2,13 @@ import chess.ChessPosition; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.validateMoves; +import passoff.chess.TestUtilities; public class KingMoveTests { @Test public void kingMiddleOfBoard() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -27,7 +26,7 @@ public void kingMiddleOfBoard() { @Test public void kingCaptureEnemy() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -45,7 +44,7 @@ public void kingCaptureEnemy() { @Test public void kingBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | |r|k| | | | | | | |p|p| | | | | | | | | | diff --git a/shared/src/test/java/passoff/chess/piece/KnightMoveTests.java b/shared/src/test/java/passoff/chess/piece/KnightMoveTests.java index 6b6ec44..7dae134 100644 --- a/shared/src/test/java/passoff/chess/piece/KnightMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/KnightMoveTests.java @@ -2,14 +2,13 @@ import chess.ChessPosition; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.validateMoves; +import passoff.chess.TestUtilities; public class KnightMoveTests { @Test public void knightMiddleOfBoardWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -28,7 +27,7 @@ public void knightMiddleOfBoardWhite() { @Test public void knightMiddleOfBoardBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -48,7 +47,7 @@ public void knightMiddleOfBoardBlack() { @Test public void knightEdgeOfBoardLeft() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -65,7 +64,7 @@ public void knightEdgeOfBoardLeft() { @Test public void knightEdgeOfBoardRight() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -82,7 +81,7 @@ public void knightEdgeOfBoardRight() { @Test public void knightEdgeOfBoardBottom() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -99,7 +98,7 @@ public void knightEdgeOfBoardBottom() { @Test public void knightEdgeOfBoardTop() { - validateMoves(""" + TestUtilities.validateMoves(""" | | |N| | | | | | | | | | | | | | | | | | | | | | | | @@ -117,7 +116,7 @@ public void knightEdgeOfBoardTop() { @Test public void knightCornerOfBoardBottomRight() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -134,7 +133,7 @@ public void knightCornerOfBoardBottomRight() { @Test public void knightCornerOfBoardTopRight() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | |N| | | | | | | | | | | | | | | | | | | @@ -151,7 +150,7 @@ public void knightCornerOfBoardTopRight() { @Test public void knightCornerOfBoardTopLeft() { - validateMoves(""" + TestUtilities.validateMoves(""" |n| | | | | | | | | | | | | | | | | | | | | | | | | | @@ -168,7 +167,7 @@ public void knightCornerOfBoardTopLeft() { @Test public void knightCornerOfBoardBottomLeft() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -185,7 +184,7 @@ public void knightCornerOfBoardBottomLeft() { @Test public void knightSurroundedButNotBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | |R|R|R| | | @@ -204,7 +203,7 @@ public void knightSurroundedButNotBlocked() { @Test public void knightBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | |R| | | | | | | | | | | |P| | @@ -222,7 +221,7 @@ public void knightBlocked() { @Test public void knightCaptureEnemy() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | diff --git a/shared/src/test/java/passoff/chess/piece/PawnMoveTests.java b/shared/src/test/java/passoff/chess/piece/PawnMoveTests.java index 8325a31..d42ffcf 100644 --- a/shared/src/test/java/passoff/chess/piece/PawnMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/PawnMoveTests.java @@ -3,19 +3,16 @@ import chess.ChessMove; import chess.ChessPiece; import chess.ChessPosition; - import org.junit.jupiter.api.Test; +import passoff.chess.TestUtilities; -import java.util.HashSet; - -import static passoff.chess.TestUtilities.loadBoard; -import static passoff.chess.TestUtilities.validateMoves; +import java.util.ArrayList; public class PawnMoveTests { @Test public void pawnMiddleOfBoardWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -32,7 +29,7 @@ public void pawnMiddleOfBoardWhite() { @Test public void pawnMiddleOfBoardBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -50,7 +47,7 @@ public void pawnMiddleOfBoardBlack() { @Test public void pawnInitialMoveWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -67,7 +64,7 @@ public void pawnInitialMoveWhite() { @Test public void pawnInitialMoveBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | |p| | | | | | | | | | | | | | | @@ -139,7 +136,7 @@ public void pawnPromotionCapture() { @Test public void pawnAdvanceBlockedWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -156,7 +153,7 @@ public void pawnAdvanceBlockedWhite() { @Test public void pawnAdvanceBlockedBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -174,7 +171,7 @@ public void pawnAdvanceBlockedBlack() { @Test public void pawnAdvanceBlockedDoubleMoveWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -191,7 +188,7 @@ public void pawnAdvanceBlockedDoubleMoveWhite() { @Test public void pawnAdvanceBlockedDoubleMoveBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | |p| | | | | | | | |p| | | | | | @@ -209,7 +206,7 @@ public void pawnAdvanceBlockedDoubleMoveBlack() { @Test public void pawnCaptureWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -226,7 +223,7 @@ public void pawnCaptureWhite() { @Test public void pawnCaptureBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -243,7 +240,7 @@ public void pawnCaptureBlack() { @Test public void pawnMoveFromEdgeWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -260,7 +257,7 @@ public void pawnMoveFromEdgeWhite() { @Test public void pawnMoveFromEdgeBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -277,7 +274,7 @@ public void pawnMoveFromEdgeBlack() { @Test public void pawnCaptureFromEdgeWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -294,7 +291,7 @@ public void pawnCaptureFromEdgeWhite() { @Test public void pawnCaptureFromEdgeBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -311,7 +308,7 @@ public void pawnCaptureFromEdgeBlack() { @Test public void pawnCaptureFromStartWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -328,7 +325,7 @@ public void pawnCaptureFromStartWhite() { @Test public void pawnCaptureFromStartBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | |p| | | | | | | |R| | | | | | @@ -379,7 +376,7 @@ public void captureAndPromoteBlack() { @Test public void pawnCannotCaptureBackwardWhite() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -396,7 +393,7 @@ public void pawnCannotCaptureBackwardWhite() { @Test public void pawnCannotCaptureBackwardBlack() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | |R|R| | | | | | | |p| | | | | | @@ -412,10 +409,10 @@ public void pawnCannotCaptureBackwardBlack() { } - private void validatePromotion(String boardText, ChessPosition startingPosition, int[][] endPositions) { - var board = loadBoard(boardText); + private static void validatePromotion(String boardText, ChessPosition startingPosition, int[][] endPositions) { + var board = TestUtilities.loadBoard(boardText); var testPiece = board.getPiece(startingPosition); - var validMoves = new HashSet(); + var validMoves = new ArrayList(); for (var endPosition : endPositions) { var end = new ChessPosition(endPosition[0], endPosition[1]); validMoves.add(new ChessMove(startingPosition, end, ChessPiece.PieceType.QUEEN)); @@ -424,7 +421,7 @@ private void validatePromotion(String boardText, ChessPosition startingPosition, validMoves.add(new ChessMove(startingPosition, end, ChessPiece.PieceType.KNIGHT)); } - validateMoves(board, testPiece, startingPosition, validMoves); + TestUtilities.validateMoves(board, testPiece, startingPosition, validMoves); } } diff --git a/shared/src/test/java/passoff/chess/piece/QueenMoveTests.java b/shared/src/test/java/passoff/chess/piece/QueenMoveTests.java index 6b7f514..a19a0d1 100644 --- a/shared/src/test/java/passoff/chess/piece/QueenMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/QueenMoveTests.java @@ -2,13 +2,12 @@ import chess.ChessPosition; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.validateMoves; +import passoff.chess.TestUtilities; public class QueenMoveTests { @Test public void queenMoveUntilEdge() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | |q| | | | | | | | | | | @@ -35,7 +34,7 @@ public void queenMoveUntilEdge() { @Test public void queenCaptureEnemy() { - validateMoves(""" + TestUtilities.validateMoves(""" |b| | | | | | | | | | | | | | | | | | | |R| | | | | | @@ -59,7 +58,7 @@ public void queenCaptureEnemy() { @Test public void queenBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | diff --git a/shared/src/test/java/passoff/chess/piece/RookMoveTests.java b/shared/src/test/java/passoff/chess/piece/RookMoveTests.java index 90ac056..f403cd7 100644 --- a/shared/src/test/java/passoff/chess/piece/RookMoveTests.java +++ b/shared/src/test/java/passoff/chess/piece/RookMoveTests.java @@ -2,15 +2,14 @@ import chess.ChessPosition; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.validateMoves; +import passoff.chess.TestUtilities; public class RookMoveTests { @Test public void rookMoveUntilEdge() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -33,7 +32,7 @@ public void rookMoveUntilEdge() { @Test public void rookCaptureEnemy() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -55,7 +54,7 @@ public void rookCaptureEnemy() { @Test public void rookBlocked() { - validateMoves(""" + TestUtilities.validateMoves(""" | | | | | | |n|r| | | | | | | | |p| | | | | | | | | | From ec290bb6ad38a4eda8f63206f538927fad269604 Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:17:26 -0700 Subject: [PATCH 4/6] update phase 1 tests --- .../chess/extracredit/CastlingTests.java | 72 +++++------- .../chess/extracredit/EnPassantTests.java | 23 ++-- .../passoff/chess/game/FullGameTest.java | 18 +-- .../passoff/chess/game/GameStatusTests.java | 108 ++++++++---------- .../passoff/chess/game/MakeMoveTests.java | 85 +++++++------- .../passoff/chess/game/ValidMovesTests.java | 59 +++++----- 6 files changed, 164 insertions(+), 201 deletions(-) diff --git a/starter-code/1-chess-game/passoff/chess/extracredit/CastlingTests.java b/starter-code/1-chess-game/passoff/chess/extracredit/CastlingTests.java index 6f21539..afefeaa 100644 --- a/starter-code/1-chess-game/passoff/chess/extracredit/CastlingTests.java +++ b/starter-code/1-chess-game/passoff/chess/extracredit/CastlingTests.java @@ -4,8 +4,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.loadBoard; +import passoff.chess.TestUtilities; /** * Tests if the ChessGame implementation can handle Castling moves @@ -16,11 +15,14 @@ * and 2: neither the space the king moves past nor the space the king ends up at can be reached by an opponents piece. */ public class CastlingTests { + private static final String INVALID_CASTLE_PRESENT = "ChessGame validMoves contained an invalid castling move"; + private static final String VALID_CASTLE_MISSING = "ChessGame validMoves did not contain valid castle move"; + private static final String INCORRECT_BOARD = "Wrong board after castle move made"; @Test @DisplayName("White Team Castle") public void castleWhite() { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -39,14 +41,12 @@ public void castleWhite() { ChessMove queenSide = new ChessMove(kingPosition, new ChessPosition(1, 3), null); ChessMove kingSide = new ChessMove(kingPosition, new ChessPosition(1, 7), null); - Assertions.assertTrue(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves did not contain valid queen-side castle move"); - Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves did not contain valid king-side castle move"); + Assertions.assertTrue(game.validMoves(kingPosition).contains(queenSide), VALID_CASTLE_MISSING); + Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), VALID_CASTLE_MISSING); //queen side castle works correctly Assertions.assertDoesNotThrow(() -> game.makeMove(queenSide)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -55,10 +55,10 @@ public void castleWhite() { | | | | | | | | | | | | | | | | | | | | |K|R| | | |R| - """), game.getBoard()); + """), game.getBoard(), INCORRECT_BOARD); //reset board - board = loadBoard(""" + board = TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -73,7 +73,7 @@ public void castleWhite() { //king side castle works correctly Assertions.assertDoesNotThrow(() -> game.makeMove(kingSide)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -82,14 +82,14 @@ public void castleWhite() { | | | | | | | | | | | | | | | | | | |R| | | | |R|K| | - """), game.getBoard()); + """), game.getBoard(), INCORRECT_BOARD); } @Test @DisplayName("Black Team Castle") public void castleBlack() { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" |r| | | |k| | |r| | |p| | | | | |q| | | | | | | | | | @@ -108,14 +108,12 @@ public void castleBlack() { ChessMove queenSide = new ChessMove(kingPosition, new ChessPosition(8, 3), null); ChessMove kingSide = new ChessMove(kingPosition, new ChessPosition(8, 7), null); - Assertions.assertTrue(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves did not contain valid queen-side castle move"); - Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves did not contain valid king-side castle move"); + Assertions.assertTrue(game.validMoves(kingPosition).contains(queenSide), VALID_CASTLE_MISSING); + Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), VALID_CASTLE_MISSING); //queen side castle works correctly Assertions.assertDoesNotThrow(() -> game.makeMove(queenSide)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | |k|r| | | |r| | |p| | | | | |q| | | | | | | | | | @@ -124,11 +122,11 @@ public void castleBlack() { | | | | | | | | | | | | | |K| | | | |R| | | | | | | | - """), game.getBoard()); + """), game.getBoard(), INCORRECT_BOARD); //reset board - board = loadBoard(""" + board = TestUtilities.loadBoard(""" |r| | | |k| | |r| | |p| | | | | |q| | | | | | | | | | @@ -143,7 +141,7 @@ public void castleBlack() { //king side castle works correctly Assertions.assertDoesNotThrow(() -> game.makeMove(kingSide)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" |r| | | | |r|k| | | |p| | | | | |q| | | | | | | | | | @@ -152,14 +150,14 @@ public void castleBlack() { | | | | | | | | | | | | | |K| | | | |R| | | | | | | | - """), game.getBoard()); + """), game.getBoard(), INCORRECT_BOARD); } @Test @DisplayName("Cannot Castle Through Pieces") public void castlingBlockedByTeam() { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -179,17 +177,15 @@ public void castlingBlockedByTeam() { ChessMove kingSide = new ChessMove(kingPosition, new ChessPosition(1, 7), null); //make sure king cannot castle - Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves contained an invalid castling move"); - Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves contained an invalid castling move"); + Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), INVALID_CASTLE_PRESENT); + Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), INVALID_CASTLE_PRESENT); } @Test @DisplayName("Cannot Castle in Check") public void castlingBlockedByEnemy() { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" |r| | |B|k| | |r| | | | | | | | | | | | | | | |R| | | @@ -206,17 +202,15 @@ public void castlingBlockedByEnemy() { ChessPosition kingPosition = new ChessPosition(8, 5); ChessMove queenSide = new ChessMove(kingPosition, new ChessPosition(8, 3), null); ChessMove kingSide = new ChessMove(kingPosition, new ChessPosition(8, 7), null); - Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves contained an invalid castling move"); - Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves contained an invalid castling move"); + Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), INVALID_CASTLE_PRESENT); + Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), INVALID_CASTLE_PRESENT); } @Test @DisplayName("Cannot Castle After Moving") public void noCastleAfterMove() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | |k| | | | | | | | | | | | | | | | | | | | | | | | @@ -252,10 +246,8 @@ public void noCastleAfterMove() throws InvalidMoveException { ChessMove kingSide = new ChessMove(kingPosition, new ChessPosition(1, 7), null); //make sure king can't castle towards moved rook, but still can to unmoved rook - Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves contained an invalid castling move"); - Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves did not contain valid king-side castle move"); + Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), INVALID_CASTLE_PRESENT); + Assertions.assertTrue(game.validMoves(kingPosition).contains(kingSide), VALID_CASTLE_MISSING); //move king game.makeMove(new ChessMove(new ChessPosition(8, 2), new ChessPosition(8, 3), null)); @@ -286,10 +278,8 @@ public void noCastleAfterMove() throws InvalidMoveException { */ //make sure king can't castle anymore - Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), - "ChessGame validMoves contained an invalid castling move"); - Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), - "ChessGame validMoves contained an invalid castling move"); + Assertions.assertFalse(game.validMoves(kingPosition).contains(queenSide), INVALID_CASTLE_PRESENT); + Assertions.assertFalse(game.validMoves(kingPosition).contains(kingSide), INVALID_CASTLE_PRESENT); } } diff --git a/starter-code/1-chess-game/passoff/chess/extracredit/EnPassantTests.java b/starter-code/1-chess-game/passoff/chess/extracredit/EnPassantTests.java index 560f706..f908c14 100644 --- a/starter-code/1-chess-game/passoff/chess/extracredit/EnPassantTests.java +++ b/starter-code/1-chess-game/passoff/chess/extracredit/EnPassantTests.java @@ -4,8 +4,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.loadBoard; +import passoff.chess.TestUtilities; /** * Tests if the ChessGame implementation can handle En Passant moves @@ -20,7 +19,7 @@ public class EnPassantTests { @Test @DisplayName("White En Passant Right") public void enPassantWhiteRight() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | | | | | | | | | |p| | | | | | | | | | | | | | | @@ -43,7 +42,7 @@ public void enPassantWhiteRight() throws InvalidMoveException { */ ChessMove enPassantMove = new ChessMove(new ChessPosition(5, 2), new ChessPosition(6, 3), null); - ChessBoard endBoard = loadBoard(""" + ChessBoard endBoard = TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | |P| | | | | | @@ -61,7 +60,7 @@ public void enPassantWhiteRight() throws InvalidMoveException { @Test @DisplayName("White En Passant Left") public void enPassantWhiteLeft() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | | | | | | | | | |p| | | | | | | | | | | | | | | @@ -84,7 +83,7 @@ public void enPassantWhiteLeft() throws InvalidMoveException { | | | | |K| | | | */ ChessMove enPassantMove = new ChessMove(new ChessPosition(5, 4), new ChessPosition(6, 3), null); - ChessBoard endBoard = loadBoard(""" + ChessBoard endBoard = TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | |P| | | | | | @@ -102,7 +101,7 @@ public void enPassantWhiteLeft() throws InvalidMoveException { @Test @DisplayName("Black En Passant Right") public void enPassantBlackRight() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | |k| | | | | | | | | | | | | | | | | | | | | | | @@ -124,7 +123,7 @@ public void enPassantBlackRight() throws InvalidMoveException { | | | | | | | | | */ ChessMove enPassantMove = new ChessMove(new ChessPosition(4, 6), new ChessPosition(3, 7), null); - ChessBoard endBoard = loadBoard(""" + ChessBoard endBoard = TestUtilities.loadBoard(""" | | | |k| | | | | | | | | | | | | | | | | | | | | | | @@ -142,7 +141,7 @@ public void enPassantBlackRight() throws InvalidMoveException { @Test @DisplayName("Black En Passant Left") public void enPassantBlackLeft() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | |k| | | | | | | | | | | | | | | | | | | | | | | @@ -164,7 +163,7 @@ public void enPassantBlackLeft() throws InvalidMoveException { | | | | | | | | | */ ChessMove enPassantMove = new ChessMove(new ChessPosition(4, 8), new ChessPosition(3, 7), null); - ChessBoard endBoard = loadBoard(""" + ChessBoard endBoard = TestUtilities.loadBoard(""" | | | |k| | | | | | | | | | | | | | | | | | | | | | | @@ -181,7 +180,7 @@ public void enPassantBlackLeft() throws InvalidMoveException { @Test @DisplayName("Can Only En Passant on Next Turn") public void missedEnPassant() throws InvalidMoveException { - ChessBoard board = loadBoard(""" + ChessBoard board = TestUtilities.loadBoard(""" | | | | |k| | | | | | |p| | | | | | | | | | | | | |P| @@ -244,7 +243,7 @@ private void assertValidEnPassant(ChessBoard board, ChessGame.TeamColor turn, Ch //en passant move works correctly Assertions.assertDoesNotThrow(() -> game.makeMove(enPassantMove)); - Assertions.assertEquals(endBoard, game.getBoard()); + Assertions.assertEquals(endBoard, game.getBoard(), "Incorrect Board after En Passant Move"); } } diff --git a/starter-code/1-chess-game/passoff/chess/game/FullGameTest.java b/starter-code/1-chess-game/passoff/chess/game/FullGameTest.java index 09f01a5..3d664d9 100644 --- a/starter-code/1-chess-game/passoff/chess/game/FullGameTest.java +++ b/starter-code/1-chess-game/passoff/chess/game/FullGameTest.java @@ -90,17 +90,11 @@ public void scholarsMate() throws InvalidMoveException { |P|P|P|P| |P|P|P| |R|N|B| |K| |N|R| */ - Assertions.assertTrue(game.isInCheck(ChessGame.TeamColor.BLACK), - "Black is in check but isInCheck returned false"); - Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), - "White is not in check but isInCheck returned true"); - Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is in checkmate but isInCheckmate returned false"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), - "Black is not in stalemate but isInStalemate returned true"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), - "White is not in stalemate but isInStalemate returned true"); + Assertions.assertTrue(game.isInCheck(ChessGame.TeamColor.BLACK), GameStatusTests.INCORRECT_BLACK_CHECK); + Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), GameStatusTests.INCORRECT_WHITE_CHECK); + Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), GameStatusTests.MISSING_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), GameStatusTests.INCORRECT_WHITE_CHECKMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), GameStatusTests.INCORRECT_BLACK_STALEMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), GameStatusTests.INCORRECT_WHITE_STALEMATE); } } diff --git a/starter-code/1-chess-game/passoff/chess/game/GameStatusTests.java b/starter-code/1-chess-game/passoff/chess/game/GameStatusTests.java index b668296..6a1af7b 100644 --- a/starter-code/1-chess-game/passoff/chess/game/GameStatusTests.java +++ b/starter-code/1-chess-game/passoff/chess/game/GameStatusTests.java @@ -4,39 +4,42 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; - -import static passoff.chess.TestUtilities.*; +import passoff.chess.TestUtilities; public class GameStatusTests { + static final String INCORRECT_BLACK_CHECK = "Black is not in check but isInCheck returned true"; + static final String INCORRECT_WHITE_CHECK = "White is not in check but isInCheck returned true"; + static final String INCORRECT_BLACK_CHECKMATE = "Black is not in checkmate but isInCheckmate returned true"; + static final String INCORRECT_WHITE_CHECKMATE = "White is not in checkmate but isInCheckmate returned true"; + static final String INCORRECT_BLACK_STALEMATE = "Black is not in stalemate but isInStalemate returned true"; + static final String INCORRECT_WHITE_STALEMATE = "White is not in stalemate but isInStalemate returned true"; + static final String MISSING_BLACK_CHECK = "White is in check but isInCheck returned false"; + static final String MISSING_BLACK_CHECKMATE = "Black is in checkmate but isInCheckmate returned false"; + static final String MISSING_WHITE_CHECKMATE = "White is in checkmate but isInCheckmate returned false"; + static final String MISSING_WHITE_STALEMATE = "White is in stalemate but isInStalemate returned false"; @Test @DisplayName("New Game Default Values") public void newGame() { var game = new ChessGame(); - var expectedBoard = defaultBoard(); - Assertions.assertEquals(expectedBoard, game.getBoard()); - Assertions.assertEquals(ChessGame.TeamColor.WHITE, game.getTeamTurn()); + var expectedBoard = TestUtilities.defaultBoard(); + Assertions.assertEquals(expectedBoard, game.getBoard(), "Incorrect starting board"); + Assertions.assertEquals(ChessGame.TeamColor.WHITE, game.getTeamTurn(), "Incorrect starting team turn"); } @Test @DisplayName("Default Board No Statuses") public void noGameStatuses() { var game = new ChessGame(); - game.setBoard(defaultBoard()); + game.setBoard(TestUtilities.defaultBoard()); game.setTeamTurn(ChessGame.TeamColor.WHITE); - Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.BLACK), - "Black is not in check but isInCheck returned true"); - Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), - "White is not in check but isInCheck returned true"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is not in checkmate but isInCheckmate returned true"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), - "Black is not in stalemate but isInStalemate returned true"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), - "White is not in stalemate but isInStalemate returned true"); + Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_CHECK); + Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECK); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECKMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_STALEMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_STALEMATE); } @@ -44,7 +47,7 @@ public void noGameStatuses() { @DisplayName("White in Check") public void whiteCheck() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | |k| | | | | | | | | | | | | | | | | | | @@ -55,10 +58,8 @@ public void whiteCheck() { | | | | | | | | | """)); - Assertions.assertTrue(game.isInCheck(ChessGame.TeamColor.WHITE), - "White is in check but isInCheck returned false"); - Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.BLACK), - "Black is not in check but isInCheck returned true"); + Assertions.assertTrue(game.isInCheck(ChessGame.TeamColor.WHITE), MISSING_BLACK_CHECK); + Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_CHECK); } @@ -66,7 +67,7 @@ public void whiteCheck() { @DisplayName("Black in Check") public void blackCheck() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | |K| | | | | | | | | | | | | | | | | |k| | | | | @@ -79,8 +80,7 @@ public void blackCheck() { Assertions.assertTrue(game.isInCheck(ChessGame.TeamColor.BLACK), "Black is in check but isInCheck returned false"); - Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), - "White is not in check but isInCheck returned true"); + Assertions.assertFalse(game.isInCheck(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECK); } @@ -89,7 +89,7 @@ public void blackCheck() { public void whiteTeamCheckmate() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | |b|q| | | | | | | | | | | | | | @@ -101,10 +101,8 @@ public void whiteTeamCheckmate() { """)); game.setTeamTurn(ChessGame.TeamColor.WHITE); - Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is in checkmate but isInCheckmate returned false"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is not in checkmate but isInCheckmate returned true"); + Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.WHITE), MISSING_WHITE_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_CHECKMATE); } @@ -112,7 +110,7 @@ public void whiteTeamCheckmate() { @DisplayName("Black in Checkmate by Pawns") public void blackTeamPawnCheckmate() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | |k| | | | | | | | |P|P| | | | | |P| | |P|P| | | @@ -124,10 +122,8 @@ public void blackTeamPawnCheckmate() { """)); game.setTeamTurn(ChessGame.TeamColor.BLACK); - Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is in checkmate but isInCheckmate returned false"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); + Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), MISSING_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECKMATE); } @@ -136,7 +132,7 @@ public void blackTeamPawnCheckmate() { public void escapeCheckByCapturingThreateningPiece() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | |r|k| | | | | | | |P| |p| | | | |N| | | | | @@ -148,10 +144,8 @@ public void escapeCheckByCapturingThreateningPiece() { """)); game.setTeamTurn(ChessGame.TeamColor.BLACK); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is not in checkmate but isInCheckmate returned true"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECKMATE); } @@ -160,7 +154,7 @@ public void escapeCheckByCapturingThreateningPiece() { public void cannotEscapeCheckByCapturingThreateningPiece() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | |r|k| | | | | | | |P| |p| | | | |N| | | | | @@ -172,10 +166,8 @@ public void cannotEscapeCheckByCapturingThreateningPiece() { """)); game.setTeamTurn(ChessGame.TeamColor.BLACK); - Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is in checkmate but isInCheckmate returned false"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); + Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), MISSING_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECKMATE); } @@ -184,7 +176,7 @@ public void cannotEscapeCheckByCapturingThreateningPiece() { public void checkmateWhereBlockingThreateningPieceOpensNewThreat() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | |r|k| | | |R| | | | | | | | | | | | | | | @@ -196,10 +188,8 @@ public void checkmateWhereBlockingThreateningPieceOpensNewThreat() { """)); game.setTeamTurn(ChessGame.TeamColor.BLACK); - Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), - "Black is in checkmate but isInCheckmate returned false"); - Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), - "White is not in checkmate but isInCheckmate returned true"); + Assertions.assertTrue(game.isInCheckmate(ChessGame.TeamColor.BLACK), MISSING_BLACK_CHECKMATE); + Assertions.assertFalse(game.isInCheckmate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_CHECKMATE); } @@ -207,7 +197,7 @@ public void checkmateWhereBlockingThreateningPieceOpensNewThreat() { @DisplayName("Pinned King Causes Stalemate") public void stalemate() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |k| | | | | | | | | | | | | | | |r| | | | | | | | | | @@ -219,17 +209,15 @@ public void stalemate() { """)); game.setTeamTurn(ChessGame.TeamColor.WHITE); - Assertions.assertTrue(game.isInStalemate(ChessGame.TeamColor.WHITE), - "White is in a stalemate but isInStalemate returned false"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), - "Black is not in a stalemate but isInStalemate returned true"); + Assertions.assertTrue(game.isInStalemate(ChessGame.TeamColor.WHITE), MISSING_WHITE_STALEMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_STALEMATE); } @Test @DisplayName("Stalemate Requires not in Check") public void checkmateNotStalemate() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |k| | | | | | | | | | | | | | | | | | | | | | | | | | @@ -241,9 +229,7 @@ public void checkmateNotStalemate() { """)); game.setTeamTurn(ChessGame.TeamColor.WHITE); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), - "White is not in a stalemate but isInStalemate returned true"); - Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), - "Black is not in a stalemate but isInStalemate returned true"); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.WHITE), INCORRECT_WHITE_STALEMATE); + Assertions.assertFalse(game.isInStalemate(ChessGame.TeamColor.BLACK), INCORRECT_BLACK_STALEMATE); } } diff --git a/starter-code/1-chess-game/passoff/chess/game/MakeMoveTests.java b/starter-code/1-chess-game/passoff/chess/game/MakeMoveTests.java index 4ed4ecc..666e826 100644 --- a/starter-code/1-chess-game/passoff/chess/game/MakeMoveTests.java +++ b/starter-code/1-chess-game/passoff/chess/game/MakeMoveTests.java @@ -7,23 +7,23 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; - -import static passoff.chess.TestUtilities.*; +import passoff.chess.TestUtilities; public class MakeMoveTests { + private static final String WRONG_BOARD = "Board not correct after move made"; private ChessGame game; @BeforeEach public void setUp() { game = new ChessGame(); game.setTeamTurn(ChessGame.TeamColor.WHITE); - game.setBoard(defaultBoard()); + game.setBoard(TestUtilities.defaultBoard()); } @Test @DisplayName("Make Valid King Move") public void makeValidKingMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | |p| | | | | | |k| | | | | | | | | | @@ -39,7 +39,7 @@ public void makeValidKingMove() throws InvalidMoveException { var kingEndPosition = new ChessPosition(1, 1); game.makeMove(new ChessMove(kingStartPosition, kingEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | | | | | | |p| | | | | | |k| | | | | | | | | | @@ -48,13 +48,13 @@ public void makeValidKingMove() throws InvalidMoveException { | | | | | | | | | | | | | | | | | | |K| | | | | | | | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Valid Queen Move") public void makeValidQueenMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | | | | | |q| | @@ -70,7 +70,7 @@ public void makeValidQueenMove() throws InvalidMoveException { var queenEndPosition = new ChessPosition(1, 2); game.makeMove(new ChessMove(queenStartPosition, queenEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -79,13 +79,13 @@ public void makeValidQueenMove() throws InvalidMoveException { | | | | | | | | | | | | | | | | | | |K|q|k| | | | | | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Valid Rook Move") public void makeValidRookMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -101,7 +101,7 @@ public void makeValidRookMove() throws InvalidMoveException { var rookEndPosition = new ChessPosition(7, 8); game.makeMove(new ChessMove(rookStartPosition, rookEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | |R| | | | | | | | | | @@ -110,13 +110,13 @@ public void makeValidRookMove() throws InvalidMoveException { | | | | | | | | | | | | | | | | | | |K| | | | | | | | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Valid Knight Move") public void makeValidKnightMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | |n| | | | | | @@ -132,7 +132,7 @@ public void makeValidKnightMove() throws InvalidMoveException { var knightEndPosition = new ChessPosition(4, 4); game.makeMove(new ChessMove(knightStartPosition, knightEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -141,13 +141,13 @@ public void makeValidKnightMove() throws InvalidMoveException { | | | | | | | | | | | | | | | | |P| | | | | |K| | | | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Valid Bishop Move") public void makeValidBishopMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | |k| | | | |p| | | | | | | | | | | | | | | | | @@ -163,7 +163,7 @@ public void makeValidBishopMove() throws InvalidMoveException { var bishopEndPosition = new ChessPosition(6, 8); game.makeMove(new ChessMove(bishopStartPosition, bishopEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | | | | |k| | | | |p| | | | | | | | | | | | | | | |B| @@ -172,13 +172,13 @@ public void makeValidBishopMove() throws InvalidMoveException { | | | | | | | | | | | | | | | | | | | | | | |K| | | | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Valid Pawn Move") public void makeValidPawnMove() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | |k| | | | | | | | |p| | | | | | | | | | | | | | | | @@ -194,7 +194,7 @@ public void makeValidPawnMove() throws InvalidMoveException { var pawnEndPosition = new ChessPosition(6, 2); game.makeMove(new ChessMove(pawnStartPosition, pawnEndPosition, null)); - Assertions.assertEquals(loadBoard(""" + Assertions.assertEquals(TestUtilities.loadBoard(""" | |k| | | | | | | | | | | | | | | | | |p| | | | | | | @@ -203,17 +203,19 @@ public void makeValidPawnMove() throws InvalidMoveException { | | | | | | | | | | | | | | | |P| | | | | | | | |K| | - """), game.getBoard()); + """), game.getBoard(), WRONG_BOARD); } @Test @DisplayName("Make Move Changes Team Turn") public void makeMoveChangesTurn() throws InvalidMoveException { + String failureMessage = "Team color not changed after move made"; + game.makeMove(new ChessMove(new ChessPosition(2, 5), new ChessPosition(4, 5), null)); - Assertions.assertEquals(ChessGame.TeamColor.BLACK, game.getTeamTurn()); + Assertions.assertEquals(ChessGame.TeamColor.BLACK, game.getTeamTurn(), failureMessage); game.makeMove(new ChessMove(new ChessPosition(7, 5), new ChessPosition(5, 5), null)); - Assertions.assertEquals(ChessGame.TeamColor.WHITE, game.getTeamTurn()); + Assertions.assertEquals(ChessGame.TeamColor.WHITE, game.getTeamTurn(), failureMessage); } @Test @@ -270,7 +272,7 @@ public void invalidMakeMoveTakeOwnPiece() { @Test @DisplayName("Invalid Make Move Captured Piece") public void invalidMakeMoveCapturedPiece() throws InvalidMoveException { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |r|n|b|q|k|b|n|r| |p|p|p|p| |p|p|p| | | | | | | | | | @@ -289,7 +291,7 @@ public void invalidMakeMoveCapturedPiece() throws InvalidMoveException { @Test @DisplayName("Invalid Make Move Jump Enemy") public void invalidMakeMoveJumpEnemy() { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | |k| | | | | | | | | | | | | | | | | | | | | | @@ -306,7 +308,7 @@ public void invalidMakeMoveJumpEnemy() { @Test @DisplayName("Invalid Make Move In Check") public void invalidMakeMoveInCheck() { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |r|n| |q|k|b| |r| |p| |p|p|p|p|p|p| |b|p| | | | | | | @@ -324,7 +326,7 @@ public void invalidMakeMoveInCheck() { @Test @DisplayName("Invalid Make Move Double Move Moved Pawn") public void invalidMakeMoveDoubleMoveMovedPawn() { - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |r|n|b|q|k|b|n|r| |p| |p|p|p|p|p|p| | | | | | | | | | @@ -343,7 +345,12 @@ public void invalidMakeMoveDoubleMoveMovedPawn() { @EnumSource(value = ChessPiece.PieceType.class, names = {"QUEEN", "ROOK", "KNIGHT", "BISHOP"}) @DisplayName("Pawn Promotion") public void promotionMoves(ChessPiece.PieceType promotionType) throws InvalidMoveException { - game.setBoard(loadBoard(""" + String pieceAtStart = "After move, a piece is still present in the start position"; + String noPieceAtEnd = "After move, no piece found at the end position"; + String incorrectType = "Found piece at end position is not the correct piece type"; + String incorrectColor = "Found piece at end position is the wrong team color"; + + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | |P| | | | | | | | | | | | |k| | @@ -358,14 +365,11 @@ public void promotionMoves(ChessPiece.PieceType promotionType) throws InvalidMov ChessMove whitePromotion = new ChessMove(new ChessPosition(7, 3), new ChessPosition(8, 3), promotionType); game.makeMove(whitePromotion); - Assertions.assertNull(game.getBoard().getPiece(whitePromotion.getStartPosition()), - "After move, a piece is still present in the start position"); + Assertions.assertNull(game.getBoard().getPiece(whitePromotion.getStartPosition()), pieceAtStart); ChessPiece whiteEndPiece = game.getBoard().getPiece(whitePromotion.getEndPosition()); - Assertions.assertNotNull(whiteEndPiece, "After move, no piece found at the end position"); - Assertions.assertEquals(promotionType, whiteEndPiece.getPieceType(), - "Found piece at end position is not the correct piece type"); - Assertions.assertEquals(ChessGame.TeamColor.WHITE, whiteEndPiece.getTeamColor(), - "Found piece at end position is the wrong team color"); + Assertions.assertNotNull(whiteEndPiece, noPieceAtEnd); + Assertions.assertEquals(promotionType, whiteEndPiece.getPieceType(), incorrectType); + Assertions.assertEquals(ChessGame.TeamColor.WHITE, whiteEndPiece.getTeamColor(), incorrectColor); //Black take + promotion @@ -373,13 +377,10 @@ public void promotionMoves(ChessPiece.PieceType promotionType) throws InvalidMov ChessMove blackPromotion = new ChessMove(new ChessPosition(2, 5), new ChessPosition(1, 6), promotionType); game.makeMove(blackPromotion); - Assertions.assertNull(game.getBoard().getPiece(blackPromotion.getStartPosition()), - "After move, a piece is still present in the start position"); + Assertions.assertNull(game.getBoard().getPiece(blackPromotion.getStartPosition()), pieceAtStart); ChessPiece blackEndPiece = game.getBoard().getPiece(blackPromotion.getEndPosition()); - Assertions.assertNotNull(blackEndPiece, "After move, no piece found at the end position"); - Assertions.assertEquals(promotionType, blackEndPiece.getPieceType(), - "Found piece at end position is not the correct piece type"); - Assertions.assertEquals(ChessGame.TeamColor.BLACK, blackEndPiece.getTeamColor(), - "Found piece at end position is the wrong team color"); + Assertions.assertNotNull(blackEndPiece, noPieceAtEnd); + Assertions.assertEquals(promotionType, blackEndPiece.getPieceType(), incorrectType); + Assertions.assertEquals(ChessGame.TeamColor.BLACK, blackEndPiece.getTeamColor(), incorrectColor); } } diff --git a/starter-code/1-chess-game/passoff/chess/game/ValidMovesTests.java b/starter-code/1-chess-game/passoff/chess/game/ValidMovesTests.java index b001f9d..684c133 100644 --- a/starter-code/1-chess-game/passoff/chess/game/ValidMovesTests.java +++ b/starter-code/1-chess-game/passoff/chess/game/ValidMovesTests.java @@ -6,20 +6,21 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import passoff.chess.TestUtilities; -import java.util.HashSet; -import java.util.Set; - -import static passoff.chess.TestUtilities.*; +import java.util.ArrayList; +import java.util.List; public class ValidMovesTests { + private static final String TRAPPED_PIECE_MOVES = "ChessGame validMoves returned valid moves for a trapped piece"; + @Test @DisplayName("Check Forces Movement") public void forcedMove() { var game = new ChessGame(); game.setTeamTurn(ChessGame.TeamColor.BLACK); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | |B| | | | | | | @@ -32,12 +33,12 @@ public void forcedMove() { // Knight moves ChessPosition knightPosition = new ChessPosition(4, 3); - var validMoves = loadMoves(knightPosition, new int[][]{{3, 5}, {6, 2}}); + var validMoves = TestUtilities.loadMoves(knightPosition, new int[][]{{3, 5}, {6, 2}}); assertMoves(game, validMoves, knightPosition); // Queen Moves ChessPosition queenPosition = new ChessPosition(2, 4); - validMoves = loadMoves(queenPosition, new int[][]{{3, 5}, {4, 4}}); + validMoves = TestUtilities.loadMoves(queenPosition, new int[][]{{3, 5}, {4, 4}}); assertMoves(game, validMoves, queenPosition); } @@ -47,7 +48,7 @@ public void forcedMove() { public void moveIntoCheck() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -59,7 +60,7 @@ public void moveIntoCheck() { """)); ChessPosition rookPosition = new ChessPosition(5, 6); - var validMoves = loadMoves(rookPosition, new int[][]{ + var validMoves = TestUtilities.loadMoves(rookPosition, new int[][]{ {5, 7}, {5, 5}, {5, 4}, {5, 3}, {5, 2} }); @@ -71,7 +72,7 @@ public void moveIntoCheck() { public void rookPinnedToKing() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |K| | | | | | |Q| | | | | | | | | | | | | | | | | | | @@ -83,8 +84,7 @@ public void rookPinnedToKing() { """)); ChessPosition position = new ChessPosition(4, 4); - Assertions.assertTrue(game.validMoves(position).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); + Assertions.assertTrue(game.validMoves(position).isEmpty(), TRAPPED_PIECE_MOVES); } @@ -94,7 +94,7 @@ public void kingInDanger() { var game = new ChessGame(); game.setTeamTurn(ChessGame.TeamColor.BLACK); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" |R| | | | | | | | | | | |k| | | |b| | | | | |P| | | | @@ -114,21 +114,16 @@ public void kingInDanger() { ChessPosition rookPosition = new ChessPosition(3, 8); - var validMoves = loadMoves(kingPosition, new int[][]{{6, 5}}); + var validMoves = TestUtilities.loadMoves(kingPosition, new int[][]{{6, 5}}); assertMoves(game, validMoves, kingPosition); //make sure teams other pieces are not allowed to move - Assertions.assertTrue(game.validMoves(pawnPosition).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); - Assertions.assertTrue(game.validMoves(bishopPosition).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); - Assertions.assertTrue(game.validMoves(queenPosition).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); - Assertions.assertTrue(game.validMoves(knightPosition).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); - Assertions.assertTrue(game.validMoves(rookPosition).isEmpty(), - "ChessGame validMoves returned valid moves for a trapped piece"); + Assertions.assertTrue(game.validMoves(pawnPosition).isEmpty(), TRAPPED_PIECE_MOVES); + Assertions.assertTrue(game.validMoves(bishopPosition).isEmpty(), TRAPPED_PIECE_MOVES); + Assertions.assertTrue(game.validMoves(queenPosition).isEmpty(), TRAPPED_PIECE_MOVES); + Assertions.assertTrue(game.validMoves(knightPosition).isEmpty(), TRAPPED_PIECE_MOVES); + Assertions.assertTrue(game.validMoves(rookPosition).isEmpty(), TRAPPED_PIECE_MOVES); } @@ -137,7 +132,7 @@ public void kingInDanger() { public void noPutSelfInDanger() { var game = new ChessGame(); - game.setBoard(loadBoard(""" + game.setBoard(TestUtilities.loadBoard(""" | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -149,7 +144,7 @@ public void noPutSelfInDanger() { """)); ChessPosition position = new ChessPosition(2, 6); - var validMoves = loadMoves(position, new int[][]{ + var validMoves = TestUtilities.loadMoves(position, new int[][]{ {1, 5}, {1, 6}, {1, 7}, {2, 5}, {2, 7}, }); assertMoves(game, validMoves, position); @@ -159,21 +154,19 @@ public void noPutSelfInDanger() { @DisplayName("Valid Moves Independent of Team Turn") public void validMovesOtherTeam() { var game = new ChessGame(); - game.setBoard(defaultBoard()); + game.setBoard(TestUtilities.defaultBoard()); game.setTeamTurn(ChessGame.TeamColor.BLACK); ChessPosition position = new ChessPosition(2, 5); - var validMoves = loadMoves(position, new int[][]{ + var validMoves = TestUtilities.loadMoves(position, new int[][]{ {3, 5}, {4, 5} }); assertMoves(game, validMoves, position); } - public static void assertMoves(ChessGame game, Set validMoves, ChessPosition position) { + private static void assertMoves(ChessGame game, List validMoves, ChessPosition position) { var generatedMoves = game.validMoves(position); - var actualMoves = new HashSet<>(generatedMoves); - Assertions.assertEquals(generatedMoves.size(), actualMoves.size(), "Duplicate move"); - Assertions.assertEquals(validMoves, actualMoves, - "ChessGame validMoves did not return the correct moves"); + var actualMoves = new ArrayList<>(generatedMoves); + TestUtilities.validateMoves(validMoves, actualMoves); } } From ff401fc469e077489e084170cccbae0fea63cdd8 Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:19:07 -0700 Subject: [PATCH 5/6] update StandardAPITests --- .../passoff/server/StandardAPITests.java | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/starter-code/3-web-api/passoff/server/StandardAPITests.java b/starter-code/3-web-api/passoff/server/StandardAPITests.java index 67037fd..8712a4e 100644 --- a/starter-code/3-web-api/passoff/server/StandardAPITests.java +++ b/starter-code/3-web-api/passoff/server/StandardAPITests.java @@ -7,8 +7,7 @@ import java.net.HttpURLConnection; import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; +import java.util.Comparator; import java.util.Locale; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @@ -57,12 +56,13 @@ public void setup() { @Test @Order(1) @DisplayName("Static Files") - public void staticFiles() throws Exception { + public void staticFiles() { String htmlFromServer = serverFacade.file("/").replaceAll("\r", ""); Assertions.assertEquals(HttpURLConnection.HTTP_OK, serverFacade.getStatusCode(), "Server response code was not 200 OK"); Assertions.assertNotNull(htmlFromServer, "Server returned an empty file"); - Assertions.assertTrue(htmlFromServer.contains("CS 240 Chess Server Web API")); + Assertions.assertTrue(htmlFromServer.contains("CS 240 Chess Server Web API"), + "file returned did not contain an exact match of text from provided index.html"); } @Test @@ -200,9 +200,11 @@ public void goodJoin() { TestListResult listResult = serverFacade.listGames(existingAuth); - Assertions.assertEquals(1, listResult.getGames().length); - Assertions.assertEquals(existingUser.getUsername(), listResult.getGames()[0].getWhiteUsername()); - Assertions.assertNull(listResult.getGames()[0].getBlackUsername()); + Assertions.assertNotNull(listResult.getGames(), "List result did not contain games"); + Assertions.assertEquals(1, listResult.getGames().length, "List result is incorrect size"); + Assertions.assertEquals(existingUser.getUsername(), listResult.getGames()[0].getWhiteUsername(), + "Username of joined player not present in list result"); + Assertions.assertNull(listResult.getGames()[0].getBlackUsername(), "Username present on non-joined color"); } @Test @@ -224,15 +226,13 @@ public void badAuthJoin() { @Order(11) @DisplayName("Join Bad Team Color") public void badColorJoin() { - //create game TestCreateResult createResult = serverFacade.createGame(createRequest, existingAuth); + int gameID = createResult.getGameID(); - //try join as white - TestJoinRequest joinRequest = new TestJoinRequest(null, createResult.getGameID()); - TestResult joinResult = serverFacade.joinPlayer(joinRequest, existingAuth); - - //check - assertHttpBadRequest(joinResult); + //If you use deserialize to the TeamColor enum instead of a String each of these will be read as null + for(String color : new String[]{null, "", "GREEN"}) { + assertHttpBadRequest(serverFacade.joinPlayer(new TestJoinRequest(color, gameID), existingAuth)); + } } @Test @@ -262,7 +262,7 @@ public void stealColorJoin() { public void badGameIDJoin() { //create game createRequest = new TestCreateRequest("Bad Join"); - TestCreateResult createResult = serverFacade.createGame(createRequest, existingAuth); + serverFacade.createGame(createRequest, existingAuth); //try join as white TestJoinRequest joinRequest = new TestJoinRequest(ChessGame.TeamColor.WHITE, null); @@ -279,8 +279,8 @@ public void noGamesList() { TestListResult result = serverFacade.listGames(existingAuth); assertHttpOk(result); - Assertions.assertTrue(result.getGames() == null || result.getGames().length == 0, - "Found games when none should be there"); + Assertions.assertNotNull(result.getGames(), "List result did not contain an empty game list"); + Assertions.assertEquals(0, result.getGames().length, "Found games when none should be there"); } @Test @@ -297,20 +297,20 @@ public void gamesList() { TestAuthResult authC = serverFacade.register(userC); //create games - Collection expectedList = new HashSet<>(); + TestListEntry[] expectedList = new TestListEntry[4]; //1 as black from A String game1Name = "I'm numbah one!"; TestCreateResult game1 = serverFacade.createGame(new TestCreateRequest(game1Name), authA.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.BLACK, game1.getGameID()), authA.getAuthToken()); - expectedList.add(new TestListEntry(game1.getGameID(), game1Name, null, authA.getUsername())); + expectedList[0] = new TestListEntry(game1.getGameID(), game1Name, null, authA.getUsername()); //1 as white from B String game2Name = "Lonely"; TestCreateResult game2 = serverFacade.createGame(new TestCreateRequest(game2Name), authB.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.WHITE, game2.getGameID()), authB.getAuthToken()); - expectedList.add(new TestListEntry(game2.getGameID(), game2Name, authB.getUsername(), null)); + expectedList[1] = new TestListEntry(game2.getGameID(), game2Name, authB.getUsername(), null); //1 of each from C @@ -318,7 +318,7 @@ public void gamesList() { TestCreateResult game3 = serverFacade.createGame(new TestCreateRequest(game3Name), authC.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.WHITE, game3.getGameID()), authC.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.BLACK, game3.getGameID()), authA.getAuthToken()); - expectedList.add(new TestListEntry(game3.getGameID(), game3Name, authC.getUsername(), authA.getUsername())); + expectedList[2] = new TestListEntry(game3.getGameID(), game3Name, authC.getUsername(), authA.getUsername()); //C play self @@ -326,16 +326,20 @@ public void gamesList() { TestCreateResult game4 = serverFacade.createGame(new TestCreateRequest(game4Name), authC.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.WHITE, game4.getGameID()), authC.getAuthToken()); serverFacade.joinPlayer(new TestJoinRequest(ChessGame.TeamColor.BLACK, game4.getGameID()), authC.getAuthToken()); - expectedList.add(new TestListEntry(game4.getGameID(), game4Name, authC.getUsername(), authC.getUsername())); + expectedList[3] = new TestListEntry(game4.getGameID(), game4Name, authC.getUsername(), authC.getUsername()); //list games TestListResult listResult = serverFacade.listGames(existingAuth); assertHttpOk(listResult); - Collection returnedList = new HashSet<>(Arrays.asList(listResult.getGames())); + TestListEntry[] returnedList = listResult.getGames(); + Assertions.assertNotNull(returnedList, "List result did not contain a list of games"); + Comparator gameIdComparator = Comparator.comparingInt(TestListEntry::getGameID); + Arrays.sort(expectedList, gameIdComparator); + Arrays.sort(returnedList, gameIdComparator); //check - Assertions.assertEquals(expectedList, returnedList, "Returned Games list was incorrect"); + Assertions.assertArrayEquals(expectedList, returnedList, "Returned Games list was incorrect"); } @Test @@ -347,8 +351,7 @@ public void uniqueAuthorizationTokens() { Assertions.assertNotNull(loginOne.getAuthToken(), "Login result did not contain an authToken"); TestAuthResult loginTwo = serverFacade.login(existingUser); - Assertions.assertEquals(HttpURLConnection.HTTP_OK, serverFacade.getStatusCode(), - "Server response code was not 200 OK"); + assertHttpOk(loginTwo); Assertions.assertNotNull(loginTwo.getAuthToken(), "Login result did not contain an authToken"); Assertions.assertNotEquals(existingAuth, loginOne.getAuthToken(), @@ -374,8 +377,10 @@ public void uniqueAuthorizationTokens() { TestListResult listResult = serverFacade.listGames(loginTwo.getAuthToken()); assertHttpOk(listResult); - Assertions.assertEquals(1, listResult.getGames().length); - Assertions.assertEquals(existingUser.getUsername(), listResult.getGames()[0].getWhiteUsername()); + Assertions.assertNotNull(listResult.getGames(), "List result did not contain games"); + Assertions.assertEquals(1, listResult.getGames().length, "List result contains incorrect number of games"); + Assertions.assertEquals(existingUser.getUsername(), listResult.getGames()[0].getWhiteUsername(), + "incorrect username on joined game"); } @Test @@ -423,6 +428,7 @@ public void clearData() { assertHttpOk(listResult); //check listResult + Assertions.assertNotNull(listResult.getGames(), "List result did not contain an empty list of games"); Assertions.assertEquals(0, listResult.getGames().length, "list result did not return 0 games after clear"); } @@ -463,9 +469,9 @@ private void assertHttpForbidden(TestResult result) { private void assertHttpError(TestResult result, int statusCode, String message) { Assertions.assertEquals(statusCode, serverFacade.getStatusCode(), "Server response code was not %d %s (message: %s)".formatted(statusCode, message, result.getMessage())); - Assertions.assertTrue(result.getMessage() != null && - result.getMessage().toLowerCase(Locale.ROOT).contains("error"), - "Invalid Request didn't return an error message"); + Assertions.assertNotNull(result.getMessage(), "Invalid Request didn't return an error message"); + Assertions.assertTrue(result.getMessage().toLowerCase(Locale.ROOT).contains("error"), + "Error message didn't contain the word \"Error\""); } private void assertAuthFieldsMissing(TestAuthResult result) { From 402f46de913743af80e73aa03fce315aceb65c65 Mon Sep 17 00:00:00 2001 From: Michael Davenport Date: Tue, 26 Nov 2024 18:22:15 -0700 Subject: [PATCH 6/6] update WebSocketTests fix ordering --- .../passoff/server/WebSocketTests.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/starter-code/6-gameplay/passoff/server/WebSocketTests.java b/starter-code/6-gameplay/passoff/server/WebSocketTests.java index 10e367a..462a0bd 100644 --- a/starter-code/6-gameplay/passoff/server/WebSocketTests.java +++ b/starter-code/6-gameplay/passoff/server/WebSocketTests.java @@ -74,7 +74,7 @@ public void connectGood() { } @Test - @Order(2) + @Order(3) @DisplayName("Connect Bad GameID") public void connectBadGameID() { connectToGame(white, gameID + 1, false, Set.of(), Set.of()); //player connect with an incorrect game id @@ -82,7 +82,7 @@ public void connectBadGameID() { } @Test - @Order(2) + @Order(3) @DisplayName("Connect Bad AuthToken") public void connectBadAuthToken() { connectToGame(new WebsocketUser(black.username(), "badAuth"), gameID, false, Set.of(), Set.of()); @@ -90,7 +90,7 @@ public void connectBadAuthToken() { } @Test - @Order(3) + @Order(4) @DisplayName("Normal Make Move") public void validMove() { setupNormalGame(); @@ -101,7 +101,7 @@ public void validMove() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Move Bad Authtoken") public void makeMoveBadAuthtoken() { setupNormalGame(); @@ -112,7 +112,7 @@ public void makeMoveBadAuthtoken() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Invalid Move") public void invalidMoveBadMove() { setupNormalGame(); @@ -123,7 +123,7 @@ public void invalidMoveBadMove() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Move Wrong Turn") public void invalidMoveWrongTurn() { setupNormalGame(); @@ -134,7 +134,7 @@ public void invalidMoveWrongTurn() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Move for Opponent") public void invalidMoveOpponent() { setupNormalGame(); @@ -145,7 +145,7 @@ public void invalidMoveOpponent() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Move Observer") public void invalidMoveObserver() { setupNormalGame(); @@ -156,7 +156,7 @@ public void invalidMoveObserver() { } @Test - @Order(4) + @Order(5) @DisplayName("Make Move Game Over") public void invalidMoveGameOver() { setupNormalGame(); @@ -176,7 +176,7 @@ public void invalidMoveGameOver() { } @Test - @Order(5) + @Order(6) @DisplayName("Normal Resign") public void validResign() { setupNormalGame(); @@ -184,7 +184,7 @@ public void validResign() { } @Test - @Order(6) + @Order(7) @DisplayName("Cannot Move After Resign") public void moveAfterResign() { setupNormalGame(); @@ -196,7 +196,7 @@ public void moveAfterResign() { } @Test - @Order(6) + @Order(7) @DisplayName("Observer Resign") public void invalidResignObserver() { setupNormalGame(); @@ -206,7 +206,7 @@ public void invalidResignObserver() { } @Test - @Order(6) + @Order(7) @DisplayName("Double Resign") public void invalidResignGameOver() { setupNormalGame(); @@ -217,7 +217,7 @@ public void invalidResignGameOver() { } @Test - @Order(7) + @Order(8) @DisplayName("Leave Game") public void leaveGame() { setupNormalGame(); @@ -230,7 +230,7 @@ public void leaveGame() { } @Test - @Order(8) + @Order(9) @DisplayName("Join After Leave Game") public void joinAfterLeaveGame() { setupNormalGame(); @@ -249,7 +249,7 @@ public void joinAfterLeaveGame() { } @Test - @Order(9) + @Order(10) @DisplayName("Multiple Concurrent Games") public void multipleConcurrentGames() { setupNormalGame();