public void Apply_RemovesByCol()
        {
            var m = new Matrix();

            m[1, 2].CollapseTo(5);

            KnownConstraintsGenericApplier.Apply(m, (mmm, row, col) => Matrix.CellSelectors.SelectColCells(mmm, col));

            SquareArray.Sudoku.IterateTwo((row, col) =>
            {
                if (col != 2)
                {
                    Assert.IsTrue(m[row, col].GetValidStates().SequenceEqual(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }));
                }
                else
                if (row != 1)
                {
                    Assert.IsTrue(m[row, col].GetValidStates().SequenceEqual(new int[] { 1, 2, 3, 4, 6, 7, 8, 9 }));
                }
            });
        }
        public void Apply_RemovesBySubSquare()
        {
            var m = new Matrix();

            m[1, 2].CollapseTo(5);

            KnownConstraintsGenericApplier.Apply(m, Matrix.CellSelectors.SelectSquareCells);

            SquareArray.Sudoku.IterateTwo((row, col) =>
            {
                if (row < 3 && col < 3)
                {
                    if (!(row == 1 && col == 2))
                    {
                        Assert.IsTrue(m[row, col].GetValidStates().SequenceEqual(new int[] { 1, 2, 3, 4, 6, 7, 8, 9 }));
                    }
                }
                else
                {
                    Assert.IsTrue(m[row, col].GetValidStates().SequenceEqual(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }));
                }
            });
        }