class testC_FinishingTheTournament(unittest.TestCase): def setUp(self): description = 'Finishing the tournament,' print description, self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) pt = PlaysTournament(inter) pt._playsHand = FinishAfterFirstHand(inter) pt._playsHand.evt_done += pt._onHandDone self._done = False self.msngr.join('p1') self.msngr.join('p2') pt.evt_done += self._onTournamentFinished pt.start() def _onTournamentFinished(self, sender=None, args=None): self._done = True def testA_theWinnerIsAnnounced(self): '''the winner is announced''' self.assertTrue('WINNER' in self.msngr.broadcastMessages) def testB_signalsThatItIsFinished(self): '''signals that it is finished''' self.assertTrue(self._done) def testC_doesNotDealAnyMoreHands(self): '''does not deal any more hands''' self.assertTrue(self._done)
class testH_PlayerSendsNonNumericMessage(unittest.TestCase): def setUp(self): print 'a player sends a non numeric message,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 'XX') self.tb = TakesBets(self.inter) self.tb.start() def testA_theBetShouldBeIgnored(self): '''the bet should be ignored''' self.assertFalse('BET p1 XX' in self.msngr.allMessages) def testB_takeThePlayersCards(self): '''take the players cards''' self.assertFalse(self.inter.players[0].isPlaying()) def testC_takeThePlayersChips(self): '''take the players chips''' self.assertEqual(self.inter.players[0].chips, 0) def testD_kickOutThePlayer(self): '''kick out the player''' outMessage = 'OUT NOT_A_NUMBER' self.assertTrue(('p1', outMessage) in self.msngr.allMessages)
class testG_PlayerPlacesBetOutOfTurn(unittest.TestCase): def setUp(self): print 'a player places a bet out of turn,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p2', 1000) self.tb = TakesBets(self.inter) self.tb.start() def testA_theBetShouldBeIgnored(self): '''the bet should be ignored''' self.assertFalse('BET p2 1000' in self.msngr.allMessages) def testB_thePlayerIsKickedOut(self): '''the player is kicked out''' self.assertFalse(self.inter.players[1].isPlaying()) def testC_takeThePlayersChips(self): '''take the players chips''' self.assertEqual(self.inter.players[1].chips, 0) def testD_kickOutThePlayer(self): '''kick out the player''' self.assertTrue(('p2', 'OUT OUT_OF_TURN') in self.msngr.allMessages)
class testF_PlayerBetsMoreThanTheyHave(unittest.TestCase): def setUp(self): print 'Player bets more than they have,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 2000) self.tb = TakesBets(self.inter) self.tb.start() def testA_kickThePlayerOut(self): '''kick the player out''' outMessage = 'OUT OVERDRAWN' self.assertTrue(('p1', outMessage) in self.msngr.sentMessages) def testB_playerIsOut(self): '''the player is out''' self.assertFalse(self.inter.players[0].isPlaying()) def testC_takePlayersChips(self): '''take the players chips''' self.assertEqual(self.inter.players[0].chips, 0)
class testE_PlayerFolding(unittest.TestCase): def setUp(self): print 'A player folding,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 2).bet('p2', 0) self.tb = TakesBets(self.inter) self.tb.start() def testA_playerIsToldTheyAreOut(self): '''the player is told that they are out''' self.assertTrue(('p2', 'OUT FOLD') in self.msngr.sentMessages) def testB_thePlayerIsNotPlaying(self): '''the player is not playing''' self.assertFalse(self.inter.players[1].isPlaying())
class testA_StartingTheTournament(unittest.TestCase): def setUp(self): print 'Starting the tournament,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) pt = PlaysTournament(inter) self.msngr.join('p1') self.msngr.join('p2') pt.start() def testA_thePlayersAreAnnounced(self): '''the players are announced''' self.assertEqual(self.msngr.dealingMessages, ['DEALING p1 p2']) def testB_cardsAreDealt(self): '''the cards are dealt''' privateCards = [('p1', 'CARD'), ('p2', 'CARD')] self.assertEqual(privateCards, self.msngr.cardMessages) def testC_betsAreBeingTaken(self): '''bets are being taken''' self.assertEqual(('p1', 'GO'), self.msngr.lastMessage)
class testI_PlayerGoesAllIn(unittest.TestCase): def setUp(self): print 'A player goes all in,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = self.inter.players[0] self.p2 = self.inter.players[1] self.p1.chips = 100 self.p2.chips = 50 for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 60).bet('p2', 50) self.tb = TakesBets(self.inter) self.tb.start() def testA_theyCanBetLessThanMinimum(self): '''they can be less than minimum''' self.assertFalse(('p2', 'OUT FOLD') in self.msngr.sentMessages)
def setUp(self): print 'Same player joining twice,', self.shortDescription() self.msngr = StubMessenger() self.interactsWithPlayers = InteractsWithPlayers(self.msngr) self.msngr.join('player') self.msngr.join('player')
def setUp(self): print 'Telling the players to bet,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.tb = TakesBets(self.inter)
def setUp(self): print 'When down to one player,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.ph = PlaysHand(inter) self._done = False self.ph.evt_done += self.onDone
def setUp(self): print 'Starting the tournament,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) pt = PlaysTournament(inter) self.msngr.join('p1') self.msngr.join('p2') pt.start()
def setUp(self): print 'Dealing cards for texas hold em,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = inter.players[0] self.p2 = inter.players[1] self.txh = DealsTexasHoldEm(inter)
def setUp(self): print 'Announcing the winners,', self.shortDescription() self.msngr = StubMessenger() self.interact = InteractsWithPlayers(self.msngr, chips=1000) self.distribute = DistributesWinnings(self.interact) self.msngr.join('winner') self.msngr.join('loser') self.winner = self.interact.players[0] self.loser = self.interact.players[1]
def setUp(self): print 'When down to one player,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.inter.players[0].cards(['any cards']) self.tb = TakesBets(self.inter) self.tb.evt_done += self.onBetsTaken self.betsTaken = False self.tb.start()
class testA_GivingWinnersTheirChips(unittest.TestCase): def setUp(self): print 'Giving winners their chips,', self.shortDescription() self.msngr = StubMessenger() self.interact = InteractsWithPlayers(self.msngr, chips=1000) self.distribute = DistributesWinnings(self.interact) self.msngr.join('winner') self.msngr.join('loser') self.winner = self.interact.players[0] self.loser = self.interact.players[1] def testA_withoutSidePotsTheTopRankedPlayerWinsAll(self): '''without side pots the top ranked player wins all''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.loser.cards(cards('13S,9D,5C,3D,2C')) self.winner.bet(5) self.loser.bet(5) self.distribute.toPlayers() self.assertEqual(self.winner.chips, 1005) self.assertEqual(self.loser.chips, 995) def testB_theTopRankedPlayerCannotWinMoreThanAllowed(self): '''if a player is only in a side pot, that is all they can win''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.loser.cards(cards('13S,9D,5C,3D,2C')) self.winner.bet(5) self.loser.bet(10) self.distribute.toPlayers() self.assertEqual(self.winner.chips, 1005) self.assertEqual(self.loser.chips, 995) def testC_splittingThePot(self): '''players will split the pot if they are ranked the same''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.loser.cards(cards('14C,14D,4S,3H,2C')) self.winner.bet(5) self.loser.bet(5) self.distribute.toPlayers() self.assertEqual(self.winner.chips, 1000) self.assertEqual(self.loser.chips, 1000)
def setUp(self): print 'After a hand is played,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) pt = PlaysTournament(inter) self.msngr.join('p1') self.msngr.join('p2') self.msngr.bet('p1', 100) self.msngr.bet('p2', 0) pt.start()
def setUp(self): print 'Dealing cards and taking bets,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = inter.players[0] self.p2 = inter.players[1] self.ph = PlaysHand(inter) self._done = False self.ph.evt_done += self.onDone
class testB_SamePlayerJoiningTwice(unittest.TestCase): def setUp(self): print 'Same player joining twice,', self.shortDescription() self.msngr = StubMessenger() self.interactsWithPlayers = InteractsWithPlayers(self.msngr) self.msngr.join('player') self.msngr.join('player') def testA_thePlayerIsOnlyRegisteredOnce(self): '''the player is only registered once''' self.assertEquals(1, len(self.interactsWithPlayers.players))
def setUp(self): print 'Player bets more than they have,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 2000) self.tb = TakesBets(self.inter) self.tb.start()
def setUp(self): print 'a player sends a non numeric message,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 'XX') self.tb = TakesBets(self.inter) self.tb.start()
def setUp(self): print 'A player folding,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 2).bet('p2', 0) self.tb = TakesBets(self.inter) self.tb.start()
def testD_skipsPlayerThatAreNotPlaying(self): '''skips player that are not playing''' self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.msngr.join('p3') self.inter.players[1].cards(['any cards']) self.inter.players[2].cards(['any cards']) self.tb = TakesBets(self.inter) self.tb.start() self.assertEqual(('p2', 'GO'), self.msngr.lastMessage)
def setUp(self): print 'a player places a bet out of turn,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p2', 1000) self.tb = TakesBets(self.inter) self.tb.start()
def setUp(self): description = 'Finishing the tournament,' print description, self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) pt = PlaysTournament(inter) pt._playsHand = FinishAfterFirstHand(inter) pt._playsHand.evt_done += pt._onHandDone self._done = False self.msngr.join('p1') self.msngr.join('p2') pt.evt_done += self._onTournamentFinished pt.start()
def setUp(self): print 'deciding when all bets are taken,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = self.inter.players[0] self.p2 = self.inter.players[1] for player in self.inter.players: player.cards(['any cards']) self.tb = TakesBets(self.inter) self.tb.evt_done += self.onBetsTaken self.betsTaken = False
class testA_TellingThePlayersToBet(unittest.TestCase): def setUp(self): print 'Telling the players to bet,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.tb = TakesBets(self.inter) def testA_tellTheFirstPlayerToTakeTheirGo(self): '''tell the first player to take their go''' self.tb.start() self.assertEqual(('p1', 'GO'), self.msngr.lastMessage) def testB_tellTheSecondPlayerToTakeTheirGo(self): '''tell the second player to take their go''' self.msngr.bet('p1', 10) self.tb.start() self.assertEqual(('p2', 'GO'), self.msngr.lastMessage) def testC_backToFirstPlayerAfterTheLast(self): '''moves back to the first player after the last''' self.msngr.bet('p1', 10).bet('p2', 20) self.tb.start() self.assertEqual(('p1', 'GO'), self.msngr.lastMessage) def testD_skipsPlayerThatAreNotPlaying(self): '''skips player that are not playing''' self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.msngr.join('p3') self.inter.players[1].cards(['any cards']) self.inter.players[2].cards(['any cards']) self.tb = TakesBets(self.inter) self.tb.start() self.assertEqual(('p2', 'GO'), self.msngr.lastMessage)
class testA_PlayerJoining(unittest.TestCase): def setUp(self): print 'Player joining,', self.shortDescription() self.msngr = StubMessenger() self.interactsWithPlayers = InteractsWithPlayers(self.msngr) self.msngr.join('player') self.player = self.interactsWithPlayers.players[0] def testA_thePlayerReceivesChips(self): '''the player receives chips''' self.assertEquals(1000, self.player.chips) def testB_anAcknowledgementIsSent(self): '''an acknowledgement is sent to the player''' self.assertEquals(('player', 'CHIPS 1000'), self.msngr.lastMessage)
def setUp(self): print 'Rounds of cards and betting,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = inter.players[0] self.p2 = inter.players[1] self.ph = PlaysHand(inter) self.ph.evt_done += self._onDone self._done = False self.msngr.bet('p1', 10).bet('p2', 10) self.msngr.bet('p1', 10).bet('p2', 10) self.msngr.bet('p1', 10).bet('p2', 10) self.msngr.bet('p1', 10).bet('p2', 10)
class testB_AnnouncingTheWinners(unittest.TestCase): def setUp(self): print 'Announcing the winners,', self.shortDescription() self.msngr = StubMessenger() self.interact = InteractsWithPlayers(self.msngr, chips=1000) self.distribute = DistributesWinnings(self.interact) self.msngr.join('winner') self.msngr.join('loser') self.winner = self.interact.players[0] self.loser = self.interact.players[1] def testA_shouldAnnounceTheWinners(self): '''should announce the winners of the game''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.loser.cards(cards('13S,9D,5C,3D,2C')) self.winner.bet(5) self.loser.bet(5) self.distribute.toPlayers() self.assertEqual(self.msngr.wonMessages, [ 'WON winner loser 5 14C,14D,4S,3H,2C pairHand', 'WON winner winner 5 14C,14D,4S,3H,2C pairHand', 'WON loser winner 0 13S,9D,5C,3D,2C highestCard', 'WON loser loser 0 13S,9D,5C,3D,2C highestCard' ]) def testB_shouldOnlyDistributeToPlayersInTheGame(self): '''should only distribute the winnings to players in the game''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.winner.cards([]) # only in game players have cards self.winner.bet(5) self.distribute.toPlayers() self.assertEqual(self.msngr.wonMessages, [ 'WON winner loser 0 14C,14D,4S,3H,2C pairHand', 'WON winner winner 5 14C,14D,4S,3H,2C pairHand' ])
class testC_DealingTheRemainingCards(unittest.TestCase): def onDone(self, sender, args=None): self._done = True def setUp(self): print 'Dealing the remaining cards,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.msngr.join('p3') self.p1 = inter.players[0] self.p2 = inter.players[1] self.p3 = inter.players[2] self.txh = DealsTexasHoldEm(inter) def testA_allPlayersAreOutOfChips(self): '''when all players are out of chips''' self.p1.chips = 0 self.p2.chips = 0 self.p3.chips = 0 self.txh.start() allDealt = [('p1', 'CARD'), ('p2', 'CARD'), ('p3', 'CARD'), 'CARD', 'CARD', 'CARD'] self.assertEqual(allDealt, self.msngr.cardMessages) def testB_allBarOnePlayersAreOutOfChips(self): '''when all players bar one are out of chips''' self.p2.chips = 0 self.p3.chips = 0 self.txh.start() allDealt = [('p1', 'CARD'), ('p2', 'CARD'), ('p3', 'CARD'), 'CARD', 'CARD', 'CARD'] self.assertEqual(allDealt, self.msngr.cardMessages)
class testB_AnnouncingTheWinners(unittest.TestCase): def setUp(self): print 'Announcing the winners,', self.shortDescription() self.msngr = StubMessenger() self.interact = InteractsWithPlayers(self.msngr, chips=1000) self.distribute = DistributesWinnings(self.interact) self.msngr.join('winner') self.msngr.join('loser') self.winner = self.interact.players[0] self.loser = self.interact.players[1] def testA_shouldAnnounceTheWinners(self): '''should announce the winners of the game''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.loser.cards(cards('13S,9D,5C,3D,2C')) self.winner.bet(5) self.loser.bet(5) self.distribute.toPlayers() self.assertEqual(self.msngr.wonMessages, ['WON winner loser 5 14C,14D,4S,3H,2C pairHand', 'WON winner winner 5 14C,14D,4S,3H,2C pairHand', 'WON loser winner 0 13S,9D,5C,3D,2C highestCard', 'WON loser loser 0 13S,9D,5C,3D,2C highestCard']) def testB_shouldOnlyDistributeToPlayersInTheGame(self): '''should only distribute the winnings to players in the game''' self.winner.cards(cards('14C,14D,4S,3H,2C')) self.winner.cards([]) # only in game players have cards self.winner.bet(5) self.distribute.toPlayers() self.assertEqual(self.msngr.wonMessages, ['WON winner loser 0 14C,14D,4S,3H,2C pairHand', 'WON winner winner 5 14C,14D,4S,3H,2C pairHand'])
class testB_TheNextRoundOfBetting(unittest.TestCase): def setUp(self): print 'The next round of betting,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') for player in self.inter.players: player.cards(['any cards']) self.tb = TakesBets(self.inter) def testA_shouldStartWithTheLastToRaise(self): '''should start with the last to raise''' self.msngr.bet('p1', 0).bet('p2', 100).bet('p1', 100) self.tb.start() self.tb.next() self.assertEqual(('p2', 'GO'), self.msngr.lastMessage)
class testD_WhenDownToOnePlayer(unittest.TestCase): def onBetsTaken(self, sender, args=None): self.betsTaken = True def setUp(self): print 'When down to one player,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.inter.players[0].cards(['any cards']) self.tb = TakesBets(self.inter) self.tb.evt_done += self.onBetsTaken self.betsTaken = False self.tb.start() def testA_allBetsAreTaken(self): '''all bets are taken''' self.assertTrue(self.betsTaken)
def setUp(self): print 'A player goes all in,', self.shortDescription() self.msngr = StubMessenger() self.inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.p1 = self.inter.players[0] self.p2 = self.inter.players[1] self.p1.chips = 100 self.p2.chips = 50 for player in self.inter.players: player.cards(['any cards']) self.msngr.bet('p1', 60).bet('p2', 50) self.tb = TakesBets(self.inter) self.tb.start()
class testD_WhenDownToOnePlayer(unittest.TestCase): def onDone(self, sender, args=None): self._done = True def setUp(self): print 'When down to one player,', self.shortDescription() self.msngr = StubMessenger() inter = InteractsWithPlayers(self.msngr) self.msngr.join('p1') self.msngr.join('p2') self.ph = PlaysHand(inter) self._done = False self.ph.evt_done += self.onDone def testA_announceThatItIsDone(self): '''announce that it is done''' self.msngr.bet('p1', 10).bet('p2', 0) self.ph.start() self.assertTrue(self._done) def testB_noMoreCardsAreDealt(self): '''no more cards are dealt''' self.msngr.bet('p1', 10).bet('p2', 0) self.ph.start() privateCards = [('p1', 'CARD'), ('p2', 'CARD')] self.assertEqual(privateCards, self.msngr.cardMessages)