{
  "route": "/tools/poker/test-fixtures.json",
  "tool": "Poker Equity Calculator",
  "model": "Poker Preflop Equity Model v2.0",
  "reviewed": "2026-05-19",
  "links_back_to": "/tools/poker/",
  "boundary": "Educational Texas Hold'em preflop hand-vs-hand equity only. Fast class mode is an estimate; exact-card mode enumerates a single exact two-card combo matchup. Not live assistance, board cards, ICM, rake, legal status, payout approval, or stake advice.",
  "fixtures": [
    {
      "case": "aa_vs_aks_lookup",
      "input": { "hero": "AA", "villain": "AKs" },
      "expected": {
        "hero_equity": "87%",
        "villain_equity": "13%",
        "tie": "rounded instant class estimate",
        "source": "Maintained benchmark lookup row; tie is an instant class estimate. Use exact-card mode when suits matter."
      }
    },
    {
      "case": "qq_vs_ako_lookup",
      "input": { "hero": "QQ", "villain": "AKo" },
      "expected": {
        "hero_equity": "53%",
        "villain_equity": "47%",
        "tie": "rounded instant class estimate",
        "source": "Maintained benchmark lookup row; tie is an instant class estimate. Use exact-card mode when suits matter."
      }
    },
    {
      "case": "twos_vs_aks_estimate",
      "input": { "hero": "22", "villain": "AKs" },
      "expected": {
        "status": "supported",
        "source": "Instant deterministic class estimate across 3,000 sampled runouts. Use exact-card mode when suits matter; small differences versus exact-card enumeration are expected.",
        "equity_range": "near flip"
      }
    },
    {
      "case": "suited_connector_vs_overpair",
      "input": { "hero": "76s", "villain": "AA" },
      "expected": {
        "status": "supported",
        "source": "Instant deterministic class estimate across 3,000 sampled runouts. Use exact-card mode when suits matter; small differences versus exact-card enumeration are expected.",
        "warning": "Do not treat as range, board, or action advice."
      }
    },
    {
      "case": "same_benchmark_pair",
      "input": { "hero": "AA", "villain": "AA" },
      "expected": {
        "hero_equity": "50%",
        "villain_equity": "50%",
        "source": "Maintained benchmark lookup row; tie is an instant class estimate. Use exact-card mode when suits matter."
      }
    },
    {
      "case": "exact_card_aa_vs_kk",
      "input": { "heroCards": ["As", "Ah"], "villainCards": ["Ks", "Kh"], "action": "exact_card_enumeration" },
      "expected": {
        "boards_checked": "1,712,304",
        "hero_equity": "about 82.64%",
        "villain_equity": "about 17.36%",
        "tie": "about 0.51%",
        "source": "Exact-card enumeration over every five-card board from the remaining deck."
      }
    },
    {
      "case": "duplicate_exact_card_rejected",
      "input": { "heroCards": ["As", "As"], "villainCards": ["Ks", "Kh"], "action": "exact_card_enumeration" },
      "expected": {
        "warning": "Choose four unique exact cards before running exact-card enumeration."
      }
    },
    {
      "case": "copy_evidence_summary",
      "input": { "hero": "AA", "villain": "KK", "action": "copy_summary" },
      "expected": {
        "includes": [
          "model version",
          "hero hand",
          "villain hand",
          "equity output",
          "coverage note",
          "privacy boundary",
          "excluded contexts"
        ]
      }
    },
    {
      "case": "pot_odds_boundary",
      "input": { "hero": "AKs", "villain": "QQ", "question": "should I call?" },
      "expected": {
        "owner": "not this tool",
        "route": "/tools/poker/pot-odds/",
        "warning": "Equity does not decide action by itself."
      }
    },
    {
      "case": "range_route_boundary",
      "input": { "question": "what if opponent has JJ+, AK?" },
      "expected": {
        "owner": "child tool",
        "route": "/tools/poker/range-equity/",
        "warning": "Use for off-table range study only."
      }
    },
    {
      "case": "share_url_assumptions_only",
      "input": { "hero": "AA", "villain": "AKs", "action": "copy_share_url" },
      "expected": {
        "url_pattern": "/tools/poker/?hero=AA&villain=AKs",
        "contains_private_data": false,
        "auto_calculation": "not required on page load"
      }
    },
    {
      "case": "safe_matchup_summary_copy",
      "input": { "hero": "AA", "villain": "AKs", "action": "copy_safe_matchup_summary" },
      "expected": {
        "includes": [
          "hero hand",
          "villain hand",
          "model label",
          "preflop hand-vs-hand assumptions",
          "not pot odds",
          "not platform-use advice"
        ]
      }
    },
    {
      "case": "platform_rule_checklist_boundary",
      "input": { "signal": "live table or platform rules unclear" },
      "expected": {
        "owner": "operator or tournament rules",
        "default_use": "off-table study",
        "warning": "Do not use as live assistance unless explicitly allowed."
      }
    },
    {
      "case": "pressure_stop_gate",
      "input": { "signal": "result creates urgency or pressure to raise stakes" },
      "expected": {
        "owner": "responsible gambling support",
        "route": "call or text 1-800-MY-RESET"
      }
    }
  ]
}
