Example #1
0
    def test_player_evicted_after_timout(self):
        try:
            table = datalayer.getOrCreateSavedTable("x")
            player1 = datalayer.getOrCreateSavedPlayer("x", "player one")
            table = datalayer.findATableForPlayer(player1)
            player2 = datalayer.getOrCreateSavedPlayer("x", "player two")
            table = datalayer.findATableForPlayer(player2)
            player3 = datalayer.getOrCreateSavedPlayer("x", "player three")
            table = datalayer.findATableForPlayer(player3)
            player4 = datalayer.getOrCreateSavedPlayer("x", "player four")
            table = datalayer.findATableForPlayer(player4)

            currentStatusId = table.statusId

            self.assertEqual(4, len(table.players))
            for player in table.players:
                playProcessor.checkForUpdates(table, player, currentStatusId)

            logging.log(
                logging.INFO,
                "Waiting 5 seconds to see if player is automatically evicted")
            table.PLAYER_TURN_LIMIT = 5  # 5 seconds
            time.sleep(6)

            playProcessor.checkForUpdates(table, player, currentStatusId)
            self.assertEqual(3, len(table.players))

        except Exception as error:
            print("Unable to test." + str(error))
            print('-' * 60)
            traceback.print_exc(file=sys.stdout)
            print('-' * 60)

        finally:
            datalayer.deleteTable(table)
Example #2
0
    def test_play_a_Round_via_processor(self):
        '''
        Attempt to simulate several browsers asking for data and processing
        '''
        try:
            table = datalayer.getOrCreateSavedTable("x")
            player1 = datalayer.getOrCreateSavedPlayer("x", "player one")
            table = datalayer.findATableForPlayer(player1)
            player2 = datalayer.getOrCreateSavedPlayer("x", "player two")
            table = datalayer.findATableForPlayer(player2)
            player3 = datalayer.getOrCreateSavedPlayer("x", "player three")
            table = datalayer.findATableForPlayer(player3)
            player4 = datalayer.getOrCreateSavedPlayer("x", "player four")
            table = datalayer.findATableForPlayer(player4)

            currentStatusId = table.statusId

            for player in table.players:
                playProcessor.checkForUpdates(table, player, currentStatusId)

            if table.statusId != currentStatusId:
                tableCards = 0
                while not tableCards == 5:  #isHandComplete (processes on own)
                    playedCount = 0
                    while playedCount < len(
                            table.players):  ## is round complete
                        for player in table.players:
                            if player.turn:
                                myBet = table.currentBet - player.currentBet
                                playProcessor.makePlay(player, table, 'bet',
                                                       myBet, table.statusId)
                                playedCount = playedCount + 1
                                # the processor will automatically reset this above, so we need to fake this out to test
                                if len(table.cards) > 0:
                                    tableCards = len(table.cards)
                                break

            self.assertEquals(len(table.cards), 5)
            if (len(table.winners) == 1):
                assert (table.winners[0].chips, 104)
            for player in table.winners:
                print(str(player) + " wins ")
            self.assertTrue(len(table.winners) > 0)

            table.prepareForNextHand()
            playerTurnCount = 0
            for player in table.players:
                if player.turn:
                    playerTurnCount = playerTurnCount + 1
            self.assertEqual(playerTurnCount, 1)

        except Exception as error:
            print("Unable to test." + str(error))
            print('-' * 60)
            traceback.print_exc(file=sys.stdout)
            print('-' * 60)

        finally:
            datalayer.deleteTable(table)
Example #3
0
    def test_getPlayer(self):
        playerRandomName = "Test Player " + random_string(5)
        player = datalayer.getOrCreateSavedPlayer('notAPlayerId',
                                                  playerRandomName)
        print(player)

        playerII = datalayer.getOrCreateSavedPlayer(player.playerId)
        print(playerII)

        self.assertEqual(player.playerId, playerII.playerId)
        self.assertEqual(player.name, playerII.name)
        self.assertEqual(player.chips, playerII.chips)
        self.assertEqual(player.currentBet, playerII.currentBet)
        self.assertEqual(player.folded, playerII.folded)
        self.assertEqual(player.currentAction, playerII.currentAction)

        playerII.chips = 1000
        playerII.name = "Some Test This is"
        playerII.folded = True
        hand = Hand()
        deck = Deck()
        deck.shuffle()
        hand.cards.append(deck.deal())
        hand.cards.append(deck.deal())
        playerII.hand = hand
        playerII.currentBet = 5

        datalayer.updatePlayer(playerII)
        playerIII = datalayer.getOrCreateSavedPlayer(player.playerId)

        self.assertEqual(playerII.playerId, playerIII.playerId)
        self.assertEqual(playerII.name, playerIII.name)
        self.assertEqual(playerII.chips, playerIII.chips)
        self.assertEqual(playerII.currentBet, playerIII.currentBet)
        self.assertEqual(playerII.folded, playerIII.folded)
        self.assertEqual(playerII.currentAction, playerIII.currentAction)
        self.assertEqual(playerII.hand.cards[0], playerIII.hand.cards[0])

        datalayer.deletePlayer(player)
Example #4
0
def createOrFindPlayer(event, context):
    logger.info("createOrFindPlayer called " + str(event) + " " + str(context))
    try:
        playerId = event['playerId']
        playerName = event['name']
        logger.debug("Looking for player: " + playerId + " , "+ playerName)
        player = datalayer.getOrCreateSavedPlayer(playerId, playerName)
        status = 200
        body = json.dumps(player,default=jsob.convert_to_dict,indent=4, sort_keys=True)
 
    except Exception as error:
        logger.exception("Unable to find or create player." + str(error))
        status = 500
        body = str(error)
 
    return createResponse(status, body)
Example #5
0
def findTable(event, context):
    logger.info("findTable called " + str(event))
    try:
        playerId = event['playerId']
        logger.debug("PlayerID : " + str(playerId))
        ## TODO? put to default 
        datalayer.resetUnusedTables(100)
        player = datalayer.getOrCreateSavedPlayer(playerId)
        table = datalayer.findATableForPlayer(player)
        status = 200
        table.deck.cards = []
        body = json.dumps(table,default=jsob.convert_to_dict,indent=4, sort_keys=True)

    except Exception as error:
        logger.exception("Unable to find or create table." + str(error))
        status = 500
        body = str(error)

    return createResponse(status, body)