@idealic/poker-engine
Version:
Poker game engine and hand evaluator
228 lines (225 loc) • 5.67 kB
text/typescript
/**
* @instructions This is a test fixture for validating hand parsing and state tracking.
* The input hand text should never be modified. All other values should match the types
* and follow the game state correctly.
*/
import { HandFixture } from '../testHandFixture';
export const fixture: HandFixture = {
title: '06-small-turn-bet-takes-it-down',
description: `A hand featuring a small turn bet that wins without showdown.
Interesting aspects:
- Multiple players seeing flop
- Small bet relative to pot wins the hand
- Shows proper handling of uncalled bets
- Demonstrates tracking of pot size with rake
- Tests handling of hidden hole cards`,
input: `
PokerStars Home Game Hand #218536710696: {Club #3225207} Hold'em No Limit (50/100) - 2020/09/17 15:01:50 ET
Table 'fun time' 9-max (Play Money) Seat #2 is the button
Seat 1: dddocky (10071 in chips)
Seat 2: Duke Croix (9150 in chips)
Seat 3: color_singleton (7687 in chips)
Seat 5: Klemtonius (11371 in chips)
Seat 9: HighCardJasper (10956 in chips)
color_singleton: posts small blind 50
Klemtonius: posts big blind 100
*** HOLE CARDS ***
Dealt to Duke Croix [Qc 4c]
HighCardJasper: calls 100
dddocky: folds
Duke Croix: folds
color_singleton: calls 50
Klemtonius: raises 100 to 200
HighCardJasper: calls 100
color_singleton: calls 100
*** FLOP *** [Ah Ad 3s]
color_singleton: checks
Klemtonius: checks
HighCardJasper: checks
*** TURN *** [Ah Ad 3s] [Qs]
color_singleton: checks
Klemtonius: bets 100
HighCardJasper: folds
color_singleton: folds
Uncalled bet (100) returned to Klemtonius
Klemtonius collected 567 from pot
Klemtonius: doesn't show hand
*** SUMMARY ***
Total pot 600 | Rake 33
Board [Ah Ad 3s Qs]
Seat 1: dddocky folded before Flop (didn't bet)
Seat 2: Duke Croix (button) folded before Flop (didn't bet)
Seat 3: color_singleton (small blind) folded on the Turn
Seat 5: Klemtonius (big blind) collected (567)
Seat 9: HighCardJasper folded on the Turn
`,
output: {
actions: [
'd dh p1 ????',
'd dh p2 Qc4c',
'd dh p3 ????',
'd dh p4 ????',
'd dh p5 ????',
'p5 cc',
'p1 f',
'p2 f',
'p3 cc',
'p4 cbr 200',
'p5 cc',
'p3 cc',
'd db AhAd3s',
'p3 cc',
'p4 cc',
'p5 cc',
'd db Qs',
'p3 cc',
'p4 cbr 100',
'p5 f',
'p3 f',
],
antes: [0, 0, 0, 0, 0],
blindsOrStraddles: [0, 0, 50, 100, 0],
currency: 'PLAY',
day: 17,
hand: 218536710696,
minBet: 100,
month: 9,
players: ['dddocky', 'Duke Croix', 'color_singleton', 'Klemtonius', 'HighCardJasper'],
rake: 33,
seatCount: 9,
seats: [1, 2, 3, 5, 9],
startingStacks: [10071, 9150, 7687, 11371, 10956],
table: 'fun time',
time: '2020-09-17T15:01:50',
timeZone: 'ET',
totalPot: 600,
variant: 'NT',
venue: 'PokerStars',
year: 2020,
timestamp: 1600369310000,
},
game: {
smallBlindIndex: 2,
bigBlindIndex: 3,
players: [
{
name: 'dddocky',
stack: 10071,
position: 0,
cards: ['??', '??'],
hasFolded: true,
hasActed: true,
roundBet: 0,
totalBet: 0,
isAllIn: false,
hasShownCards: null,
rake: 0,
winnings: 0,
isInactive: false,
returns: 0,
totalInvestments: 0,
roundInvestments: 0,
roundAction: null,
},
{
name: 'Duke Croix',
stack: 9150,
position: 1,
cards: ['Qc', '4c'],
hasFolded: true,
hasActed: true,
roundBet: 0,
totalBet: 0,
isAllIn: false,
hasShownCards: null,
rake: 0,
winnings: 0,
isInactive: false,
returns: 0,
totalInvestments: 0,
roundInvestments: 0,
roundAction: null,
},
{
name: 'color_singleton',
stack: 7487,
position: 2,
cards: ['??', '??'],
hasFolded: true,
hasActed: true,
roundBet: 0,
totalBet: 200,
isAllIn: false,
hasShownCards: null,
rake: 0,
winnings: 0,
isInactive: false,
returns: 0,
totalInvestments: 0,
roundInvestments: 0,
roundAction: null,
},
{
name: 'Klemtonius',
stack: 11838,
position: 3,
cards: ['??', '??'],
hasFolded: false,
hasActed: true,
roundBet: 0,
totalBet: 200,
isAllIn: false,
hasShownCards: null,
rake: 0,
winnings: 0,
isInactive: false,
returns: 0,
totalInvestments: 0,
roundInvestments: 0,
roundAction: null,
},
{
name: 'HighCardJasper',
stack: 10656,
position: 4,
cards: ['??', '??'],
hasFolded: true,
hasActed: true,
roundBet: 0,
totalBet: 200,
isAllIn: false,
hasShownCards: null,
rake: 0,
winnings: 0,
isInactive: false,
returns: 0,
totalInvestments: 0,
roundInvestments: 0,
roundAction: null,
},
],
board: ['Ah', 'Ad', '3s', 'Qs'],
street: 'turn',
buttonIndex: 1,
bet: 0,
variant: 'NT',
venue: 'PokerStars',
usedCards: 14,
isBettingComplete: true,
lastAction: 'p3 f',
lastBetAction: 'p4 cbr 100',
lastPlayerAction: 'p3 f',
isComplete: true,
rake: 33,
pot: 567,
rakePercentage: 0,
table: '1',
isRunOut: false,
hand: 6,
bigBlind: 100,
stats: [],
isShowdown: false,
nextPlayerIndex: -1,
gameTimestamp: Date.now(),
},
};