Skip to main content

Overview

The test harness uses 17 fixed game records sourced from coredata.ts in the v6 client. Each record provides known card data (hole cards + community cards) that is submitted to the live server, which evaluates odds fresh. The oracle values in demo-records.ts supply ground-truth for deterministic assertions (statusIsFavourite, statusIsWinner, statusCantLose). All 17 records are 4-hand games. Community cards are revealed progressively: 3 at FLOP, 1 at TURN, 1 at RIVER (the standard Texas Hold’Em community structure).

Demo 1 — A typical ‘Promo’ game

Cards: KdKc · 7d3d · 5s5c · JhQc Board: 5h 3h 4h | Qd | As What this tests: A standard asymmetric game where one hand (pocket fives) dramatically improves on the flop and runs away with it. The favourite switches from the pre-flop leader (KK) to the three-of-a-kind on the flop.

Demo 2 — All hands have action

Cards: AdAs · 6c4d · JhQh · 3cJd Board: Jc 6h 3h | 6s | 3d What this tests: Every hand improves meaningfully. The flop hits multiple hands simultaneously, making the favourite calculation close. The winner emerges only at the turn when one hand pulls decisively ahead.
8 failures in this demo — FLOP hands 0 and 2. The oracle records hand 0 (Pair of Aces, 7.07%) as the favourite over hand 2 (Pair of Jacks, 45%). The server correctly identifies hand 2 as the favourite by win probability. This is a v4 C# oracle vs v6 Node.js tiebreaker discrepancy. See Test Results for details.

Demo 3 — Emotional openers!

Cards: Th8d · 9s2h · KcKs · 5h8s Board: 7h 2c 2d | Td | Ts What this tests: An “emotional” pre-flop — the pocket Kings are heavily favoured but the board pairs twos and then tens, giving the 9s2h hand an unexpected three-of-a-kind. The eventual winner (Th8d) makes a full house on the river, beating the three-of-a-kind.

Demo 4 — Hedge’Em opportunity

Cards: Qd3d · 2hQs · 7cKs · 2cAc Board: Kc 7h Tc | Jd | 9s What this tests: A classic hedge scenario. Two hands (0 and 1) are both low-probability outsiders throughout, then both hit a surprise straight on the river. Tests the two-winner scenario and statusIsWinner: true on multiple hands at RIVER.

Demo 5 — Hedge your bets!

Cards: 8d8h · ThJh · 3s6d · JdJc Board: 8s 6h 6c | Kh | 2s What this tests: The flop produces a dramatic swing — the 8d8h hand makes a full house (8-8-8-6-6) on the flop and becomes heavily favoured. Tests statusCantLose approaching but not reaching threshold on flop, then majority of community cards land.

Demo 6 — Back from the dead

Cards: Ac5c · 9c6d · JdJh · 7sQh Board: Qc 7c Jc | Tc | 8c What this tests: A “back from the dead” story — hand 1 (9c6d) appears nearly eliminated after the flop but hits a straight flush on the river, beating the ace-high flush. Tests correct winner determination when a lower-ranked hand makes a dramatic improvement.

Demo 7 — Maximum and Minimum Odds

Cards: Ah2h · 9h6d · 4c2c · 3s9c Board: Qh 7h Jh | Th | 8h What this tests: The full community is hearts. Hand 0 (Ah2h) has the ace of hearts making an ace-high flush, while hand 1 (9h6d) has the nine of hearts. The board completes a straight flush for hand 1. Tests near-zero odds (hands 2 and 3 are dead from the flop) and correct winner at RIVER.

Demo 8 — One hand can’t lose

Cards: 3d9s · 5c6d · QhQs · 3h8h Board: 4c 3s 5d | 2h | 7c What this tests: statusCantLose — when a hand reaches 100% win probability. At the turn, hand 1 (5c6d) makes a wheel straight (A-2-3-4-5) which cannot be beaten by the remaining river card. Tests that statusCantLose: true is set and odds assertions are skipped for that hand.
8 failures in this demo — FLOP hands 1 and 2. See Test Results for details.

