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); }
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); } } }