public void VerifyGetNextEmptyCell() { int[,] array = new int[9, 9] { { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, }; SudokuTable st = new SudokuTable(array); SudokuTableValidator stv = new SudokuTableValidator(st); // no empty cells, so it should return [-1,-1] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(-1)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(-1)); array = new int[9, 9] { { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // all empty cells, so 1st one - [0,0] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(0)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(0)); array = new int[9, 9] { { 1, 2, 3, 4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // 1st empty cell - [0,4] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(0)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(4)); array = new int[9, 9] { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 0, 2, 3, 4, 5, 6, 7, 8, 0 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // 1st empty cell - [4,0] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(4)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(0)); array = new int[9, 9] { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 0 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // 1st empty cell - [4,8] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(4)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(8)); array = new int[9, 9] { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 0, 2, 3, 4, 5, 6, 7, 8, 9 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // 1st empty cell - [8,0] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(8)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(0)); array = new int[9, 9] { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 0 }, }; st = new SudokuTable(array); stv = new SudokuTableValidator(st); // 1st empty cell - [8,8] Assert.IsTrue(st.GetNextEmptyCell()[0].Equals(8)); Assert.IsTrue(st.GetNextEmptyCell()[1].Equals(8)); }
/// <summary> /// Sudoku játék példányosítása. /// </summary> /// <param name="dataAccess">Az adatelérés.</param> public SudokuGameModel(ISudokuDataAccess dataAccess) { _dataAccess = dataAccess; _table = new SudokuTable(); _gameDifficulty = GameDifficulty.Medium; }
public void VerifyIsValueUsedInColumn() { int[,] array = new int[9, 9] { { 1, 1, 0, 9, 0, 3, 0, 0, 9 }, { 2, 0, 0, 0, 0, 0, 0, 8, 8 }, { 3, 0, 0, 0, 0, 0, 0, 7, 7 }, { 4, 0, 0, 0, 0, 0, 0, 6, 6 }, { 5, 0, 0, 0, 0, 0, 0, 5, 5 }, { 6, 0, 0, 0, 0, 0, 0, 4, 4 }, { 7, 0, 0, 0, 0, 0, 0, 3, 3 }, { 8, 0, 0, 0, 0, 0, 0, 2, 2 }, { 0, 0, 1, 0, 9, 0, 3, 1, 0 }, }; SudokuTable st = new SudokuTable(array); SudokuTableValidator stv = new SudokuTableValidator(st); // 1st col - 1-8 are used, 9 is available Assert.IsTrue(stv.IsUsedInColumn(0, 1)); Assert.IsFalse(stv.IsUsedInColumn(0, 9)); // 2nd col - only 1 is used Assert.IsTrue(stv.IsUsedInColumn(1, 1)); Assert.IsFalse(stv.IsUsedInColumn(1, 5)); Assert.IsFalse(stv.IsUsedInColumn(1, 9)); // 3rd col - only 1 is used, different position Assert.IsTrue(stv.IsUsedInColumn(2, 1)); Assert.IsFalse(stv.IsUsedInColumn(2, 5)); Assert.IsFalse(stv.IsUsedInColumn(2, 9)); // 4th col - only 9 is used Assert.IsTrue(stv.IsUsedInColumn(3, 9)); Assert.IsFalse(stv.IsUsedInColumn(3, 6)); Assert.IsFalse(stv.IsUsedInColumn(3, 2)); // 5th col - only 9 is used, different position Assert.IsTrue(stv.IsUsedInColumn(4, 9)); Assert.IsFalse(stv.IsUsedInColumn(4, 6)); Assert.IsFalse(stv.IsUsedInColumn(4, 2)); // 6th col - only 3 is used Assert.IsTrue(stv.IsUsedInColumn(5, 3)); Assert.IsFalse(stv.IsUsedInColumn(5, 2)); Assert.IsFalse(stv.IsUsedInColumn(5, 8)); // 7th col - only 3 is used, different position Assert.IsTrue(stv.IsUsedInColumn(6, 3)); Assert.IsFalse(stv.IsUsedInColumn(6, 2)); Assert.IsFalse(stv.IsUsedInColumn(6, 8)); // 8th col - 1-8 are used, 9 avail Assert.IsFalse(stv.IsUsedInColumn(7, 9)); Assert.IsTrue(stv.IsUsedInColumn(7, 1)); Assert.IsTrue(stv.IsUsedInColumn(7, 8)); // 8th col - 2-9 are used, 1 avail Assert.IsTrue(stv.IsUsedInColumn(8, 2)); Assert.IsTrue(stv.IsUsedInColumn(8, 9)); Assert.IsFalse(stv.IsUsedInColumn(8, 1)); }