using System; using System.Collections.Generic; using System.Text; using NUnit.Framework; using PokerTournamentManager.Framework; using PokerTournamentManager.Framework.Managers; namespace PokerTournamentManager.AcceptanceTests { [TestFixture] public class TournamentTests { [Test] public void CreateDefaultTournamentAndRegisterPlayers() { int expectedNumberOfPlayers = 10; Money expectedTotalBuyinAmount = new Money(0); Money buyinAmout = new Money(TournamentManager.DEFAULT_BUYIN_AMOUNT); ChipCount buyinChipsAmount = new ChipCount(TournamentManager.DEFAULT_STARTING_CHIPS); // Create a new tournament with default values Tournament tourney = CreateDefaultTournament(); // Register some players RegisterPlayers(ref tourney, expectedNumberOfPlayers); Assert.AreEqual(expectedNumberOfPlayers, tourney.Players.Count); // Assign the players to their seats AssignPlayersToTheirSeats(ref tourney); } private static void AssignPlayersToTheirSeats(ref Tournament tournament) { // Assign everyone to their seats tournament.AssignSeating(); List unseatedPlayers = new List(tournament.Players); // Iterate through each of the seats at each of tables // and remove any seated players from the "unseated players" list. foreach (Table table in tournament.Tables) { foreach (Seat seat in table.Seats) { unseatedPlayers.Remove(seat.CurrentPlayer); } } // Assert that there are no more unseated players left // (everyone has been seated) Assert.AreEqual(0, unseatedPlayers.Count); } private static Tournament CreateDefaultTournament() { // Create a new tournament with default values Tournament tourney = TournamentManager.CreateTournament(); // Assert that all the default values were in fact set as assumed Assert.IsNotNull(tourney); Assert.AreEqual(0, tourney.Players.Count); Assert.AreEqual(new Money(0), tourney.PrizePool); Assert.AreEqual(new Money(TournamentManager.DEFAULT_BUYIN_AMOUNT), tourney.Settings.BuyInAmount); Assert.AreEqual(new ChipCount(TournamentManager.DEFAULT_STARTING_CHIPS), tourney.Settings.StartingChipsAmount); return tourney; } private static void RegisterPlayers(ref Tournament tournament, int numPlayers) { // Get the amount required from each player to register for the tournament Money singleBuyinAmount = tournament.Settings.BuyInAmount; // Get the amount of starting chips given to each player ChipCount startingChipsAmount = tournament.Settings.StartingChipsAmount; // Set the expected total buyin counter to zero Money expectedTotalPrizePool = new Money(0); for (int i = 1; i <= numPlayers; i++) { // Create a new player Player player = new Player(); // Make sure they don't have any chips yet Assert.AreEqual(new ChipCount(0), player.ChipCount); // Now register the player player.ChipCount += tournament.Register(player); // Increase the expected running pize pool total // by the amount of one Buy In expectedTotalPrizePool += singleBuyinAmount; // Make sure the player was registered properly Assert.Contains(player, tournament.Players); Assert.AreEqual(i, tournament.Players.Count); // Make sure the Buyin was added to the Prize Pool (no skimming!) Assert.AreEqual(expectedTotalPrizePool, tournament.PrizePool); // Make sure the player got his chips Assert.AreEqual(startingChipsAmount, player.ChipCount); // TODO: Track outstanding chips? } } } }