Demo 9 — Everyone’s a winner!

Cards: KdAh · 4c4s · JhQh · 6d7s Board: 6h 4h 7c | 5d | 8s What this tests: All four hands are winners at RIVER — they all share the same board straight (6-7-8-9-T or similar). Tests statusIsWinner: true on all four hands simultaneously and gameOver: true.

Demo 10 — All bets off!

Cards: 6c6s · AdKc · JhQh · 2c7s Board: 6d 6h 9c | Qs | Ks What this tests: Four-of-a-kind on the flop — hand 0 (6c6s) makes quad sixes immediately and hits statusCantLose: true from the flop onwards. The other hands are instantly dead. Tests cantLose trigger on the flop (not just turn) and dead hand detection.

Demo 11 — All community-cards are the best five

Cards: KcJs · Qd4c · 3sJd · Jc7c Board: 7h 6h 8h 9h Th What this tests: The five community cards form a straight flush (6h-7h-8h-9h-Th), which is the best possible five-card hand regardless of hole cards. All four hands end up playing the board — statusIsWinner: true on all four at RIVER. Tests the board-plays scenario.

Demo 12 — Highlighting best cards

Cards: 8hJs · Jh4c · 9sJd · Jc7c Board: 7d 8s 8c 9d Th What this tests: Multiple jacks in the hole — the board eventually forms a straight (7-8-9-T-J), and all four hands have a Jack to complete it. All four hands win. Also tests statusCantLose: true appearing at TURN for two hands.

Demo 13 — Game-over after Flop

Cards: AsKs · Jd9c · 2h4c · 8sAh Board: Ts Js Qs | 3h | 6d What this tests: Game can end after the flop — hand 0 (AsKs) makes a Royal Flush (As-Ks-Qs-Js-Ts) on the flop and hits statusCantLose: true. All other hands are dead. The game effectively concludes at the flop even though TURN and RIVER still resolve.

Demo 14 — Game-over after Turn

Cards: AsKs · Jd9c · 2h4c · 8sAh Board: Ts Js 3h | Qs | 6d What this tests: Same hole cards as Demo 13, but community order is different — the straight flush doesn’t complete until the turn card (Qs). Tests statusCantLose activating at TURN rather than FLOP.

Demo 15 — All Equal from start

Cards: KsAd · KhAs · KcAh · KdAc Board: Ts Jd Qh | 3h | 3d What this tests: All four hands are identical — each has AK suited in a different suit. From the flop, all four are dealt a shared straight (T-J-Q-K-A) so all four statusCantLose and all four win. Tests the equal-probability scenario at HOLE, and the all-cantLose scenario from FLOP onwards.
8 failures in this demo — HOLE hands 0 and 2. All four hands are truly identical in equity. The oracle assigns statusIsFavourite: true to hand 0 (first index wins tiebreaker in v4 C#). The v6 server uses a different tiebreaker. See Test Results.

Demo 16 — All Equal but not for long (v2)

Cards: KsAd · KhAs · KcAh · KdAc Board: 6s 8s 2s | 8c | 3d What this tests: Identical hole cards again, but the community is very different from Demo 15. At FLOP, hand 1 (KhAs) has the ace of spades making an ace-high flush — statusCantLose. The others are drawing but behind. Tests the scenario where identical hole cards diverge in value depending on which suit matches the board.
8 failures in this demo — HOLE hands 0 and 3. See Test Results.

Demo 17 — All Equal but not for long (v1)

Cards: KsAd · KhAs · KcAh · KdAc Board: 6s 8s 8c | 2s | 3d What this tests: Same hole cards and same community as Demo 16, but with bc3 and bc4 swapped (8c comes before 2s). The flush completes at the flop not the turn. Tests that card ordering within a stage matters — the same cards in a different order can change when cantLose is triggered.

Summary Table