Ejemplo n.º 1
0
        public void GivenInputReadAllLines()
        {
            List <string> input = new List <string>()
            {
                "44",
                "*...",
                "....",
                ".*..",
                "...."
            };

            Position expectedHeader = new Position()
            {
                Row    = 4,
                Column = 4,
                Symbol = "Field `#1`"
            };

            Position expectedLineOneColumnOne = new Position()
            {
                Row    = 1,
                Column = 1,
                Symbol = "*"
            };

            MineFieldReader gameboardReader = new MineFieldReader();

            Position dimensions = new Position();

            dimensions = gameboardReader.GetFieldDimensions(1, input[0]);

            List <Position> output = new List <Position>();

            output = gameboardReader.GetFieldCoordinatesForPositions(dimensions, input);

            Assert.Equal(expectedHeader.Row, dimensions.Row);
            Assert.Equal(expectedHeader.Column, dimensions.Column);
            Assert.Equal(expectedHeader.Symbol, dimensions.Symbol);

            Assert.Equal(expectedLineOneColumnOne.Row, output[1].Row);
            Assert.Equal(expectedLineOneColumnOne.Column, output[1].Column);
            Assert.Equal(expectedLineOneColumnOne.Symbol, output[1].Symbol);
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            var games = 3;

            for (var x = 1; x <= games; x++)
            {
                var pathName = $"C:\\Users\\StephanieK\\source\\Minesweeper-kata\\InputField{x}.txt";

                List <string> inputField = new List <string>();

                using (StreamReader sr = new StreamReader(pathName))
                {
                    string line;

                    while ((line = sr.ReadLine()) != null)
                    {
                        inputField.Add(line);    // make it have the break down mine field here but make it take in a line and return a list of positions?
                    }
                }
                MineFieldReader mineReader = new MineFieldReader();

                Position gameBoardDimensions = new Position();
                gameBoardDimensions = mineReader.GetFieldDimensions(x, inputField[0]);

                var rowLength    = gameBoardDimensions.Row;
                var columnLength = gameBoardDimensions.Column;
                var title        = gameBoardDimensions.Symbol;

                List <string> outputAll = new List <string>();

                outputAll.Add(gameBoardDimensions.Symbol);

                if (gameBoardDimensions.Row == 0 || gameBoardDimensions.Column == 0)
                {
                    continue;
                }

                List <Position> minefieldPositions = new List <Position>();
                minefieldPositions = mineReader.GetFieldCoordinatesForPositions(gameBoardDimensions, inputField);

                Locator         mineLocator   = new Locator();
                List <Position> mineLocations = new List <Position>();
                mineLocations = mineLocator.GetAllMineLocationsFrom(minefieldPositions);

                foreach (Position currentPosition in minefieldPositions)
                {
                    if (currentPosition.Symbol == title)
                    {
                        continue;
                    }

                    MineFieldReader symbolGenerator = new MineFieldReader();

                    string symbol = symbolGenerator.ReturnPositionSymbol(currentPosition, mineLocations);

                    outputAll.Add(symbol);

                    if (currentPosition.Column == columnLength)
                    {
                        outputAll.Add("\n");
                    }
                }

                string expectedSingleStringOfAll = String.Join("", outputAll);

                var pathToName = $"C:\\Users\\StephanieK\\source\\Minesweeper-kata\\OutputFields.txt";

                using (StreamWriter sw = new StreamWriter(pathToName, true))
                {
                    sw.WriteLine(expectedSingleStringOfAll);
                }
            }
        }