From 0e84dceb1f1bbb3050b0c886bd528b1f5969789d Mon Sep 17 00:00:00 2001 From: steffen123 Date: Fri, 8 Aug 2008 22:03:43 +0100 Subject: [PATCH] git19 (REIMPORT needed) - updated everything to use new action counting method -> it half works, but fails to store (or print) a substantial proportion of the action_nos removed bunch of commented prints from fpdb_parse --- docs/known-bugs-and-planned-features.txt | 11 +- docs/tabledesign.html | 130 ++++-------------- prepare-git.sh | 1 + pyfpdb/fpdb.py | 2 +- pyfpdb/fpdb_parse_logic.py | 28 ++-- pyfpdb/fpdb_save_to_db.py | 4 +- pyfpdb/fpdb_simple.py | 33 +++-- regression-test/fpdb_util_lib.py | 6 +- .../ftp-omaha-hi-pl-ring-001-005.txt | 0 .../ftp-stud-hilo-ring-001.txt | 0 .../ftp.6367428246.expected.txt | 0 .../ftp.6929537410.expected.txt | 0 .../ftp.6929553738.expected.txt | 0 regression-test/ps.14519394979.expected.txt | 42 +++--- regression-test/ps.14519420999.expected.txt | 42 +++--- regression-test/ps.14519433154.expected.txt | 60 ++++---- 16 files changed, 147 insertions(+), 212 deletions(-) rename regression-test/{ => known-broken}/ftp-omaha-hi-pl-ring-001-005.txt (100%) rename regression-test/{ => known-broken}/ftp-stud-hilo-ring-001.txt (100%) rename regression-test/{ => known-broken}/ftp.6367428246.expected.txt (100%) rename regression-test/{ => known-broken}/ftp.6929537410.expected.txt (100%) rename regression-test/{ => known-broken}/ftp.6929553738.expected.txt (100%) diff --git a/docs/known-bugs-and-planned-features.txt b/docs/known-bugs-and-planned-features.txt index 2abd5dbe..44220752 100644 --- a/docs/known-bugs-and-planned-features.txt +++ b/docs/known-bugs-and-planned-features.txt @@ -9,14 +9,14 @@ add instructions how to reimport split python requirements, get deep links for windows DL for everything GUI license info -change action_no to be total for this street rather than just for one player. change .expected.txt files accordingly. -calculate 3B/4B percentage (depends on above, currently its useless) -update regression testing to take into account everything new -add fpdb version string into db to detect outdated db format. +calculate 3B/4B percentage +add fpdb version string into db to detect outdated db format and importer bugs +update regression testing to take into account everything new, make sure it passes all tests before beta =========== optionally show single postflop agg/fold rate +change definition of bet to exclude bring in? auto-import implement error file in importer change to use different colours according to classification. @@ -30,7 +30,7 @@ fix load profile HUD config wizard file permission script, use games group -change stud street storage from 3-7 to 0-4 throughout +change stud street storage from 3-7 to 0-4 throughout (possibly best way is to just shrink the holding array in fpdb_simple.createArrays make bulk importer display a grand total in the GUI change save_to_db into one method and probably move into parse_logic Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu @@ -47,6 +47,7 @@ verify at least 2 or 3 sng hands no rush but before 1.0RC ======================== +In many places there are unnecessary database accesses or it regenerates information it already had before or just generally does things in obscenely inefficient ways. It's great to have a total of 3 CPUs with a combined 5.6GHz working for you isn't it... ;) In any case, these should be optimised to leave more power for other things, such as dropping to lower power states move version into seperate file make option to use "traditional" labels, e.g. WtSD instead of SD/F HTMLify docs and validate them diff --git a/docs/tabledesign.html b/docs/tabledesign.html index 0d8ff626..dff5e003 100644 --- a/docs/tabledesign.html +++ b/docs/tabledesign.html @@ -840,131 +840,61 @@ far less relevant.

Table hands_actions

-

Did -separate this into an extra table because it makes SELECTing across -different streets so much easier. Also the space saving will be very -large.

+

Did separate this into an extra table because it makes SELECTing across different streets so much easier. Also the space saving will be very large.

- - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +

Field Name

-

Type

-
-

Comment

-

Type

Comment

-

id

