Example #1
0
        public void WhitePawnOnStartingPositionShouldHaveTwoPossibleMoves()
        {
            //WP - white pawn
            //PM - possible move
            //7
            //6
            //5
            //4
            //3          PM
            //2          PM
            //1          WP
            //0
            //  0  1  2  3  4  5  6  7
            var boardMock     = new Mock <IChessBoard>(MockBehavior.Strict);
            var pawnMock      = new Mock <IReadOnlyChessPiece>(MockBehavior.Strict);
            var piecePosition = new Position(3, 1);

            var availableFinishPosition1 = new Position(3, 2);
            var availableFinishPosition2 = new Position(3, 3);

            pawnMock
            .SetupGet(p => p.Color)
            .Returns(ChessColor.White);
            pawnMock
            .SetupGet(p => p.PieceType)
            .Returns(ChessPieceType.Pawn);
            pawnMock
            .SetupGet(p => p.Position)
            .Returns(piecePosition);
            pawnMock
            .SetupGet(p => p.HasMoved)
            .Returns(false);

            boardMock
            .Setup(b => b.IsPositionTaken(availableFinishPosition1))
            .Returns(false);
            boardMock
            .Setup(b => b.IsPositionTaken(availableFinishPosition2))
            .Returns(false);
            boardMock
            .Setup(b => b.IsEnemyOnPosition(It.IsAny <Position>(), It.IsAny <ChessColor>()))
            .Returns(false);

            var movement       = new PawnMovement(boardMock.Object);
            var availableMoves = movement.GetAvailableMoves(pawnMock.Object);

            Assert.AreEqual(2, availableMoves.Count());
            Assert.IsTrue(availableMoves
                          .Any(m =>
                               m.StartingPosition == piecePosition &&
                               m.FinishedPosition == availableFinishPosition1
                               ));
            Assert.IsTrue(availableMoves
                          .Any(m =>
                               m.StartingPosition == piecePosition &&
                               m.FinishedPosition == availableFinishPosition2
                               ));
        }
Example #2
0
        public void WhenThereIsPieceBlockingSecondPositionThereShouldBeOnlyOnePossibleMove()
        {
            //BP - black pawn
            //PM - possible move
            //SC - Some chess piece
            //7
            //6             BP
            //5             PM
            //4             SC
            //3
            //2
            //1
            //0
            //  0  1  2  3  4  5  6  7
            var boardMock     = new Mock <IChessBoard>(MockBehavior.Strict);
            var pawnMock      = new Mock <IReadOnlyChessPiece>(MockBehavior.Strict);
            var piecePosition = new Position(4, 6);

            var availableFinishPosition   = new Position(4, 5);
            var unavailableFinishPosition = new Position(4, 4);

            pawnMock
            .SetupGet(p => p.Color)
            .Returns(ChessColor.Black);
            pawnMock
            .SetupGet(p => p.PieceType)
            .Returns(ChessPieceType.Pawn);
            pawnMock
            .SetupGet(p => p.Position)
            .Returns(piecePosition);
            pawnMock
            .SetupGet(p => p.HasMoved)
            .Returns(false);

            boardMock
            .Setup(b => b.IsPositionTaken(availableFinishPosition))
            .Returns(false);
            boardMock
            .Setup(b => b.IsPositionTaken(unavailableFinishPosition))
            .Returns(true);
            boardMock
            .Setup(b => b.IsEnemyOnPosition(It.IsAny <Position>(), It.IsAny <ChessColor>()))
            .Returns(false);

            var movement       = new PawnMovement(boardMock.Object);
            var availableMoves = movement.GetAvailableMoves(pawnMock.Object);

            Assert.AreEqual(1, availableMoves.Count());
            Assert.IsTrue(availableMoves
                          .Any(m =>
                               m.StartingPosition == piecePosition &&
                               m.FinishedPosition == availableFinishPosition
                               ));
        }
 void Awake()
 {
     pawnMovement = GetComponent<PawnMovement>();
 }
Example #4
0
 void Awake()
 {
     movement = new PawnMovement();
 }
Example #5
0
        public void WhenThereIsEnemyStandingInDiagonalFrontOfPawnThereShouldBeCaptureMove()
        {
            //BP - black pawn
            //PM - possible move
            //EP - enemy piece
            //7
            //6
            //5
            //4                      BP
            //3                   EC PM
            //2
            //1
            //0
            //  0  1  2  3  4  5  6  7
            var boardMock     = new Mock <IChessBoard>(MockBehavior.Strict);
            var pawnMock      = new Mock <IReadOnlyChessPiece>(MockBehavior.Strict);
            var piecePosition = new Position(7, 4);

            var availableFinishPosition = new Position(7, 3);
            var enemyPosition           = new Position(6, 3);

            pawnMock
            .SetupGet(p => p.Color)
            .Returns(ChessColor.Black);
            pawnMock
            .SetupGet(p => p.PieceType)
            .Returns(ChessPieceType.Pawn);
            pawnMock
            .SetupGet(p => p.Position)
            .Returns(piecePosition);
            pawnMock
            .SetupGet(p => p.HasMoved)
            .Returns(true);

            boardMock
            .Setup(b => b.IsPositionTaken(availableFinishPosition))
            .Returns(false);
            boardMock
            .Setup(b => b.IsPositionTaken(enemyPosition))
            .Returns(true);
            boardMock
            .Setup(b => b.IsEnemyOnPosition(enemyPosition, ChessColor.White))
            .Returns(true);
            boardMock
            .Setup(b => b.IsEnemyOnPosition(
                       It.IsNotIn <Position>(new List <Position>()
            {
                enemyPosition
            }), ChessColor.White))
            .Returns(false);

            var movement       = new PawnMovement(boardMock.Object);
            var availableMoves = movement.GetAvailableMoves(pawnMock.Object);

            Assert.AreEqual(2, availableMoves.Count());
            Assert.IsTrue(availableMoves
                          .Any(m =>
                               m.StartingPosition == piecePosition &&
                               m.FinishedPosition == availableFinishPosition
                               ));
            Assert.IsTrue(availableMoves
                          .Any(m =>
                               m.StartingPosition == piecePosition &&
                               m.FinishedPosition == enemyPosition
                               ));
        }
Example #6
0
 void Start()
 {
     FindObjectOfType<PlayerPanelGrid>().FillEmptyPanel(this);
     pawnMovement = GetComponent<PawnMovement>();
 }
Example #7
0
 public void SwitchCharacter()
 {
     CurrentPawnMover   = CurrentPawnMover.OpposingPawnMover;
     CurrentHandManager = CurrentHandManager.OpposingCardHoldingManager;
 }
Example #8
0
 // Start is called before the first frame update
 void Start()
 {
     // Get Components
     data     = GetComponent <PawnData>();
     movement = GetComponent <PawnMovement>();
 }