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); }
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); }
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); }
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); }
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); }
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; } } }