-
-

bigint

-
-


-

-

id

bigint


-

hand_player_id

-
-

bigint

-
-

references - hands_players.id

-

hand_player_id

bigint

references hands_players.id

-

street

-
-

smallint

-
-

street - number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 - for razz/stud

-

-1 for seen showdown

-

street

smallint

street number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 for razz/stud

-1 for seen showdown

-

action_no

-
-

smallint

-
-

action number, 1-4

-

action_no

smallint

action number, this is counted from zero for each street but across all players (e.g. in a heads up where the SB calls and the BB raises and the SB calls again would have numbers 0 and 1 for blinds, 2 and 4 for call and 3 for bet)
+ Note that the blinds are counted as an action, so if the SB stays in the hand it'll always be action #0

-

action

-
-

char(5)

-
-

bet - stands for bring in, complete, bet, double bet, raise and double - raise, since they all - technically - do the same thing. unbet is - used for when an uncalled bet is returned.

-

Other valid values: blind - call check fold

-

action

char(5)

Bet stands for bring in, complete, bet, double bet, raise and double raise, since they all - technically - do the same thing. Unbet is used for when an uncalled bet is returned.

+

Other valid values: blind call check fold

-

amount

-
-

int

-
-

amount put into the middle - for this action

-

amount

int

amount put into the middle for this action

-

comment

-
-

text

-
-


-

-

comment

text


-

comment_ts

-
-

datetime (in UTC)

-
-


-

-

comment_ts

datetime (in UTC)


-


-

+


Tournament Tables


Table tourneys

- - -

Field name

