Esempio n. 1
0
        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) });
        }
Esempio n. 2
0
 static void ForAll(Action <Piece> test)
 {
     for (var i = 1; i <= 10; i++)
     {
         if (i != Scout.Rank)
         {
             test(InitialSetup.CreatePiece(i, null));
         }
     }
 }
Esempio n. 3
0
        public void ShouldSetup()
        {
            var game  = new Game(Board.CreateStandard());
            var setup = KnownSetups.VincentDeboer;

            for (var player = 0; player <= 1; player++)
            {
                InitialSetup.Setup(game, setup, player: player);
                Validation.ValidatePlayerSetup(game, setup, player: player);
            }
        }
Esempio n. 4
0
        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>();
                }
            }
        }
Esempio n. 5
0
        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);
            }
        }