public void DeckOfCards_Should_Check_Renew() { //arrange int cardCount = 52; int suitCount = 4; var deck = new BlackJackDeck(); deck.GetRandomCard(); deck.GetRandomCard(); //act deck.Renew(); //assert deck.Cards.Count.ShouldBeEquivalentTo(cardCount); var grouped = deck.Cards.GroupBy(x => x.Suit).ToDictionary(x => x.Key); grouped.Keys.ElementAt(0).ShouldBeEquivalentTo(Suit.Clubs); grouped.Keys.ElementAt(1).ShouldBeEquivalentTo(Suit.Diamonds); grouped.Keys.ElementAt(2).ShouldBeEquivalentTo(Suit.Hearts); grouped.Keys.ElementAt(3).ShouldBeEquivalentTo(Suit.Spades); foreach (var item in grouped) { var values = grouped[item.Key].Select(x => x.Rank).ToList(); values.Count.Should().Be(cardCount / suitCount); foreach (Rank rank in Enum.GetValues(typeof(Rank))) { values.Contains(rank).ShouldBeEquivalentTo(true); } } deck.Cards.All(x => x.GameType == GameType.BlackJack).ShouldBeEquivalentTo(true); }
public void DeckOfCards_Should_Get_Random_Card_Throw_If_Empty() { //arrange int cardCount = 52; var deck = new BlackJackDeck(); for (int i = 0; i < cardCount; i++) { deck.GetRandomCard(); } //act Action act = () => deck.GetRandomCard(); //assert act.ShouldThrow <InvalidOperationException>(); }
public void DeckOfCards_Should_Get_Random_Card() { //arrange int cardCount = 52; var deck = new BlackJackDeck(); //act var card = deck.GetRandomCard(); //assert deck.Cards.Count.ShouldBeEquivalentTo(cardCount - 1); deck.Cards.Contains(card).ShouldBeEquivalentTo(false); deck.Cards.All(x => x.GameType == GameType.BlackJack).ShouldBeEquivalentTo(true); }