public Deal(List<Player> players, Player dealer) { Players = players; Players.Select(p => p.Role = null); Dealer = Players.Single(p => p.Name == dealer.Name); Dealer.Role = CreateRole(players); }
public void DealTest_PokerDeck() { // arrange Deck deck = DeckFactory.CreatePokerDeck(); Player player = new Player(); // arrange/act Assert.AreEqual(deck.Size, 54); ICard card = deck.GetNextCard(); Assert.IsInstanceOfType(card, typeof(Card)); player.Hand.AddCard(card); Assert.AreEqual(player.Hand.Size, 1); Assert.AreEqual(deck.Size, 53); card = deck.GetNextCard(); Assert.IsInstanceOfType(card, typeof(Card)); player.Hand.AddCard(card); Assert.AreEqual(player.Hand.Size, 2); Assert.AreEqual(deck.Size, 52); card = deck.GetNextCard(); Assert.IsInstanceOfType(card, typeof(Card)); player.Hand.AddCard(card); Assert.AreEqual(player.Hand.Size, 3); Assert.AreEqual(deck.Size, 51); }
public Bet(Player player, decimal amount, object betTarget) { _player = player; Bettor.BetAmount = amount; BetTarget = betTarget; // we don't need to use the factory method pattern here to create a Bettor, since the Bet class delegates all // betting behavior to its Player member, which has its own member Bettor. // Bettor = CreateBettor(); }
public BlackjackBet(Player player, decimal amount, object betTarget) : base(player, amount, betTarget) { }
public void AddPlayer(Player player) { _allPlayers.Add(player); }
public Shuffle(Player shuffler) { Shuffler = shuffler; Shuffler.Role = new ShufflerRole(); }
private void BlackjackDealTransactionTest() { // arrange int numOfRoundsDealt = 0; List<Player> players = new List<Player>(); Player alex = new Player { Name = "Alex" }; Player bill = new Player { Name = "Bill" }; Player charlie = new Player { Name = "Charlie" }; players.Add(alex); players.Add(bill); players.Add(charlie); BlackjackDeal blackjackDeal = new BlackjackDeal(players, bill); // act blackjackDeal.Execute(); // assert numOfRoundsDealt++; foreach (Player player in players) { Assert.AreEqual(player.Hand.Size, numOfRoundsDealt); } Assert.AreEqual(Deck.Instance.Size, Deck.Instance.FullDeckSize - (players.Count * numOfRoundsDealt)); // act blackjackDeal.Execute(); // assert numOfRoundsDealt++; foreach (Player player in players) { Assert.AreEqual(player.Hand.Size, numOfRoundsDealt); } Assert.AreEqual(Deck.Instance.Size, Deck.Instance.FullDeckSize - (players.Count * numOfRoundsDealt)); // act blackjackDeal.Execute(); // assert numOfRoundsDealt++; foreach (Player player in players) { Assert.AreEqual(player.Hand.Size, numOfRoundsDealt); } Assert.AreEqual(Deck.Instance.Size, Deck.Instance.FullDeckSize - (players.Count * numOfRoundsDealt)); }
public void BlackjackBetTransactionTest() { // arrange decimal startingChips = 100; decimal alexBetAmount = 5; decimal billBetAmount = 6; decimal charlieBetAmount = 7; List<Player> players = new List<Player>(); Player alex = new Player(startingChips) { Name = "Alex" }; Player bill = new Player(startingChips) { Name = "Bill" }; Player charlie = new Player(startingChips) { Name = "Charlie" }; players.Add(alex); players.Add(bill); players.Add(charlie); var bet1 = new BlackjackBet(alex, alexBetAmount, Pot.Instance); var bet2 = new BlackjackBet(bill, billBetAmount, Pot.Instance); var bet3 = new BlackjackBet(charlie, charlieBetAmount, Pot.Instance); // act bet1.Execute(); bet2.Execute(); bet3.Execute(); // assert Assert.AreEqual<decimal>(Pot.Instance.Chips, alexBetAmount + billBetAmount + charlieBetAmount); Assert.AreEqual<decimal>(alex.Bettor.Chips, startingChips - alexBetAmount); Assert.AreEqual<decimal>(alex.Bettor.Chips, bet1.Bettor.Chips); Assert.AreEqual<decimal>(bill.Bettor.Chips, startingChips - billBetAmount); Assert.AreEqual<decimal>(bill.Bettor.Chips, bet2.Bettor.Chips); Assert.AreEqual<decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount); Assert.AreEqual<decimal>(charlie.Bettor.Chips, bet3.Bettor.Chips); // simulate three winner splitting the pot // act Pot.Instance.TakePot(players.Select(p => p.Bettor).ToList()); // assert decimal potAmount = alexBetAmount + billBetAmount + charlieBetAmount; Assert.AreEqual<decimal>(alex.Bettor.Chips, startingChips - alexBetAmount + (potAmount / 3.0M)); Assert.AreEqual<decimal>(bill.Bettor.Chips, startingChips - billBetAmount + (potAmount / 3.0M)); Assert.AreEqual<decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount + (potAmount / 3.0M)); Assert.AreEqual<decimal>(Pot.Instance.Chips, 0); }
public void BlackjackIdentifyWinnerTransactionTest_BasicDeck() { // arrange List<Player> players = new List<Player>(); Player alex = new Player { Name = "Alex" }; Player bill = new Player { Name = "Bill" }; Player charlie = new Player { Name = "Charlie" }; players.Add(alex); players.Add(bill); players.Add(charlie); Shuffle shuffle = new Shuffle(bill); shuffle.Execute(); BlackjackDeal blackjackDeal = new BlackjackDeal(players, bill); Random rand = new Random(DateTime.Now.Millisecond); int upperBound = rand.Next(2,6); // deal anywhere from 2 to 5 cards to each player for (int i = 1; i <= upperBound; i++) { blackjackDeal.Execute(); } IdentifyWinnerBlackjack identWinner = new IdentifyWinnerBlackjack(players); // act identWinner.Execute(); // assert // verify that the winner(s) has/have the highest score Assert.AreEqual(players.Where(p => p.HandStatus == HandStatus.Winner).Select(p => p.Hand.Score).Max(), players.Select(p => p.Hand.Score).Max()); }
public void BlackjackShuffleTransactionTest_PokerDeck() { // arrange Deck.Instance = DeckFactory.CreatePokerDeck(); List<Player> players = new List<Player>(); Player alex = new Player { Name = "Alex" }; Player bill = new Player { Name = "Bill" }; Player charlie = new Player { Name = "Charlie" }; players.Add(alex); players.Add(bill); players.Add(charlie); Shuffle shuffle = new Shuffle(bill); // act shuffle.Execute(); // assert Assert.IsTrue(IsDeckShuffled(Deck.Instance)); }
public void BlackjackShuffleTransactionTest_BasicDeck() { // NOTE: A game transaction using the basic (52-card) deck requires no explicit instantiation of the deck // by the client code; a basic deck is the default Instance. // arrange List<Player> players = new List<Player>(); Player alex = new Player { Name = "Alex" }; Player bill = new Player { Name = "Bill" }; Player charlie = new Player { Name = "Charlie" }; players.Add(alex); players.Add(bill); players.Add(charlie); Shuffle shuffle = new Shuffle(bill); // act shuffle.Execute(); // assert Assert.IsTrue(IsDeckShuffled(Deck.Instance)); }
public void BlackjackBetTest_MultipleWinners() { // arrange decimal startingChips = 100.0M; decimal betAmount = 5.00M; Pot.Instance.Chips = 0; List<Player> players = new List<Player>(); Player alex = new Player { Name = "Alex", Bettor = new BlackjackBettor(startingChips) }; Player bill = new Player { Name = "Bill", Bettor = new BlackjackBettor(startingChips) }; Player charlie = new Player { Name = "Charlie", Bettor = new BlackjackBettor(startingChips) }; players.Add(alex); players.Add(bill); players.Add(charlie); // act foreach (var player in players) { player.Bettor.BetAmount = betAmount; player.Bettor.Bet(); } // assert Assert.AreEqual<decimal>(Pot.Instance.Chips, betAmount * players.Count); foreach (var player in players) { Assert.AreEqual<decimal>(player.Bettor.Chips, startingChips - betAmount); } // simulate three winner splitting the pot // act Pot.Instance.TakePot(players.Select(p => p.Bettor).ToList()); // assert Assert.AreEqual<decimal>(alex.Bettor.Chips, startingChips); Assert.AreEqual<decimal>(bill.Bettor.Chips, startingChips); Assert.AreEqual<decimal>(charlie.Bettor.Chips, startingChips); Assert.AreEqual<decimal>(Pot.Instance.Chips, 0); }
public void ScoreHandTest_Blackjack_Aces_BasicDeck() { // arrange IdentifyWinnerBlackjack identWinnerBlackjack = new IdentifyWinnerBlackjack(null); Player player = new Player(); long expectedScore = 0; player.Hand.AddCard(new Card() { Name = CardName.Ace, Suit = CardSuit.Clubs}); expectedScore = 11; // act identWinnerBlackjack.ScoreHand(player.Hand); // assert Assert.AreEqual(expectedScore, player.Hand.Score); // arrange player.Hand.AddCard(new Card() { Name = CardName.Ace, Suit = CardSuit.Diamonds }); expectedScore = 12; // value the Ace as 1, not 11, or we would bust // act identWinnerBlackjack.ScoreHand(player.Hand); // assert Assert.AreEqual(expectedScore, player.Hand.Score); // arrange player.Hand.AddCard(new Card() { Name = CardName.Two, Suit = CardSuit.Diamonds }); expectedScore = 14; // act identWinnerBlackjack.ScoreHand(player.Hand); // assert Assert.AreEqual(expectedScore, player.Hand.Score); // arrange player.Hand.AddCard(new Card() { Name = CardName.King, Suit = CardSuit.Diamonds }); expectedScore = 14; // both Aces should now be valued as 1 to avoid a bust // act identWinnerBlackjack.ScoreHand(player.Hand); // assert Assert.AreEqual(expectedScore, player.Hand.Score); // arrange player.Hand.AddCard(new Card() { Name = CardName.Nine, Suit = CardSuit.Diamonds }); expectedScore = -1; // even with both Aces valued as 1, we will still bust // act identWinnerBlackjack.ScoreHand(player.Hand); // assert Assert.AreEqual(expectedScore, player.Hand.Score); }
public void SetDealer(Player player) { Players.Select(p => p.Role = null).ToArray(); // clear all players' roles Players.Single(p => p.Name == player.Name).Role = new BlackjackDealerRole(Players); Dealer = player; }
public void RemovePlayer(Player player) { Players.Remove(player); }