public void FasterPuzzleSolutionGenerator_SeedSecondBox_Test1()
        {
            var sut = new OptimizedPuzzleSolutionGenerator(PuzzleSize.NineByNine);

            sut.Random = new TestNotSoRandom();
            sut.SeedFirstBox();

            sut.SeedSecondBox();

            var solution = sut.PuzzleGrid;

            Approvals.Verify(solution);
        }
        public void FasterPuzzleSolutionGenerator_SeedSecondBox_Test2()
        {
            for (var count = 0; count < 1000; count++)
            {
                var sut = new OptimizedPuzzleSolutionGenerator(PuzzleSize.NineByNine);
                sut.SeedFirstBox();

                sut.SeedSecondBox();

                var solution = sut.PuzzleGrid;

                var box = solution.ByBox().ToArray();

                AssertIfNotFullSet(box[0], PuzzleSize.NineByNine);
                AssertIfNotFullSet(box[1], PuzzleSize.NineByNine);
            }
        }
        public void FasterPuzzleSolutionGenerator_SeedFirstColumn_Test2()
        {
            for (var count = 0; count < 1000; count++)
            {
                var sut = new OptimizedPuzzleSolutionGenerator(PuzzleSize.NineByNine);

                sut.SeedFirstBox();
                sut.SeedSecondBox();
                sut.SeedThirdBox();
                sut.SeedFirstColumn();

                var solution = sut.PuzzleGrid;

                var column = solution.ByCol().First();

                AssertIfNotFullSet(column, PuzzleSize.NineByNine);
            }
        }