public void testAlreadyBeenScored() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 1)); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 1)); }
public void testGREEDY3() { // GREEDY2 GreedyAIStrategy greedy = new GreedyAIStrategy(); ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); DieSet dieSet = new DieSet(6, 6, 6, 6, 6); string cat = greedy.chooseCategory(dieSet, scoreSheet); scoreSheet.Score(cat, dieSet); // GREEDY3 dieSet = new DieSet(2, 2, 2, 2, 4); cat = greedy.chooseCategory(dieSet, scoreSheet); Assert.AreEqual("Twos", cat); scoreSheet.Score(cat, dieSet); Assert.AreEqual(58, scoreSheet.CurrentScore()); }
public void testBonus() { // bonus of 35 points if 63 points are scored in the upper categories (corresponds to 3 each of the numbers) ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 2, 3)); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Twos", new DieSet(2, 2, 2, 3, 4)); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Threes", new DieSet(3, 3, 3, 4, 5)); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Fours", new DieSet(4, 4, 4, 5, 6)); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Fives", new DieSet(5, 5, 5, 6, 1)); Assert.IsTrue(scoreSheet.Bonus == 0); scoreSheet.Score("Sixes", new DieSet(6, 6, 6, 1, 2)); Assert.IsTrue(scoreSheet.Bonus == 35); Assert.IsTrue(scoreSheet.CurrentScore() == 98); }
public void testGREEDY6() { // GREEDY2 AIStrategy greedy = new GreedyAIStrategy(); ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); DieSet dieSet = new DieSet(6, 6, 6, 6, 6); string cat = greedy.chooseCategory(dieSet, scoreSheet); scoreSheet.Score(cat, dieSet); // GREEDY3 dieSet = new DieSet(2, 2, 2, 2, 4); cat = greedy.chooseCategory(dieSet, scoreSheet); scoreSheet.Score(cat, dieSet); // GREEDY4 dieSet = new DieSet(6, 6, 6, 6, 5); cat = greedy.chooseCategory(dieSet, scoreSheet); scoreSheet.Score(cat, dieSet); // GREEDY5 dieSet = new DieSet(5, 5, 5, 5, 5); cat = greedy.chooseCategory(dieSet, scoreSheet); scoreSheet.Score(cat, dieSet); // GREEDY6 dieSet = new DieSet(6, 6, 6, 6, 6); cat = greedy.chooseCategory(dieSet, scoreSheet); Assert.AreEqual("Large Straight", cat); scoreSheet.Score(cat, dieSet); Assert.AreEqual(347, scoreSheet.CurrentScore()); }
public void testGetScore() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); Assert.AreEqual(0, scoreSheet.getScore("Aces")); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 1)); Assert.AreEqual(5, scoreSheet.getScore("Aces")); }
public void testGetLowerScore() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 6)); Assert.AreEqual(0, scoreSheet.getLowerScore()); scoreSheet.Score("Chance", new DieSet(1, 1, 1, 1, 6)); Assert.AreEqual(10, scoreSheet.getLowerScore()); scoreSheet.Score("Twos", new DieSet(2, 2, 3, 4, 5)); Assert.AreEqual(10, scoreSheet.getLowerScore()); scoreSheet.Score("Three of a Kind", new DieSet(1, 1, 1, 6, 6)); Assert.AreEqual(25, scoreSheet.getLowerScore()); scoreSheet.Score("Threes", new DieSet(3, 3, 3, 3, 4)); Assert.AreEqual(25, scoreSheet.getLowerScore()); scoreSheet.Score("Four of a Kind", new DieSet(1, 1, 1, 1, 6)); Assert.AreEqual(35, scoreSheet.getLowerScore()); scoreSheet.Score("Fours", new DieSet(4, 4, 4, 6, 1)); Assert.AreEqual(35, scoreSheet.getLowerScore()); scoreSheet.Score("Full House", new DieSet(1, 1, 1, 3, 3)); Assert.AreEqual(60, scoreSheet.getLowerScore()); scoreSheet.Score("Fives", new DieSet(5, 5, 2, 4, 5)); Assert.AreEqual(60, scoreSheet.getLowerScore()); scoreSheet.Score("Small Straight", new DieSet(1, 2, 3, 4, 5)); Assert.AreEqual(90, scoreSheet.getLowerScore()); scoreSheet.Score("Sixes", new DieSet(6, 6, 1, 3, 6)); Assert.AreEqual(90, scoreSheet.getLowerScore()); scoreSheet.Score("Yahtzee", new DieSet(4, 4, 4, 4, 4)); Assert.AreEqual(140, scoreSheet.getLowerScore()); scoreSheet.Score("Large Straight", new DieSet(1, 2, 3, 4, 5)); Assert.AreEqual(180, scoreSheet.getLowerScore()); }
public void testSecondYahtzeeNoBonus() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); Assert.IsTrue(scoreSheet.ExtraYahtzees == 0); scoreSheet.Score("Yahtzee", new DieSet(6, 6, 6, 6, 5)); Assert.IsTrue(scoreSheet.ExtraYahtzees == 0); Assert.IsTrue(scoreSheet.CurrentScore() == 00); scoreSheet.Score("Sixes", new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(scoreSheet.ExtraYahtzees == 0); Assert.IsTrue(scoreSheet.CurrentScore() == 30); }
public void testScoreSheetPrintTotals() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); List<ScoringCategory> cats = scoreSheet.printScoreSheet(); Assert.AreEqual(0, cats[6].FinalScore); Assert.AreEqual(0, cats[7].FinalScore); Assert.AreEqual(0, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(0, cats[17].FinalScore); scoreSheet.Score("Sixes", new DieSet(6, 6, 6, 6, 5)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(24, cats[6].FinalScore); Assert.AreEqual(0, cats[7].FinalScore); Assert.AreEqual(0, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(24, cats[17].FinalScore); scoreSheet.Score("Fives", new DieSet(5, 5, 5, 5, 6)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(44, cats[6].FinalScore); Assert.AreEqual(0, cats[7].FinalScore); Assert.AreEqual(0, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(44, cats[17].FinalScore); scoreSheet.Score("Fours", new DieSet(4, 4, 4, 4, 6)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(60, cats[6].FinalScore); Assert.AreEqual(0, cats[7].FinalScore); Assert.AreEqual(0, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(60, cats[17].FinalScore); scoreSheet.Score("Threes", new DieSet(3, 3, 3, 3, 6)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(72, cats[6].FinalScore); Assert.AreEqual(35, cats[7].FinalScore); Assert.AreEqual(0, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(107, cats[17].FinalScore); scoreSheet.Score("Yahtzee", new DieSet(1, 1, 1, 1, 1)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(72, cats[6].FinalScore); Assert.AreEqual(35, cats[7].FinalScore); Assert.AreEqual(50, cats[15].FinalScore); Assert.AreEqual(0, cats[16].FinalScore); Assert.AreEqual(157, cats[17].FinalScore); scoreSheet.Score("Large Straight", new DieSet(6, 6, 6, 6, 6)); cats = scoreSheet.printScoreSheet(); Assert.AreEqual(72, cats[6].FinalScore); Assert.AreEqual(35, cats[7].FinalScore); Assert.AreEqual(90, cats[15].FinalScore); Assert.AreEqual(100, cats[16].FinalScore); Assert.AreEqual(297, cats[17].FinalScore); }
public void testInvalidCategory() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Does Not Exist", new DieSet(1, 1, 1, 1, 1)); }
public void testJokerRulesNoLowerAvail() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Yahtzee", new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(scoreSheet.CurrentScore() == 50); scoreSheet.Score("Sixes", new DieSet(6, 1, 1, 1, 1)); Assert.IsTrue(scoreSheet.CurrentScore() == 56); scoreSheet.Score("Three of a Kind", new DieSet(1, 1, 1, 4, 5)); Assert.IsTrue(scoreSheet.CurrentScore() == 68); scoreSheet.Score("Four of a Kind", new DieSet(2, 2, 2, 2, 6)); Assert.AreEqual(82, scoreSheet.CurrentScore()); scoreSheet.Score("Full House", new DieSet(1, 1, 1, 2, 2)); Assert.AreEqual(107, scoreSheet.CurrentScore()); scoreSheet.Score("Small Straight", new DieSet(1, 2, 3, 4, 6)); Assert.AreEqual(137, scoreSheet.CurrentScore()); scoreSheet.Score("Large Straight", new DieSet(1, 2, 3, 4, 5)); Assert.AreEqual(177, scoreSheet.CurrentScore()); scoreSheet.Score("Chance", new DieSet(5, 5, 5, 2, 3)); Assert.AreEqual(197, scoreSheet.CurrentScore()); List<String> avail = scoreSheet.GetAvailable(new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(avail.Count == 5); Assert.Contains("Aces:0", avail); Assert.Contains("Twos:0", avail); Assert.Contains("Threes:0", avail); Assert.Contains("Fours:0", avail); Assert.Contains("Fives:0", avail); scoreSheet.Score("Aces", new DieSet(6, 6, 6, 6, 6)); Assert.AreEqual(297, scoreSheet.CurrentScore()); }
public void testJokerRulesLowerCats() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Yahtzee", new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(scoreSheet.CurrentScore() == 50); scoreSheet.Score("Sixes", new DieSet(6, 1, 1, 1, 1)); Assert.IsTrue(scoreSheet.CurrentScore() == 56); List<String> avail = scoreSheet.GetAvailable(new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(avail.Count == 6); Assert.Contains("Three of a Kind:30", avail); Assert.Contains("Four of a Kind:30", avail); Assert.Contains("Full House:25", avail); Assert.Contains("Small Straight:30", avail); Assert.Contains("Large Straight:40", avail); Assert.Contains("Chance:30", avail); scoreSheet.Score("Large Straight", new DieSet(6, 6, 6, 6, 6)); Assert.AreEqual(196, scoreSheet.CurrentScore()); }
public void testJokerRulesForceNumberCat() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Yahtzee", new DieSet(6, 6, 6, 6, 6)); List<String> avail = scoreSheet.GetAvailable(new DieSet(6, 6, 6, 6, 6)); Assert.IsTrue(avail.Count == 1); Assert.Contains("Sixes:30", avail); }
public void testJokerRulesException() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Yahtzee", new DieSet(6, 6, 6, 6, 6)); scoreSheet.Score("Chance", new DieSet(1, 1, 1, 1, 1)); }
public void testIsScored() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); Assert.AreEqual(false, scoreSheet.isScored("Aces")); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 1)); Assert.AreEqual(true, scoreSheet.isScored("Aces")); }
public void testNoAvailCats() { GreedyAIStrategy greedy = new GreedyAIStrategy(); ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); scoreSheet.Score("Aces", new DieSet(1, 1, 1, 1, 2)); scoreSheet.Score("Twos", new DieSet(2, 2, 2, 2, 3)); scoreSheet.Score("Threes", new DieSet(3, 3, 3, 3, 4)); scoreSheet.Score("Fours", new DieSet(4, 4, 4, 4, 5)); scoreSheet.Score("Fives", new DieSet(5, 5, 5, 5, 6)); scoreSheet.Score("Sixes", new DieSet(6, 6, 6, 6, 1)); scoreSheet.Score("Three of a Kind", new DieSet(6, 6, 6, 5, 4)); scoreSheet.Score("Four of a Kind", new DieSet(5, 6, 6, 6, 6)); scoreSheet.Score("Full House", new DieSet(1, 1, 1, 2, 2)); scoreSheet.Score("Small Straight", new DieSet(1, 2, 3, 4, 6)); scoreSheet.Score("Large Straight", new DieSet(1, 2, 3, 4, 5)); scoreSheet.Score("Yahtzee", new DieSet(1, 1, 1, 1, 1)); scoreSheet.Score("Chance", new DieSet(6, 6, 5, 5, 4)); greedy.chooseCategory(new DieSet(1, 2, 2, 3, 4), scoreSheet); }
public void testScore() { ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); int score; // score ones DieSet dieSet = new DieSet(1, 1, 1, 1, 1); score = scoreSheet.Score("Aces", dieSet); Assert.IsTrue(score == 5); Assert.IsTrue(scoreSheet.CurrentScore() == 5); // confirm Ones are scored List<String> scored = scoreSheet.GetScored(); Assert.IsTrue(scored.Count == 1); Assert.Contains("Aces:5", scored); // confirm Ones are no longer available List<String> available = scoreSheet.GetAvailable(); Assert.IsTrue(available.Count == 12); Assert.IsFalse(available.Contains("Aces")); // score twos dieSet = new DieSet(2, 2, 2, 2, 2); score = scoreSheet.Score("Twos", dieSet); Assert.IsTrue(score == 10); Assert.IsTrue(scoreSheet.CurrentScore() == 15); // confirm Ones, Twos are scored scored = scoreSheet.GetScored(); Assert.IsTrue(scored.Count == 2); Assert.Contains("Aces:5", scored); Assert.Contains("Twos:10", scored); // confirm Ones, Twos are no longer available available = scoreSheet.GetAvailable(); Assert.IsTrue(available.Count == 11); Assert.IsFalse(available.Contains("Aces")); Assert.IsFalse(available.Contains("Twos")); // score threes dieSet = new DieSet(3, 3, 3, 3, 3); score = scoreSheet.Score("Threes", dieSet); Assert.IsTrue(score == 15); Assert.IsTrue(scoreSheet.CurrentScore() == 30); // confirm Ones, Twos, Threes are scored scored = scoreSheet.GetScored(); Assert.IsTrue(scored.Count == 3); Assert.Contains("Aces:5", scored); Assert.Contains("Twos:10", scored); Assert.Contains("Threes:15", scored); // confirm Ones, Twos, Thress are no longer available available = scoreSheet.GetAvailable(); Assert.IsTrue(available.Count == 10); Assert.IsFalse(available.Contains("Aces")); Assert.IsFalse(available.Contains("Twos")); Assert.IsFalse(available.Contains("Threes")); }
public void testOptimalSampleGame2() { OptimalAIStrategy optimal = new OptimalAIStrategy(); ScoreSheet scoreSheet = new ScoreSheet(); scoreSheet.setupGame("Yahtzee"); DieSet dieSet; // Sample Game #2 from _Advantage Yahtzee_ // Hand 1 dieSet = new DieSet(1, 1, 2, 3, 6); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsFalse(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 3; dieSet.Dice[2].Value = 3; dieSet.Dice[3].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 2; dieSet.Dice[2].Value = 4; Assert.AreEqual("Aces", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Aces", dieSet); Assert.AreEqual(1, scoreSheet.CurrentScore()); // Hand 2 dieSet = new DieSet(1, 2, 2, 2, 3); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 6; dieSet.Dice[4].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsTrue(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); Assert.AreEqual("Full House", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Full House", dieSet); Assert.AreEqual(26, scoreSheet.CurrentScore()); // Hand 3 dieSet = new DieSet(2, 3, 5, 6, 6); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 2; dieSet.Dice[2].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 1; Assert.AreEqual("Sixes", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Sixes", dieSet); Assert.AreEqual(44, scoreSheet.CurrentScore()); // Hand 4 dieSet = new DieSet(3, 3, 4, 4, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 5; dieSet.Dice[4].Value = 5; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsFalse(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[2].Value = 5; dieSet.Dice[3].Value = 6; Assert.AreEqual("Fives", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Fives", dieSet); Assert.AreEqual(59, scoreSheet.CurrentScore()); // Hand 5 dieSet = new DieSet(1, 2, 3, 6, 6); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 3; dieSet.Dice[1].Value = 3; dieSet.Dice[2].Value = 5; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[1].Value = 5; Assert.AreEqual("Chance", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Chance", dieSet); Assert.AreEqual(83, scoreSheet.CurrentScore()); // Hand 6 dieSet = new DieSet(1, 2, 3, 5, 6); optimal.reroll(dieSet, 2, scoreSheet); //Assert.IsFalse(dieSet.Dice[0].IsFrozen); //Assert.IsTrue(dieSet.Dice[1].IsFrozen); //Assert.IsTrue(dieSet.Dice[2].IsFrozen); //Assert.IsTrue(dieSet.Dice[3].IsFrozen); //Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[4].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); //Assert.IsFalse(dieSet.Dice[0].IsFrozen); //Assert.IsTrue(dieSet.Dice[1].IsFrozen); //Assert.IsTrue(dieSet.Dice[2].IsFrozen); //Assert.IsTrue(dieSet.Dice[3].IsFrozen); //Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 4; dieSet.Dice[4].Value = 6; Assert.AreEqual("Large Straight", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Large Straight", dieSet); Assert.AreEqual(123, scoreSheet.CurrentScore()); // Hand 7 dieSet = new DieSet(1, 2, 2, 4, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsFalse(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[3].Value = 1; dieSet.Dice[4].Value = 2; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsFalse(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 4; dieSet.Dice[3].Value = 5; Assert.AreEqual("Twos", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Twos", dieSet); Assert.AreEqual(129, scoreSheet.CurrentScore()); // Hand 8 dieSet = new DieSet(5, 5, 6, 6, 6); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[1].Value = 4; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[1].Value = 4; Assert.AreEqual("Three of a Kind", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Three of a Kind", dieSet); Assert.AreEqual(153, scoreSheet.CurrentScore()); // Hand 9 dieSet = new DieSet(1, 3, 4, 5, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsFalse(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[3].Value = 3; dieSet.Dice[4].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[2].Value = 4; dieSet.Dice[4].Value = 5; Assert.AreEqual("Yahtzee", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Yahtzee", dieSet); Assert.AreEqual(153, scoreSheet.CurrentScore()); // Hand 10 dieSet = new DieSet(1, 2, 2, 3, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 1; dieSet.Dice[1].Value = 1; dieSet.Dice[2].Value = 4; dieSet.Dice[4].Value = 6; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[1].Value = 4; dieSet.Dice[4].Value = 6; Assert.AreEqual("Fours", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Fours", dieSet); Assert.AreEqual(161, scoreSheet.CurrentScore()); // Hand 11 dieSet = new DieSet(2, 3, 4, 5, 6); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsTrue(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); optimal.reroll(dieSet, 1, scoreSheet); Assert.IsTrue(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); Assert.AreEqual("Small Straight", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Small Straight", dieSet); Assert.AreEqual(191, scoreSheet.CurrentScore()); // Hand 12 dieSet = new DieSet(1, 1, 2, 3, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsFalse(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 2; dieSet.Dice[1].Value = 3; dieSet.Dice[2].Value = 4; dieSet.Dice[4].Value = 5; optimal.reroll(dieSet, 1, scoreSheet); Assert.IsFalse(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsFalse(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsFalse(dieSet.Dice[4].IsFrozen); dieSet.Dice[0].Value = 4; dieSet.Dice[2].Value = 5; dieSet.Dice[4].Value = 6; Assert.AreEqual("Threes", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Threes", dieSet); Assert.AreEqual(197, scoreSheet.CurrentScore()); // Hand 13 dieSet = new DieSet(2, 2, 2, 2, 5); optimal.reroll(dieSet, 2, scoreSheet); Assert.IsTrue(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); optimal.reroll(dieSet, 1, scoreSheet); Assert.IsTrue(dieSet.Dice[0].IsFrozen); Assert.IsTrue(dieSet.Dice[1].IsFrozen); Assert.IsTrue(dieSet.Dice[2].IsFrozen); Assert.IsTrue(dieSet.Dice[3].IsFrozen); Assert.IsTrue(dieSet.Dice[4].IsFrozen); Assert.AreEqual("Four of a Kind", optimal.chooseCategory(dieSet, scoreSheet)); scoreSheet.Score("Four of a Kind", dieSet); Assert.AreEqual(210, scoreSheet.CurrentScore()); }