Exemplo n.º 1
0
        public void TestShotFired()
        {
            var coordinateReader = new MockCoordinatesReader();
            var console          = new MockConsoleWrapper();
            var ship             = new Ship("player1", 3, coordinateReader, console);

            ship.CoordinatesList.Add(new Coordinates('A', 3));
            ship.CoordinatesList.Add(new Coordinates('A', 2));
            ship.CoordinatesList.Add(new Coordinates('A', 1));

            ship.CoordinatesList.Count.ShouldBe(3);
            ship.ShotFired(new Coordinates('A', 3)).ShouldBe(true);
            ship.ShotFired(new Coordinates('A', 4)).ShouldBe(false);
            ship.ShotFired(new Coordinates('B', 3)).ShouldBe(false);
        }
Exemplo n.º 2
0
        public void TestAddMissedShot()
        {
            var coordinateReader = new MockCoordinatesReader();
            var console          = new MockConsoleWrapper();
            var ship             = new Ship("player1", 3, coordinateReader, console);

            ship.CoordinatesList.Add(new Coordinates('A', 3));
            ship.CoordinatesList.Add(new Coordinates('A', 2));
            ship.CoordinatesList.Add(new Coordinates('A', 1));

            ship.CoordinatesList.Count.ShouldBe(3);

            ship.AddMissedShot(new Coordinates('B', 3)).ShouldBe(true);
            ship.AddMissedShot(new Coordinates('B', 2)).ShouldBe(true);

            ship.MissedShotsCount().ShouldBe(2);
        }
Exemplo n.º 3
0
        public void TestInitilizeVerticalShip()
        {
            var coordinateReader = new MockCoordinatesReader();
            var console          = new MockConsoleWrapper();
            var ship             = new Ship("player1", 3, coordinateReader, console);

            coordinateReader.MockReadShipCoordinates += (o, p) =>
            {
                return(new Coordinates('A', 3));
            };

            console.MockReadLine += () =>
            {
                return("1");
            };

            ship.InitilizeShip().ShouldBeTrue();
            ship.CoordinatesList.Count.ShouldBe(3);
            ship.Orientation.ShouldBe(Enums.Orientation.Vertical);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'A' && x.YCoordinate == 3).ShouldBe(true);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'A' && x.YCoordinate == 2).ShouldBe(true);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'A' && x.YCoordinate == 1).ShouldBe(true);
        }
Exemplo n.º 4
0
        public void TestInitilizeHorizontalShip()
        {
            var coordinateReader = new MockCoordinatesReader();
            var console          = new MockConsoleWrapper();
            var ship             = new Ship("player1", 3, coordinateReader, console);

            coordinateReader.MockReadShipCoordinates += (o, p) =>
            {
                return(new Coordinates('H', 8));
            };

            console.MockReadLine += () =>
            {
                return("2");
            };

            ship.InitilizeShip().ShouldBeTrue();
            ship.CoordinatesList.Count.ShouldBe(3);
            ship.Orientation.ShouldBe(Enums.Orientation.Horizontal);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'H' && x.YCoordinate == 8).ShouldBe(true);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'G' && x.YCoordinate == 8).ShouldBe(true);
            ship.CoordinatesList.Any(x => x.XCoordinate == 'F' && x.YCoordinate == 8).ShouldBe(true);
        }
Exemplo n.º 5
0
        public void TestBoard()
        {
            var coordinateReader = new MockCoordinatesReader();
            var console          = new MockConsoleWrapper();
            var ship             = new MockShip();

            IBoard board  = new Board("player 1");
            var    matrix = board.GetMatrix();

            foreach (var kvp in matrix)
            {
                kvp.Value.ShouldBe(CoordinateStatus.Empty);
            }

            ship.MockCoordinatesList += () =>
            {
                return(new List <Coordinates> {
                    new Coordinates('A', 3), new Coordinates('A', 2), new Coordinates('A', 1)
                });
            };

            board.AddShipToMatrix(ship);

            board.Ship.CoordinatesList.Count.ShouldBe(3);

            board.UpdateMatrix(board.Ship.CoordinatesList, CoordinateStatus.Ship);
            matrix = board.GetMatrix();

            List <int> yCoordinateList = new List <int> {
                1, 2, 3
            };

            foreach (var kvp in matrix)
            {
                if (kvp.Key.XCoordinate == 'A' && yCoordinateList.Contains(kvp.Key.YCoordinate))
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Ship);
                }
                else
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Empty);
                }
            }

            board.UpdateMatrix(new Coordinates('A', 3), CoordinateStatus.Hit);
            board.UpdateMatrix(new Coordinates('A', 4), CoordinateStatus.Miss);
            matrix = board.GetMatrix();

            foreach (var kvp in matrix)
            {
                if (kvp.Key.XCoordinate == 'A' && kvp.Key.YCoordinate == 3)
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Hit);
                }
                else if (kvp.Key.XCoordinate == 'A' && kvp.Key.YCoordinate == 4)
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Miss);
                }
                else if (kvp.Key.XCoordinate == 'A' && ((kvp.Key.YCoordinate == 1) || kvp.Key.YCoordinate == 2))
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Ship);
                }
                else
                {
                    kvp.Value.ShouldBe(CoordinateStatus.Empty);
                }
            }
        }