public void CanAssignPairs() { //assemble for (var i = 0; i < 100; i++) { Dealer dealer = new Dealer(); int randomRank = TestMethods.RandomRank(); var randomPair = dealer.Deck.Where(card => (int)card.Rank == randomRank).ToArray(); Random random = new Random(); while (randomPair.Length > 2) { int removeCard = random.Next(0, randomPair.Length); randomPair[removeCard] = null; randomPair = randomPair.Where(card => card != null).ToArray(); } var smallTestDeck = TestMethods.OneOfEachRankDeck(); smallTestDeck = smallTestDeck.Where(card => (int)card.Rank != randomRank).ToArray(); smallTestDeck = TestMethods.Shuffle(smallTestDeck); Player player = new Player("Gustav"); player.DrawCards(randomPair); player.DrawCards(TestMethods.DealTopCards(3, smallTestDeck)); player.SortHand(); //act player.IdentifyHand(); //assert Assert.IsTrue(player.HandType == HandType.Pair); } }
public void CanAssignFullHouse() { for (var i = 0; i < 100; i++) { Dealer dealer = new Dealer(); Random random = new Random(); List <int> randomNumbers = new List <int>(); for (var j = 0; j < 2; j++) { while (true) { int tempNum = TestMethods.RandomRank(); if (!randomNumbers.Contains(tempNum)) { randomNumbers.Add(tempNum); break; } } } int randomRank1 = randomNumbers[0]; int randomRank2 = randomNumbers[1]; var randomPair1 = dealer.Deck.Where(card => (int)card.Rank == randomRank1).ToArray(); var randomPair2 = dealer.Deck.Where(card => (int)card.Rank == randomRank2).ToArray(); while (randomPair1.Length > 3) { int removeCard1 = random.Next(0, randomPair1.Length); randomPair1[removeCard1] = null; randomPair1 = randomPair1.Where(card => card != null).ToArray(); } while (randomPair2.Length > 2) { int removeCard2 = random.Next(0, randomPair2.Length); randomPair2[removeCard2] = null; randomPair2 = randomPair2.Where(card => card != null).ToArray(); } var smallTestDeck = TestMethods.OneOfEachRankDeck(); smallTestDeck = smallTestDeck.Where(card => (int)card.Rank != randomRank1).ToArray(); smallTestDeck = smallTestDeck.Where(card => (int)card.Rank != randomRank2).ToArray(); smallTestDeck = TestMethods.Shuffle(smallTestDeck); Player player = new Player("Gustav"); player.DrawCards(randomPair1); player.DrawCards(randomPair2); player.SortHand(); //act player.IdentifyHand(); //assert Assert.IsTrue(player.HandType == HandType.FullHouse); } }
public void CanAssignFourOfAKind() { for (var i = 0; i < 100; i++) { Dealer dealer = new Dealer(); int randomRank = TestMethods.RandomRank(); var randomFOK = dealer.Deck.Where(card => (int)card.Rank == randomRank).ToArray(); var smallTestDeck = TestMethods.OneOfEachRankDeck(); smallTestDeck = smallTestDeck.Where(card => (int)card.Rank != randomRank).ToArray(); smallTestDeck = TestMethods.Shuffle(smallTestDeck); Player player = new Player("Gustav"); player.DrawCards(randomFOK); player.DrawCards(TestMethods.DealTopCards(1, smallTestDeck)); player.SortHand(); //act player.IdentifyHand(); //assert Assert.IsTrue(player.HandType == HandType.FourOfAKind); } }
public void CanAssignHighCard() { for (var i = 0; i < 10000; i++) { //assemble int firstSuiteOccurrences = 0; Suite firstSuite = 0; List <Suite> suites = new List <Suite>(); List <Rank> rankes = new List <Rank>(); for (var j = 0; j < 5; j++) { while (true) { Suite tempSuite = (Suite)TestMethods.RandomSuite(); firstSuite = j == 0 ? tempSuite : firstSuite; firstSuiteOccurrences += tempSuite == firstSuite ? 1 : 0; if (!(firstSuiteOccurrences >= 5 && tempSuite == firstSuite)) { suites.Add(tempSuite); break; } } while (true) { bool isStraight = true; Rank tempRank = (Rank)TestMethods.RandomRank(); if (rankes.Count == 4) { List <Rank> tempRankes = new List <Rank>(); foreach (Rank element in rankes) { tempRankes.Add(element); } tempRankes.Add(tempRank); tempRankes.Sort(); for (var g = 0; g < 4; g++) { isStraight = (int)tempRankes[g] != (int)tempRankes[g + 1] - 1 ? false : isStraight; } if ((int)tempRankes[0] == 2 && (int)tempRankes[1] == 3 && (int)tempRankes[2] == 4 && (int)tempRankes[3] == 5 && (int)tempRankes[4] == 14) { isStraight = true; } } if (!rankes.Contains(tempRank) && !(rankes.Count == 4 && isStraight)) { rankes.Add(tempRank); break; } } } Player player = new Player("Gustav"); ICard[] hand = new ICard[5] { new Card(suites[0], rankes[0]), new Card(suites[1], rankes[1]), new Card(suites[2], rankes[2]), new Card(suites[3], rankes[3]), new Card(suites[4], rankes[4]) }; player.DrawCards(hand); player.SortHand(); //act player.IdentifyHand(); //assert Assert.IsTrue(player.HandType == HandType.HighCard); } }
public void CanAssignFlush() { for (var i = 0; i < 100; i++) { //assemble List <Rank> rankes = new List <Rank>(); Suite suite = (Suite)TestMethods.RandomSuite(); int pairs = 0; bool almostFullHouse = false; bool threeOfAKind = false; for (var j = 0; j < 5; j++) { while (true) { bool isStraight = true; Rank tempRank = (Rank)TestMethods.RandomRank(); if (rankes.Count == 4) { List <Rank> tempRankes = new List <Rank>(); foreach (Rank element in rankes) { tempRankes.Add(element); } tempRankes.Add(tempRank); tempRankes.Sort(); for (var g = 0; g < 4; g++) { isStraight = (int)tempRankes[g] != (int)tempRankes[g + 1] - 1 ? false : isStraight; } if ((int)tempRankes[0] == 2 && (int)tempRankes[1] == 3 && (int)tempRankes[2] == 4 && (int)tempRankes[3] == 5 && (int)tempRankes[4] == 14) { isStraight = true; } } Rank[] tempRankOccurrences = rankes.Where(element => element == tempRank).ToArray(); pairs += tempRankOccurrences.Length == 1 ? 1: 0; threeOfAKind = tempRankOccurrences.Length == 2 ? true: threeOfAKind; almostFullHouse = tempRankOccurrences.Length == 2 && pairs == 2 || tempRankOccurrences.Length == 1 && threeOfAKind ? true: almostFullHouse; if (tempRankOccurrences.Length != 3 && !(almostFullHouse && rankes.Contains(tempRank)) && !(rankes.Count == 4 && isStraight)) { rankes.Add(tempRank); break; } } } var cards = new Card[5] { new Card(suite, (Rank)rankes[0]), new Card(suite, (Rank)rankes[1]), new Card(suite, (Rank)rankes[2]), new Card(suite, (Rank)rankes[3]), new Card(suite, (Rank)rankes[4]) }; Player player = new Player("Gustav"); player.DrawCards(cards); player.SortHand(); //act player.IdentifyHand(); //assert Assert.IsTrue(player.HandType == HandType.Flush); } }