示例#1
0
        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));
        }
示例#2
0
 /// <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));
        }