UNPKG

@idealic/poker-engine

Version:

Poker game engine and hand evaluator

104 lines (98 loc) 2.45 kB
import type { Hand } from '../../../../Hand'; /** * Base hand fixture for creating consistent Game states * This represents a typical mid-hand scenario with various player states */ export const BASE_HAND: Hand = { variant: 'NT', players: ['Alice', 'Bob', 'Charlie', 'David'], startingStacks: [1000, 1500, 800, 1200], blindsOrStraddles: [10, 20, 0, 0], antes: [0, 0, 0, 0], minBet: 20, actions: [ 'd dh p1 AsKs', 'd dh p2 7h2d', 'd dh p3 QhQc', 'd dh p4 JdTd', 'p3 cbr 60', // Charlie raises to 60 'p4 cc 60', // David calls 60 'p1 f', // Alice folds 'p2 f', // Bob folds 'd db AhKhQd', // Flop ], seed: 12345, timeLimit: 30, rake: 0, rakePercentage: 0.05, currency: 'USD', table: 'test-table-1', hand: 1, }; /** * Hand in showdown state - multiple players after final betting */ export const SHOWDOWN_HAND: Hand = { ...BASE_HAND, actions: [ ...BASE_HAND.actions, 'p3 cc', // Charlie checks 'p4 cc', // David checks 'd db Td', // Turn 'p3 cc', // Charlie checks 'p4 cbr 100', // David bets 100 'p3 cc 100', // Charlie calls 'd db 9s', // River 'p3 cc', // Charlie checks 'p4 cc', // David checks 'p3 sm QhQc', // Charlie shows 'p4 sm JdTd', // David shows // Now in showdown with Charlie and David ], }; /** * Completed hand with finishing data */ export const COMPLETED_HAND: Hand = { ...SHOWDOWN_HAND, antes: [0, 0, 0, 0], blindsOrStraddles: [10, 20, 0, 0], actions: [...SHOWDOWN_HAND.actions], finishingStacks: [990, 1480, 1000, 1030], winnings: [0, 0, 200, 0], totalPot: 470, }; /** * Hand with author perspective set (personalized view) */ export const PERSONALIZED_HAND: Hand = { ...BASE_HAND, author: 'Alice', antes: [0, 0, 0, 0], blindsOrStraddles: [10, 20, 0, 0], actions: [ 'd dh p1 AsKs', // Alice can see her cards 'd dh p2 ????', // Hidden from Alice 'd dh p3 ????', // Hidden from Alice 'd dh p4 ????', // Hidden from Alice 'p3 cbr 60', 'p4 cc 60', 'p1 f', 'p2 f', 'd db AhKhQd', ], seed: undefined, // Removed in personalized view _venueIds: undefined, // Removed in personalized view }; /** * Minimal hand for edge case testing */ export const MINIMAL_HAND: Hand = { variant: 'NT', players: ['Alice', 'Bob'], antes: [0, 0], startingStacks: [1000, 1000], blindsOrStraddles: [10, 20], minBet: 20, actions: [], };