public void ADiceSetCannotContainLessThan5Dice() { const int invalidNumberOfDice = 4; Die[] dice = CreateDice(invalidNumberOfDice); var diceSet = new DiceSet(dice); }
private void HoldAndRoll(DiceSet diceSet, params int[] diceIndexes) { for (int dieIndex = 0; dieIndex < diceIndexes.Length; dieIndex++) { diceSet.Hold(diceIndexes[dieIndex]); } diceSet.Roll(); }
public void RollingADiceSetRollsAllDice() { Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); diceSet.Roll(); Assert.IsTrue(dice.All(IsValueValidFor)); }
public void NotHoldingAnyDieOnTheFirstThrowWillRollAllDiceInTheSet() { Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); diceSet.Roll(); diceSet.Roll(); Assert.IsTrue(dice.All(d => d.NumberOfThrows == 2)); }
public void EndingATurnContainingLessThan3RollsOfTheDiceSetThrowsException() { Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); var turn = new Turn(diceSet); diceSet.Roll(); diceSet.Roll(); turn.GetScore(scoreCategoryIsIrelevant); }
public void ScoringATurnInTheUpperScoresCategory_WithAZeroCategoryValueThrowsException() { const int invalidCategoryValue = 0; Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); var turn = new Turn(diceSet); diceSet.Roll(); diceSet.Roll(); diceSet.Roll(); turn.GetScore(invalidCategoryValue); }
public void EndingATurnContainingExactly3RollsOfTheDiceSetDoesNotThrowException() { const int upperScoreCategory = 3; Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); var turn = new Turn(diceSet); diceSet.Roll(); diceSet.Roll(); diceSet.Roll(); turn.GetScore(upperScoreCategory); }
public void HoldingADieAfterTheFirstThrowWillFreezeTheValueOfThatDieOnTheSecondThrow() { const int secondDieIndex = 1; Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); diceSet.Roll(); int valueOfTheDiceBeingHold = dice[secondDieIndex].Value; diceSet.Hold(secondDieIndex); diceSet.Roll(); Assert.AreEqual(valueOfTheDiceBeingHold, dice[secondDieIndex].Value); }
public void Holding2DiceAfterTheFirstThrowWillFreezeTheValuesOfThoseDiceOnTheSecondThrow() { const int secondDieIndex = 1; const int forthDieIndex = 3; Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); diceSet.Roll(); int valueOfTheSecondDieBeingHold = dice[secondDieIndex].Value; int valueOfTheForthDieBeingHold = dice[forthDieIndex].Value; HoldAndRoll(diceSet, secondDieIndex, forthDieIndex); Assert.AreEqual(valueOfTheSecondDieBeingHold, dice[secondDieIndex].Value); Assert.AreEqual(valueOfTheForthDieBeingHold, dice[forthDieIndex].Value); }
public void ScoringATurnInTheUpperScoresCategory_SumsTheValuesOfTheChosenCategory() { Die[] dice = CreateDice(TotalNumberOfDice); var diceSet = new DiceSet(dice); const int upperScoresCategory = 3; var turn = new Turn(diceSet); diceSet.Roll(); diceSet.Roll(); diceSet.Roll(); int actualScore = turn.GetScore(upperScoresCategory); Assert.IsTrue(actualScore > 0); Assert.IsTrue(actualScore % 3 == 0); }
public void ADiceSetCannotNullDice() { Die[] nullDice = null; var diceSet = new DiceSet(nullDice); }
public Turn(DiceSet diceSet) { this.diceSet = diceSet; }