Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
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())
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
    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')
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
    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]
Ejemplo n.º 15
0
    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)
Ejemplo n.º 17
0
    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()
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
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))
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)
Ejemplo n.º 21
0
    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()
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))
Ejemplo n.º 23
0
    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()
Ejemplo n.º 24
0
    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()
Ejemplo n.º 25
0
    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)
Ejemplo n.º 26
0
    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()
Ejemplo n.º 27
0
    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()
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
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)
    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')
Ejemplo n.º 31
0
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)
Ejemplo n.º 32
0
    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'
        ])
Ejemplo n.º 34
0
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'])
Ejemplo n.º 36
0
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)
Ejemplo n.º 37
0
    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()
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)
Ejemplo n.º 39
0
    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
Ejemplo n.º 40
0
    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]
Ejemplo n.º 42
0
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)
Ejemplo n.º 43
0
    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()
Ejemplo n.º 44
0
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)
Ejemplo n.º 45
0
    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()
Ejemplo n.º 46
0
    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