Пример #1
0
        public WinnerFinderTests()
        {
            var codePegs = new string[] { "orange", "orange", "orange", "orange" };

            _decodingBoard = new DecodingBoard(codePegs);
            _winnerFinder  = new WinnerFinder();
        }
Пример #2
0
        public void ADecodingBoard_ShouldHaveSpecifiedCodePegs()
        {
            var mockRandomNumber = Substitute.For <IRandomNumberGenerator>();

            mockRandomNumber.Generate().Returns(5, 1, 3, 2);

            var codePegs      = new CodePegsGenerator(mockRandomNumber).Generate();
            var decodingBoard = new DecodingBoard(codePegs);

            var expectedResult = new[] { "yellow", "blue", "orange", "green" };
            var actualResult   = decodingBoard.CodePegs;

            Assert.Equal(expectedResult, actualResult);
        }
Пример #3
0
        public void ShouldThrowArgumentNullExceptionWhenCodeMakerShieldIsNull()
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            //Act
            void Action() => decodingBoard.CodeMaker(null);

            var exception = Record.Exception(Action);

            //Assert
            exception.Should().NotBeNull();
            exception.Should().BeOfType <ArgumentNullException>();
        }
Пример #4
0
        public void ShouldCreateShieldWhenCodeMakerPlaysValidShield()
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new CodePeg[4];
            var shield = new Shield(colors);

            //Act
            decodingBoard.CodeMaker(shield);

            //Assert
            decodingBoard.Shield.Should().NotBeNull();
            decodingBoard.Shield.Should().Be(shield);
        }
Пример #5
0
        public void ShouldThrowArgumentExceptionWhenCodeMakerShieldIsDifferentThanConfig(int shieldSize)
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new CodePeg[shieldSize];
            var shield = new Shield(colors);

            //Act
            void Action() => decodingBoard.CodeMaker(shield);

            var exception = Record.Exception(Action);

            //Assert
            exception.Should().BeOfType <ArgumentException>();
        }
Пример #6
0
        public void ShouldFindThreeWhiteKeyPegsWhenCodeColorMatchesThreeOtherShieldPositions(CodePeg[] code)
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };
            var shield = new Shield(colors);

            decodingBoard.CodeMaker(shield);

            //Act
            var result = decodingBoard.CodeBreaker(code);

            //Assert
            result.Should().NotBeNull();
            result.WhiteKeyPegs.Should().Be(3);
        }
Пример #7
0
        public void ShouldNotSolveSecretCodeWhenResponseBlackPegsNotEqualsShieldCount(int blackKeyPegs, int whiteKeyPegs)
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };
            var shield = new Shield(colors);

            decodingBoard.CodeMaker(shield);

            var response = new Response(blackKeyPegs, whiteKeyPegs);

            //Act
            var result = decodingBoard.HasSolvedSecretCode(response);

            //Assert
            result.Should().BeFalse();
        }
Пример #8
0
        public void ShouldThrowArgumentNullExceptionWhenCodeBreakerCodeIsNull()
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };
            var shield = new Shield(colors);

            decodingBoard.CodeMaker(shield);

            //Act
            void Action() => decodingBoard.CodeBreaker(null);

            var exception = Record.Exception(Action);

            //Assert
            exception.Should().BeOfType <ArgumentNullException>();
        }
Пример #9
0
        public void ShouldFindAllBlackKeyPegsWhenAllCodeColorsMatchShieldPosition()
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };
            var shield = new Shield(colors);

            decodingBoard.CodeMaker(shield);

            var code = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };

            //Act
            var result = decodingBoard.CodeBreaker(code);

            //Assert
            result.Should().NotBeNull();
            result.BlackKeyPegs.Should().Be(colors.Length);
            result.WhiteKeyPegs.Should().Be(0);
        }
Пример #10
0
        public void ShouldThrowArgumentExceptionWhenResponseTotalKeyPegsOutsideBoundaries(int blackKeyPegs, int whiteKeyPegs)
        {
            //Arrange
            var boardConfig   = new BoardConfig(4, 10);
            var decodingBoard = new DecodingBoard(boardConfig);

            var colors = new[] { CodePeg.Black, CodePeg.Blue, CodePeg.Green, CodePeg.White };
            var shield = new Shield(colors);

            decodingBoard.CodeMaker(shield);

            var response = new Response(blackKeyPegs, whiteKeyPegs);

            //Act
            void Action() => decodingBoard.HasSolvedSecretCode(response);

            var exception = Record.Exception(Action);

            //Assert
            exception.Should().BeOfType <ArgumentException>();
        }
Пример #11
0
        public DecodingBoardTests()
        {
            var codePegs = new string[] { "red", "blue", "yellow", "purple" };

            _decodingBoard = new DecodingBoard(codePegs);
        }