public void NewListReurnStringEmpty()
        {
            //Arrange
            List <string> stringList = new List <string>();

            //Act
            var results = ListStringToCSVString.ListToString(stringList);

            //Assert
            Assert.AreEqual(results, "");
        }
        public void ListWithOneItemReurnStringEmpty()
        {
            //Arrange
            List <string> stringList = new List <string>();

            stringList.Add("A");
            //Act
            var results = ListStringToCSVString.ListToString(stringList);

            //Assert
            Assert.AreEqual(results, "A");
        }
        public void ListWithThreeItemsOutOfOrderReurnStringEmpty()
        {
            //Arrange
            List <string> stringList = new List <string>();

            stringList.Add("C");
            stringList.Add("A");
            stringList.Add("B");

            //Act
            var results = ListStringToCSVString.ListToString(stringList);

            //Assert
            Assert.AreEqual(results, "A, B and C");
        }
        /// <summary>
        /// If the tile a player is one is gone, they have to swim to the nearest tile
        /// If there is no nearby tile, that isnt normal or flooded, they lose
        /// </summary>
        /// <param name="IslandBoard"> The island board</param>
        /// <param name="WaterLevel">Dont care in this canLose</param>
        /// <returns></returns>
        public ValidationResults IsValid(List <IslandTile> IslandBoard, int WaterLevel)
        {
            foreach (var tilePlayerIsOn in IslandBoard.Where(x => x.PlayersOnTile.Any()))
            {
                if (TileGone(tilePlayerIsOn))
                {
                    ThisTilelIsValid = false;
                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber - 1), (tilePlayerIsOn.ColumnNumber - 1));
                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber - 1), tilePlayerIsOn.ColumnNumber);
                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber - 1), (tilePlayerIsOn.ColumnNumber + 1));

                    WorkOutIfThereIsAnEscape(IslandBoard, tilePlayerIsOn.RowNumber, (tilePlayerIsOn.ColumnNumber - 1));
                    WorkOutIfThereIsAnEscape(IslandBoard, tilePlayerIsOn.RowNumber, (tilePlayerIsOn.ColumnNumber + 1));

                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber + 1), (tilePlayerIsOn.ColumnNumber - 1));
                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber + 1), tilePlayerIsOn.ColumnNumber);
                    WorkOutIfThereIsAnEscape(IslandBoard, (tilePlayerIsOn.RowNumber + 1), (tilePlayerIsOn.ColumnNumber + 1));
                    if (!ThisTilelIsValid)
                    {
                        foreach (var player in tilePlayerIsOn.PlayersOnTile)
                        {
                            DrownedPlayerNames.Add(player.Name);
                        }
                    }
                }
            }
            if (DrownedPlayerNames.Any())
            {
                return(new ValidationResults()
                {
                    IsValid = false, ErrorMessage = String.Format(CanLoseConstants.PLAYER_HAS_GONE, ListStringToCSVString.ListToString(DrownedPlayerNames))
                });
            }
            return(new ValidationResults()
            {
                IsValid = true
            });
        }
Esempio n. 5
0
        /// <summary>
        /// There is two treasure tile for each treasure
        /// If both are gone the game is over.
        /// </summary>
        /// <param name="IslandBoard">All the tiles in te board</param>
        /// <param name="WaterLevel"></param>
        /// <returns></returns>
        public ValidationResults IsValid(List <IslandTile> IslandBoard, int WaterLevel)
        {
            AreBothTreasuresGone(IslandBoard, CardConstants.OCEANS_CHALICE_NAME, TreasureStatue.OceansChalice);
            AreBothTreasuresGone(IslandBoard, CardConstants.CRYSTAL_OF_FIRE_NAME, TreasureStatue.CrystalOfFire);
            AreBothTreasuresGone(IslandBoard, CardConstants.STATUE_OF_THE_WIND_NAME, TreasureStatue.StatueOfTheWind);
            AreBothTreasuresGone(IslandBoard, CardConstants.EARTH_STONE_NAME, TreasureStatue.EarthStone);

            if (goneTileNames.Any())
            {
                return(new ValidationResults()
                {
                    IsValid = false, ErrorMessage = String.Format(CanLoseConstants.TREASURE_GONE, ListStringToCSVString.ListToString(goneTileNames))
                });
            }

            return(new ValidationResults()
            {
                IsValid = true
            });
        }