Esempio n. 1
0
        public void Test_BeatHandler_ReturnsPossibleMovesCorrectly_WhenMoverIsQueen()
        {
            BoardIndex e3    = BoardIndex.Parse("e3");
            BoardIndex c5    = BoardIndex.Parse("c5");
            Checker    white = new Checker(PlayerType.White)
            {
                IsQueen = true
            };
            Checker black = new Checker(PlayerType.Black)
            {
                IsQueen = false
            };

            board[e3.Row, e3.Col] = white;
            board[c5.Row, c5.Col] = black;
            BeatHandler beatHandler = new BeatHandler(board);
            var         moves       = beatHandler.GetMoves(c5, new List <BoardIndex>()
            {
                e3
            });
            var expectedMoves = new List <BoardIndex>
            {
                BoardIndex.Parse("b6"),
                BoardIndex.Parse("a7")
            };

            Assert.AreEqual(expectedMoves, moves);
        }
Esempio n. 2
0
        public void TestBeatHandler_CannotBeatThroughtTheAlly()
        {
            BoardIndex g1    = BoardIndex.Parse("g1");
            BoardIndex e3    = BoardIndex.Parse("e3");
            BoardIndex c5    = BoardIndex.Parse("c5");
            Checker    white = new Checker(PlayerType.White)
            {
                IsQueen = true
            };
            Checker white2 = new Checker(PlayerType.White)
            {
                IsQueen = false
            };
            Checker black2 = new Checker(PlayerType.Black)
            {
                IsQueen = false
            };

            board[g1.Row, g1.Col] = white;
            board[e3.Row, e3.Col] = white2;
            board[c5.Row, c5.Col] = black2;
            BeatHandler beatHandler = new BeatHandler(board);
            var         moves       = beatHandler.GetMoves(g1, new List <BoardIndex> {
                g1
            });

            Assert.AreEqual(new List <BoardIndex>(), moves);
        }
Esempio n. 3
0
        public void Test_FirstMoveDoneHandler_ReturnMovesThatAllowsToBeat()
        {
            BoardIndex e3    = BoardIndex.Parse("e3");
            BoardIndex d4    = BoardIndex.Parse("d4");
            BoardIndex c5    = BoardIndex.Parse("c5");
            BoardIndex b6    = BoardIndex.Parse("b6");
            BoardIndex a7    = BoardIndex.Parse("a7");
            Checker    white = new Checker(PlayerType.White)
            {
                IsQueen = false
            };
            Checker black1 = new Checker(PlayerType.Black)
            {
                IsQueen = false
            };

            board[e3.Row, e3.Col] = white;
            board[d4.Row, d4.Col] = black1;
            board[b6.Row, b6.Col] = black1;
            FirstMoveDoneHandler firstMoveDoneHandler = new FirstMoveDoneHandler(board);
            var moves = firstMoveDoneHandler.GetMoves(c5, new List <BoardIndex> {
                e3, c5
            });

            Assert.AreEqual(new List <BoardIndex>()
            {
                a7
            }, moves);
        }
        public void Test_ParseReturnsSameBoardIndex([Values(0, 1, 2, 3, 4, 5, 6, 7)] int x, [Values(0, 1, 2, 3, 4, 5, 6, 7)] int y)
        {
            var    index = new BoardIndex(x, y);
            string str   = index.ToString();
            var    res   = BoardIndex.Parse(str);

            Assert.AreEqual(index.Row, res.Row);
            Assert.AreEqual(index.Col, res.Col);
        }
Esempio n. 5
0
        public void Test_HasOpponentInBetween_DiffIsMoreThanOne()
        {
            BoardIndex e3    = BoardIndex.Parse("e3");
            BoardIndex d4    = BoardIndex.Parse("d4");
            BoardIndex b6    = BoardIndex.Parse("b6");
            Checker    black = new Checker(PlayerType.Black)
            {
                IsQueen = false
            };

            board[d4.Row, d4.Col] = black;
            FirstMoveDoneHandler firstMoveDoneHandler = new FirstMoveDoneHandler(board);
            bool actual = firstMoveDoneHandler.HasOpponentInBetween(PlayerType.White, e3, b6);

            Assert.IsTrue(actual);
        }
Esempio n. 6
0
        public void Test_FirstMoveDoneHandler_ReturnEmptyMoves_When_CannotBeat_AfterMove()
        {
            BoardIndex e3    = BoardIndex.Parse("e3");
            BoardIndex d4    = BoardIndex.Parse("d4");
            BoardIndex c5    = BoardIndex.Parse("c5");
            BoardIndex b6    = BoardIndex.Parse("b6");
            Checker    white = new Checker(PlayerType.White)
            {
                IsQueen = false
            };
            Checker black = new Checker(PlayerType.Black)
            {
                IsQueen = false
            };

            board[e3.Row, e3.Col] = white;
            board[b6.Row, b6.Col] = black;
            FirstMoveDoneHandler firstMoveDoneHandler = new FirstMoveDoneHandler(board);
            var moves = firstMoveDoneHandler.GetMoves(c5, new List <BoardIndex> {
                e3, d4
            });

            Assert.AreEqual(new List <BoardIndex>(), moves);
        }
Esempio n. 7
0
        private void OnMessageRecieved(MessageType messageType, string message)
        {
            switch (messageType)
            {
            case MessageType.StartGame:
            {
                GameStarted?.Invoke();
                break;
            }

            case MessageType.PlayerType:
            {
                PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                PlayerTypeRecieved?.Invoke(playerType);
                break;
            }

            case MessageType.Step:
            {
                string[]   moves = message.Split(',');
                BoardIndex from  = BoardIndex.Parse(moves[0]);
                BoardIndex to    = BoardIndex.Parse(moves[1]);
                MoveRecieved?.Invoke(from, to);
                break;
            }

            case MessageType.TurnEnd:
            {
                TurnEnded?.Invoke();
                break;
            }

            case MessageType.StartTurn:
            {
                PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                TurnStarted?.Invoke(playerType);
                break;
            }

            case MessageType.QueenAppeared:
            {
                BoardIndex where = BoardIndex.Parse(message);
                QueenAppeared?.Invoke(where);
                break;
            }

            case MessageType.Result:
            {
                PlayerType winner = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                ResultRecieved?.Invoke(winner);
                break;
            }

            case MessageType.Name:
            {
                OpponentName?.Invoke(message);
                break;
            }

            case MessageType.TextMessage:
            {
                TextMessageRecieved?.Invoke(message);
                break;
            }
            }
        }