diff --git a/prepare-git.sh b/prepare-git.sh index 08dd0a5f..91b008e9 100755 --- a/prepare-git.sh +++ b/prepare-git.sh @@ -18,4 +18,5 @@ rm regression-test/*.found.txt rm regression-test/*.pyc rm pyfpdb/*.pyc + git-add--interactive diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 50ff4512..cf9b99ae 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -343,7 +343,7 @@ blabla""") self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) - self.window.set_title("Free Poker DB - version: pre-alpha, git18") + self.window.set_title("Free Poker DB - version: pre-alpha, git19") self.window.set_border_width(1) self.window.set_size_request(950,400) self.window.set_resizable(True) diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index 1842d924..c024e7c7 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -28,7 +28,7 @@ def mainParser(db, cursor, site, category, hand): lineStreets=[] #char, valid values: (predeal, preflop, flop, turn, river) cardValues, cardSuits, boardValues, boardSuits=[],[],[],[] - antes, actionTypes, actionAmounts, seatLines, winnings, rakes=[],[],[],[],[],[] + antes, actionTypes, actionAmounts, actionNos, seatLines, winnings, rakes=[], [],[],[],[],[],[] #part 1: read hand no and check for duplicate siteHandNo=fpdb_simple.parseSiteHandNo(hand[0]) @@ -42,49 +42,36 @@ def mainParser(db, cursor, site, category, hand): raise fpdb_simple.FpdbError("tourneys are only supported on PS right now") siteTourneyNo=fpdb_simple.parseTourneyNo(hand[0]) buyin=fpdb_simple.parseBuyin(hand[0]) - #print "Buyin:", buyin fee=fpdb_simple.parseFee(hand[0]) - #print "Fee:", fee entries=-1 #todo: parse this prizepool=-1 #todo: parse this tourneyStartTime=handStartTime #todo: read tourney start time - #print "gametypeID:",gametypeID fpdb_simple.isAlreadyInDB(cursor, gametypeID, siteHandNo) #part 2: classify lines by type (e.g. cards, action, win, sectionchange) and street fpdb_simple.classifyLines(hand, category, lineTypes, lineStreets) - #for i in range (len(hand)): - # print "i:",i,"lineTypes[i]:",lineTypes[i],"hand[i]:",hand[i] #part 3: read basic player info #3a read player names, startcashes for i in range (len(hand)): #todo: use maxseats+1 here. if (lineTypes[i]=="name"): seatLines.append(hand[i]) - #print "seatLines:",seatLines - #print "hand:",hand names=fpdb_simple.parseNames(seatLines) - #print "names:",names playerIDs = fpdb_simple.recognisePlayerIDs(cursor, names, siteID) startCashes=fpdb_simple.parseCashes(seatLines, site) - fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts) + fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts, actionNos) - #3b remove people who sitout before cards are dealt (e.g. sitout instead of paying blinds) - #PS doesnt have a nameline for sitouts so for PS this can be skipped. havent tried FTP yet - - #3c read positions + #3b read positions if (category=="holdem" or category=="omahahi" or category=="omahahilo"): positions = fpdb_simple.parsePositions (hand, names) #part 4: take appropriate action for each line based on linetype for i in range(len(hand)): if (lineTypes[i]=="cards"): - #print "hand[i]:",hand[i] fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits) - #print "cardValues:",cardValues elif (lineTypes[i]=="action"): - fpdb_simple.parseActionLine (hand[i], lineStreets[i], names, actionTypes, actionAmounts, site) + fpdb_simple.parseActionLine (site, hand[i], lineStreets[i], names, actionTypes, actionAmounts, actionNos) elif (lineTypes[i]=="win"): fpdb_simple.parseWinLine (hand[i], site, names, winnings, isTourney) elif (lineTypes[i]=="rake"): @@ -99,7 +86,6 @@ def mainParser(db, cursor, site, category, hand): fpdb_simple.parseAnteLine(hand[i], site, names, antes) else: raise fpdb_simple.FpdbError("unrecognised lineType:"+lineTypes[i]) - #print "end of part4 cardValues:",cardValues,"cardSuits:",cardSuits #part 5: final preparations, then call fpdb_save_to_db.saveHoldem with # the arrays as they are - that file will fill them. @@ -110,7 +96,7 @@ def mainParser(db, cursor, site, category, hand): fpdb_simple.checkPositions(positions) cursor.execute("SELECT limit_type FROM gametypes WHERE id=%s",(gametypeID, )) - limit_type=cursor.fetchone()[0] #todo: remove this unnecessary database access + limit_type=cursor.fetchone()[0] fpdb_simple.convert3B4B(site, category, limit_type, actionTypes, actionAmounts) totalWinnings=0 @@ -119,6 +105,7 @@ def mainParser(db, cursor, site, category, hand): hudImportData=fpdb_simple.calculateHudImport(playerIDs, category, actionTypes, winnings, totalWinnings) if isTourney: + raise fpdb_simple.FpdbError ("tourneys are currently broken") payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee) ranks=[] for i in range (len(names)): @@ -142,8 +129,9 @@ def mainParser(db, cursor, site, category, hand): if (category=="holdem" or category=="omahahi" or category=="omahahilo"): result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, - cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData) + cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData) elif (category=="razz" or category=="studhi" or category=="studhilo"): + raise fpdb_simple.FpdbError ("stud/razz are currently broken") result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData) diff --git a/pyfpdb/fpdb_save_to_db.py b/pyfpdb/fpdb_save_to_db.py index 1dd656bf..a8040cf3 100644 --- a/pyfpdb/fpdb_save_to_db.py +++ b/pyfpdb/fpdb_save_to_db.py @@ -40,7 +40,7 @@ def ring_stud(cursor, category, site_hand_no, gametype_id, hand_start_time, #stores a holdem/omaha hand into the database def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time, names, player_ids, start_cashes, positions, card_values, card_suits, - board_values, board_suits, winnings, rakes, action_types, action_amounts, hudImportData): + board_values, board_suits, winnings, rakes, action_types, action_amounts, actionNos, hudImportData): #fill up the two player card arrays if (category=="holdem"): fpdb_simple.fillCardArrays(len(names), 2, card_values, card_suits) @@ -60,7 +60,7 @@ def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_ti fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits) - fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts) + fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos) return site_hand_no #end def ring_holdem_omaha diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 79c4cb3f..49e35853 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -199,7 +199,7 @@ def convertCardValuesBoard(arr): #end def convertCardValuesBoard #this creates the 2D/3D arrays. manipulates the passed arrays instead of returning. -def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts): +def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts, actionNos): for i in range(seats):#create second dimension arrays tmp=[] card_values.append(tmp) @@ -208,19 +208,26 @@ def createArrays(category, seats, card_values, card_suits, antes, winnings, rake antes.append(0) winnings.append(0) rakes.append(0) - - for i in range (8): - #build the first dimension array, for streets - #todo: 0-2 will of course be left empty, get rid of this nicely using consts + + if (category=="holdem" or category=="omahahi" or category=="omahahilo"): + streetCount=4 + else: + streetCount=8 + + for i in range(streetCount): #build the first dimension array, for streets tmp=[] action_types.append(tmp) tmp=[] action_amounts.append(tmp) + tmp=[] + actionNos.append(tmp) for j in range (seats): #second dimension arrays: players tmp=[] action_types[i].append(tmp) tmp=[] action_amounts[i].append(tmp) + tmp=[] + actionNos[i].append(tmp) if (category=="holdem" or category=="omahahi" or category=="omahahilo"): pass elif (category=="razz" or category=="studhi" or category=="studhilo"):#need to fill card arrays. @@ -555,8 +562,7 @@ def parseActionAmount(line, atype, site): #doesnt return anything, simply changes the passed arrays action_types and # action_amounts. For stud this expects numeric streets (3-7), for # holdem/omaha it expects predeal, preflop, flop, turn or river -def parseActionLine(line, street, names, action_types, action_amounts, site): - #print "parseActionLine, line:",line +def parseActionLine(site, line, street, names, action_types, action_amounts, actionNos): #this only applies to stud if (street<3): text="invalid street ("+str(street)+") for line: "+line @@ -571,12 +577,19 @@ def parseActionLine(line, street, names, action_types, action_amounts, site): elif (street=="river"): street=3 + nextActionNo=0 + for player in range(len(actionNos[street])): + for count in range(len(actionNos[street][player])): + if actionNos[street][player][count]>=nextActionNo: + nextActionNo=actionNos[street][player][count]+1 + atype=parseActionType(line) playerno=recognisePlayerNo(line, names, atype) amount=parseActionAmount(line, atype, site) action_types[street][playerno].append(atype) action_amounts[street][playerno].append(amount) + actionNos[street][playerno].append(nextActionNo) #end def parseActionLine #returns the action type code (see table design) of the given action line @@ -1066,12 +1079,14 @@ def splitRake(winnings, rakes, totalRake): rakes[i]=totalRake*winPortion #end def splitRake -def storeActions(cursor, hands_players_ids, action_types, action_amounts): +def storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos): #stores into table hands_actions + #print "start of storeActions, actionNos:",actionNos + #print " action_amounts:",action_amounts for i in range (len(action_types)): #iterate through streets for j in range (len(action_types[i])): #iterate through names for k in range (len(action_types[i][j])): #iterate through individual actions of that player on that street - cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, k, action_types[i][j][k], action_amounts[i][j][k])) + cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, actionNos[i][j][k], action_types[i][j][k], action_amounts[i][j][k])) #end def storeActions def store_board_cards(cursor, hands_id, board_values, board_suits): diff --git a/regression-test/fpdb_util_lib.py b/regression-test/fpdb_util_lib.py index 9afb9fb4..565f7cbd 100644 --- a/regression-test/fpdb_util_lib.py +++ b/regression-test/fpdb_util_lib.py @@ -64,11 +64,11 @@ def street_int2String(category, street): if street==0: return "Preflop" elif street==1: - return "Flop" + return "Flop " elif street==2: - return "Turn" + return "Turn " elif street==3: - return "River" + return "River " else: print "TODO: raise error, fpdb_util_lib.py street_int2String invalid street no" sys.exit(1) diff --git a/regression-test/ftp-omaha-hi-pl-ring-001-005.txt b/regression-test/known-broken/ftp-omaha-hi-pl-ring-001-005.txt similarity index 100% rename from regression-test/ftp-omaha-hi-pl-ring-001-005.txt rename to regression-test/known-broken/ftp-omaha-hi-pl-ring-001-005.txt diff --git a/regression-test/ftp-stud-hilo-ring-001.txt b/regression-test/known-broken/ftp-stud-hilo-ring-001.txt similarity index 100% rename from regression-test/ftp-stud-hilo-ring-001.txt rename to regression-test/known-broken/ftp-stud-hilo-ring-001.txt diff --git a/regression-test/ftp.6367428246.expected.txt b/regression-test/known-broken/ftp.6367428246.expected.txt similarity index 100% rename from regression-test/ftp.6367428246.expected.txt rename to regression-test/known-broken/ftp.6367428246.expected.txt diff --git a/regression-test/ftp.6929537410.expected.txt b/regression-test/known-broken/ftp.6929537410.expected.txt similarity index 100% rename from regression-test/ftp.6929537410.expected.txt rename to regression-test/known-broken/ftp.6929537410.expected.txt diff --git a/regression-test/ftp.6929553738.expected.txt b/regression-test/known-broken/ftp.6929553738.expected.txt similarity index 100% rename from regression-test/ftp.6929553738.expected.txt rename to regression-test/known-broken/ftp.6929553738.expected.txt diff --git a/regression-test/ps.14519394979.expected.txt b/regression-test/ps.14519394979.expected.txt index 3c5f86d8..962ec68c 100644 --- a/regression-test/ps.14519394979.expected.txt +++ b/regression-test/ps.14519394979.expected.txt @@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:139 position:1 off Btn cards:Ts Jh winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:call amount:4 -player_name:Player_1 actionCount:1 street:Flop streetActionNo:0 action:call amount:2 -player_name:Player_1 actionCount:2 street:Turn streetActionNo:0 action:call amount:4 -player_name:Player_1 actionCount:3 street:River streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_2 actionCount:1 street:Preflop streetActionNo:1 action:call amount:3 -player_name:Player_2 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:3 street:Flop streetActionNo:1 action:call amount:2 -player_name:Player_2 actionCount:4 street:Turn streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:5 street:Turn streetActionNo:1 action:call amount:4 -player_name:Player_2 actionCount:6 street:River streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:7 street:River streetActionNo:1 action:fold amount:0 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:fold amount:0 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:1 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_4 actionCount:2 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:3 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:6 action:call amount:4 +player_name:Player_1 street:Flop streetActionNo:2 action:call amount:2 +player_name:Player_1 street:Turn streetActionNo:2 action:call amount:4 +player_name:Player_1 street:River streetActionNo:2 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_2 street:Preflop streetActionNo:7 action:call amount:3 +player_name:Player_2 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_2 street:Flop streetActionNo:3 action:call amount:2 +player_name:Player_2 street:Turn streetActionNo:0 action:check amount:0 +player_name:Player_2 street:Turn streetActionNo:3 action:call amount:4 +player_name:Player_2 street:River streetActionNo:0 action:check amount:0 +player_name:Player_2 street:River streetActionNo:3 action:fold amount:0 +player_name:Player_3 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_3 street:Preflop streetActionNo:8 action:fold amount:0 +player_name:Player_4 street:Preflop streetActionNo:2 action:bet amount:4 +player_name:Player_4 street:Flop streetActionNo:1 action:bet amount:2 +player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:4 +player_name:Player_4 street:River streetActionNo:1 action:bet amount:4 +player_name:Player_5 street:Preflop streetActionNo:3 action:fold amount:0 +player_name:Player_6 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:5 action:fold amount:0 diff --git a/regression-test/ps.14519420999.expected.txt b/regression-test/ps.14519420999.expected.txt index 5c1de6de..ba18560f 100644 --- a/regression-test/ps.14519420999.expected.txt +++ b/regression-test/ps.14519420999.expected.txt @@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:135 position:3 off Btn cards:8d 5d winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_2 actionCount:1 street:Flop streetActionNo:0 action:call amount:2 -player_name:Player_2 actionCount:2 street:Turn streetActionNo:0 action:bet amount:8 -player_name:Player_2 actionCount:3 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:1 -player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:call amount:2 -player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:check amount:0 -player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:fold amount:0 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:check amount:0 -player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_5 actionCount:3 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_5 actionCount:4 street:Turn streetActionNo:1 action:call amount:4 -player_name:Player_5 actionCount:5 street:River streetActionNo:0 action:check amount:0 -player_name:Player_5 actionCount:6 street:River streetActionNo:1 action:call amount:4 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:5 action:call amount:2 +player_name:Player_2 street:Flop streetActionNo:2 action:call amount:2 +player_name:Player_2 street:Turn streetActionNo:2 action:bet amount:8 +player_name:Player_2 street:River streetActionNo:1 action:bet amount:4 +player_name:Player_3 street:Preflop streetActionNo:6 action:fold amount:0 +player_name:Player_4 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_4 street:Preflop streetActionNo:7 action:call amount:1 +player_name:Player_4 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_4 street:Flop streetActionNo:3 action:call amount:2 +player_name:Player_4 street:Turn streetActionNo:0 action:check amount:0 +player_name:Player_4 street:Turn streetActionNo:3 action:fold amount:0 +player_name:Player_5 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_5 street:Preflop streetActionNo:8 action:check amount:0 +player_name:Player_5 street:Flop streetActionNo:1 action:bet amount:2 +player_name:Player_5 street:Turn streetActionNo:1 action:bet amount:4 +player_name:Player_5 street:Turn streetActionNo:4 action:call amount:4 +player_name:Player_5 street:River streetActionNo:0 action:check amount:0 +player_name:Player_5 street:River streetActionNo:2 action:call amount:4 +player_name:Player_6 street:Preflop streetActionNo:2 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:3 action:fold amount:0 diff --git a/regression-test/ps.14519433154.expected.txt b/regression-test/ps.14519433154.expected.txt index 81000579..6e739a5a 100644 --- a/regression-test/ps.14519433154.expected.txt +++ b/regression-test/ps.14519433154.expected.txt @@ -23,33 +23,33 @@ player_name:Player_7 player_startcash:135 position:4 off Btn cards:7c Jh winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_3 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_3 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4 -player_name:Player_3 actionCount:4 street:Flop streetActionNo:2 action:call amount:2 -player_name:Player_3 actionCount:5 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:6 street:Turn streetActionNo:1 action:bet amount:8 -player_name:Player_3 actionCount:7 street:Turn streetActionNo:2 action:call amount:4 -player_name:Player_3 actionCount:8 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:9 street:River streetActionNo:1 action:bet amount:8 -player_name:Player_3 actionCount:10 street:River streetActionNo:2 action:call amount:4 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4 -player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:bet amount:8 -player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:bet amount:8 -player_name:Player_4 actionCount:6 street:River streetActionNo:0 action:bet amount:8 -player_name:Player_4 actionCount:7 street:River streetActionNo:1 action:bet amount:8 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:bet amount:3 -player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_5 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_6 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_6 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_6 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:3 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_3 street:Preflop streetActionNo:5 action:call amount:2 +player_name:Player_3 street:Preflop streetActionNo:9 action:call amount:2 +player_name:Player_3 street:Flop streetActionNo:2 action:bet amount:2 +player_name:Player_3 street:Flop streetActionNo:6 action:bet amount:4 +player_name:Player_3 street:Flop streetActionNo:8 action:call amount:2 +player_name:Player_3 street:Turn streetActionNo:0 action:bet amount:4 +player_name:Player_3 street:Turn streetActionNo:2 action:bet amount:8 +player_name:Player_3 street:Turn streetActionNo:4 action:call amount:4 +player_name:Player_3 street:River streetActionNo:0 action:bet amount:4 +player_name:Player_3 street:River streetActionNo:2 action:bet amount:8 +player_name:Player_3 street:River streetActionNo:4 action:call amount:4 +player_name:Player_4 street:Preflop streetActionNo:6 action:call amount:2 +player_name:Player_4 street:Preflop streetActionNo:10 action:call amount:2 +player_name:Player_4 street:Flop streetActionNo:3 action:bet amount:4 +player_name:Player_4 street:Flop streetActionNo:7 action:bet amount:4 +player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:8 +player_name:Player_4 street:Turn streetActionNo:3 action:bet amount:8 +player_name:Player_4 street:River streetActionNo:1 action:bet amount:8 +player_name:Player_4 street:River streetActionNo:3 action:bet amount:8 +player_name:Player_5 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_5 street:Preflop streetActionNo:7 action:bet amount:3 +player_name:Player_5 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_5 street:Flop streetActionNo:4 action:fold amount:0 +player_name:Player_6 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_6 street:Preflop streetActionNo:8 action:call amount:2 +player_name:Player_6 street:Flop streetActionNo:1 action:check amount:0 +player_name:Player_6 street:Flop streetActionNo:5 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:2 action:fold amount:0