/// <summary> /// Prints "Invalid move!" every time invalid coordinates for a mine on /// the field are inputted. Outputs the coordinates to mineRow, mineCol. /// </summary> private static void TryGetInputMineCoordinatesUntilValid( ConsoleBattleField game, out int mineRow, out int mineCol) { mineRow = -1; mineCol = -1; bool validInput = game.TryGetInputCoordinates(out mineRow, out mineCol); while (mineRow == -1 || !validInput || !game.CellIsMine(mineRow, mineCol)) { Console.WriteLine("Invalid input!"); validInput = game.TryGetInputCoordinates(out mineRow, out mineCol); } }
public void TestCellIsDetonated_WithNoDetonatedCells() { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(10); testGame.GenerateMines(); for (int row = 0; row < 10; row++) { for (int col = 0; col < 10; col++) { if (testGame.CellIsMine(row, col) || testGame.CellIsEmpty(row, col)) { Assert.IsFalse(testGame.CellIsDetonated(row, col)); } } } }
public void TestCellIsMine_WithMines() { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(10); testGame.GenerateMines(); var fieldCopy = testGame.GameFieldCopy; for (int row = 0; row < 10; row++) { for (int col = 0; col < 10; col++) { if (fieldCopy[row, col] == FieldCell.Mine1 || fieldCopy[row, col] == FieldCell.Mine2 || fieldCopy[row, col] == FieldCell.Mine3 || fieldCopy[row, col] == FieldCell.Mine4 || fieldCopy[row, col] == FieldCell.Mine5) { Assert.IsTrue(testGame.CellIsMine(row, col)); } } } }
public void TestMineCount() { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(10); testGame.GenerateMines(); int expectedCountMines = 0; for (int row = 0; row < 10; row++) { for (int col = 0; col < 10; col++) { if (testGame.CellIsMine(row, col)) { expectedCountMines++; } } } Assert.AreEqual(expectedCountMines, testGame.MineCount); }
public void TestGenerateMines_CountCorrectnessInTenCellField() { for (int i = 0; i < 20; i++) { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(10); testGame.GenerateMines(); int expectedMinCountMines = 15; // >= 15% of the field int expectedMaxCountMines = 30; // <= 30% of the field int minesCount = 0; for (int row = 0; row < 10; row++) { for (int col = 0; col < 10; col++) { if (testGame.CellIsMine(row, col)) { minesCount++; } } } Assert.IsTrue(expectedMinCountMines <= minesCount && minesCount <= expectedMaxCountMines); } }
public void TestGenerateMines_CountCorrectnessInFourCellField() { for (int i = 0; i < 20; i++) { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(2); testGame.GenerateMines(); int expectedMinesCount = 1; // the only possible number of mines in 2x2 field // for the default 15%-30% of all field blocks int minesCount = 0; for (int row = 0; row < 2; row++) { for (int col = 0; col < 2; col++) { if (testGame.CellIsMine(row, col)) { minesCount++; } } } Assert.IsTrue(expectedMinesCount == minesCount); } }
public void TestGenerateMines_CountCorrectnessInFieldLengthOfSix() { for (int i = 0; i < 20; i++) { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(6); testGame.GenerateMines(); int expectedMinCountMines = 5; int expectedMaxCountMines = 11; int minesCount = 0; for (int row = 0; row < 6; row++) { for (int col = 0; col < 6; col++) { if (testGame.CellIsMine(row, col)) { minesCount++; } } } Assert.IsTrue(expectedMinCountMines <= minesCount && minesCount <= expectedMaxCountMines); } }
public void TestDetonateMine_WithNoMine() { ConsoleBattleField testGame = new ConsoleBattleField(); testGame.InitializeGameField(10); testGame.GenerateMines(); var fieldCopy = testGame.GameFieldCopy; for (int row = 0; row < 10; row++) { for (int col = 0; col < 10; col++) { if (!testGame.CellIsMine(row, col)) { testGame.DetonateMine(row, col); } } } }