public void PuzzleSolutionGenerator_RandomChoices_Test1()
        {
            var sut = new PuzzleSolutionGenerator(PuzzleSize.NineByNine);

            var result = sut.RandomChoices();

            var distinct = result.Distinct().ToList();

            Assert.Equal(PuzzleSize.NineByNine.ToInt32(), distinct.Count);
        }
        public void PuzzleSolutionGenerator_RecursiveFillPuzzleBox_Test2()
        {
            var sut = new PuzzleSolutionGenerator(PuzzleSize.NineByNine);

            sut.SeedPuzzleBox();

            var result = sut.RecursiveFillPuzzleBox(1, 0);

            Assert.True(result);

            var values = sut.PuzzleBoxes[1]
                         .Select(p => p.Value)
                         .Where(v => v.HasValue)
                         .Select(v => v.Value)
                         .Distinct()
                         .OrderBy(v => v).ToList();

            Assert.Equal(PuzzleSize.NineByNine.ToInt32(), values.Count);
        }
        public void PuzzleSolutionGenerator_CreatePuzzleSolution_Test1()
        {
            var sut = new PuzzleSolutionGenerator(PuzzleSize.NineByNine);

            var result = sut.CreatePuzzleSolution();

            Assert.NotNull(result);

            foreach (var box in result.ByBox())
            {
                AssertIfNotFullSet(box, PuzzleSize.NineByNine);
            }

            foreach (var row in result.ByRow())
            {
                AssertIfNotFullSet(row, PuzzleSize.NineByNine);
            }

            foreach (var col in result.ByCol())
            {
                AssertIfNotFullSet(col, PuzzleSize.NineByNine);
            }
        }