public void ShouldSuggestMovablePositionsBetweenTurns() { var game = new Game(new Board(3, 3, _ => false)); game.Board[new Position(0, 0)].Piece = InitialSetup.CreatePiece(1, game.Players[0]); game.Board[new Position(0, 1)].Piece = InitialSetup.CreatePiece(1, game.Players[0]); game.Board[new Position(1, 0)].Piece = InitialSetup.CreatePiece(1, game.Players[0]); game.Board[new Position(2, 2)].Piece = InitialSetup.CreatePiece(1, game.Players[1]); game.Board[new Position(2, 1)].Piece = InitialSetup.CreatePiece(1, game.Players[1]); game.Board[new Position(1, 2)].Piece = InitialSetup.CreatePiece(1, game.Players[1]); IEnumerable <Position> GetMovablePositions() => game.Board.Cells.Where(c => game.IsMovable(c.Position)).Select(c => c.Position); GetMovablePositions().Should().BeEquivalentTo(new[] { new Position(0, 1), new Position(1, 0) }); game.Move(new Position(0, 1), new Position(1, 1)); GetMovablePositions().Should().BeEquivalentTo(new[] { new Position(2, 1), new Position(1, 2) }); game.Move(new Position(2, 1), new Position(2, 0)); GetMovablePositions().Should().BeEquivalentTo(new[] { new Position(0, 0), new Position(1, 1), new Position(1, 0) }); game.Move(new Position(1, 0), new Position(2, 0)); GetMovablePositions().Should().BeEquivalentTo(new[] { new Position(2, 2), new Position(1, 2) }); }
static void ForAll(Action <Piece> test) { for (var i = 1; i <= 10; i++) { if (i != Scout.Rank) { test(InitialSetup.CreatePiece(i, null)); } } }
public void ShouldNotAllowInvalidMoves() { var game = new Game(new Board(3, 4, _ => false)); game.Board[new Position(1, 0)].Piece = InitialSetup.CreatePiece(1, game.Players[0]); game.Board[new Position(2, 2)].Piece = InitialSetup.CreatePiece(1, game.Players[1]); foreach (var from in game.Board.Cells.Select(c => c.Position)) { foreach (var to in game.Board.Cells.Select(c => c.Position).Except(game.GetPossibleMoves(from))) { to.Invoking(p => game.Move(from, p)).ShouldThrow <InvalidOperationException>(); } } }
public void ShouldMove() { for (var rank = Spy.Rank; rank <= OtherPiece.MarshalRank; rank++) { var game = new Game(Board.CreateStandard()); var piece = InitialSetup.CreatePiece(rank, game.Players[0]); var p1 = new Position(0, 0); var p2 = new Position(1, 0); game.Board[p1].Piece = piece; game.Move(p1, p2); game.Board[p1].Piece.Should().BeNull(); game.Board[p2].Piece.Should().Be(piece); } }