Exemplo n.º 1
0
        public void ShouldReturn7Moves()
        {
            //Arrange
            var game = FakeTowerGameDataBuilder.CreateWithRandomProps().WithMaxDiscsPerPeg(3).Build();
            var sut  = CreateSut();
            //Act
            var actual = sut.SolveFromStart(game).ToArray();

            //Assert
            actual.Should().HaveCount(7);
        }
Exemplo n.º 2
0
        public void GivenTowerWithMoreThan3Discs_Throws()
        {
            //Arrange
            var game = FakeTowerGameDataBuilder.CreateWithRandomProps().WithMaxDiscsPerPeg(4).Build();
            var sut  = CreateSut();
            //Act
            Action action = () => sut.SolveFromStart(game).ToArray();

            //Assert
            action.Should().Throw <NotSupportedException>()
            .WithMessage("I'm a SIMPLE solver, I can only solve towers that have 3 discs");
        }
        public void GivenGameNotAtStart_Throws()
        {
            //Arrange
            var game = FakeTowerGameDataBuilder.CreateWithRandomProps().WithTouchedGame().Build();
            var sut  = CreateSut();
            //Act
            Action action = () => sut.SolveFromStart(game).ToArray();

            //Assert
            action.Should().Throw <NotSupportedException>()
            .WithMessage("This solver can only solve games from the start");
        }
        public void ShouldReturnOptimalAmountOfMoves()
        {
            //Arrange
            var discsPerPeg   = RandomTower.Peg.MaxDiscs;
            var expectedMoves = Convert.ToInt32(Math.Pow(2, discsPerPeg) - 1);
            var game          = FakeTowerGameDataBuilder
                                .CreateWithRandomProps()
                                .WithMaxDiscsPerPeg(discsPerPeg)
                                .WithUntouchedGame()
                                .Build();
            var sut = CreateSut();
            //Act
            var actual = sut.SolveFromStart(game).ToArray();

            //Assert
            actual.Should().HaveCount(expectedMoves);
        }