public void ToLeftSideOfOpponent()
        {
            player1.CurrentPosition = c[5, 5];
            player2.CurrentPosition = c[5, 6];

            var wallBehind = new Wall("56h");
            var rejectedWallsByWallBehind = game.GetWallsRejectedBy(wallBehind);
            //Assert.That(rejectedWallsByWallBehind.Length == 4);

            var placeWallBehindMove = new PlaceWallMove(game, player1, wallBehind, rejectedWallsByWallBehind);

            placeWallBehindMove.Apply();

            var wallOnTheRight = new Wall("55v");
            var rejectedWallsByWallOnTheRight = game.GetWallsRejectedBy(wallOnTheRight);
            //Assert.That(rejectedWallsByWallOnTheRight.Length == 3);

            var placeWallOnTheRightMove = new PlaceWallMove(game, player1, wallOnTheRight, rejectedWallsByWallOnTheRight);

            placeWallOnTheRightMove.Apply();

            Console.WriteLine(game);

            var answer = new[] { c[4, 5], c[5, 4], c[4, 6] };

            Assert.That(player1.GetPossiblePawnMoves().Select(move => move.To), Is.EquivalentTo(answer));
        }
        public void Test1()
        {
            player1.CurrentPosition = c[5, 7];
            player2.CurrentPosition = c[5, 5];

            var wallDescriptions = new[] { "13h", "33h", "53h", "63v", "62h" };

            foreach (var wallDescription in wallDescriptions)
            {
                var wall          = new Wall(wallDescription);
                var rejectedWalls = game.GetWallsRejectedBy(wall);

                var placeWallMove = new PlaceWallMove(game, player1, wall, rejectedWalls);
                placeWallMove.Apply();
            }

            Console.WriteLine(game);

            Assert.That(player1.GetPossiblePlaceWallMoves()
                        .Select(move => move.PlacedWall)
                        .Contains(new Wall("82h")), Is.False);

            Assert.That(player1.GetPossiblePlaceWallMoves()
                        .Select(move => move.PlacedWall)
                        .Contains(new Wall("82v")), Is.True);
        }
Example #3
0
        public void WithJumpAtTheStart()
        {
            player1.CurrentPosition = c[5, 5];
            player2.CurrentPosition = c[5, 6];

            var wallBehind = new Wall("56h");
            var rejectedWallsByWallBehind = game.GetWallsRejectedBy(wallBehind);
            //Assert.That(rejectedWallsByWallBehind.Length == 4);

            var placeWallBehindMove = new PlaceWallMove(game, player1, wallBehind, rejectedWallsByWallBehind);

            placeWallBehindMove.Apply();

            var wallOnTheRight = new Wall("55v");
            var rejectedWallsByWallOnTheRight = game.GetWallsRejectedBy(wallOnTheRight);
            //Assert.That(rejectedWallsByWallOnTheRight.Length == 3);

            var placeWallOnTheRightMove = new PlaceWallMove(game, player1, wallOnTheRight, rejectedWallsByWallOnTheRight);

            placeWallOnTheRightMove.Apply();

            Console.WriteLine(game);

            Assert.That(player1.GetShortestPathLength(), Is.EqualTo(4));
            Assert.That(player2.GetShortestPathLength(), Is.EqualTo(4));
        }
Example #4
0
        public void PathDoesNotExist()
        {
            var wallDescriptions = new [] { "12h", "32h", "52h", "72h", "81v" };

            foreach (var wallDescription in wallDescriptions)
            {
                var wall          = new Wall(wallDescription);
                var rejectedWalls = game.GetWallsRejectedBy(wall);

                var placeWallMove = new PlaceWallMove(game, player1, wall, rejectedWalls);
                placeWallMove.Apply();
            }

            Console.WriteLine(game);

            Assert.That(player1.GetShortestPathLength(), Is.EqualTo(int.MaxValue));
        }
        public void ToBothSidesOfOpponent()
        {
            player1.CurrentPosition = c[5, 5];
            player2.CurrentPosition = c[5, 6];

            var wallBehind    = new Wall("56h");
            var rejectedWalls = game.GetWallsRejectedBy(wallBehind);

            var placeWallBehindMove = new PlaceWallMove(game, player1, wallBehind, rejectedWalls);

            placeWallBehindMove.Apply();

            Console.WriteLine(game);

            var answer = new[] { c[4, 5], c[5, 4], c[6, 5], c[4, 6], c[6, 6] };

            Assert.That(player1.GetPossiblePawnMoves().Select(move => move.To), Is.EquivalentTo(answer));
        }
Example #6
0
        public void TrickyPath()
        {
            player1.CurrentPosition = c[5, 5];

            var wallDescriptions = new[] { "55h", "44v", "65v", "77h", "46h" };

            foreach (var wallDescription in wallDescriptions)
            {
                var wall          = new Wall(wallDescription);
                var rejectedWalls = game.GetWallsRejectedBy(wall);

                var placeWallMove = new PlaceWallMove(game, player1, wall, rejectedWalls);
                placeWallMove.Apply();
            }

            Console.WriteLine(game);

            Assert.That(player1.GetShortestPathLength(), Is.EqualTo(9));
        }