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>(); }
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); }
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>(); }
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); }
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(); }
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>(); }
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); }
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>(); }