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)
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)
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)
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)
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)