[
  {
    "tool_url": "/tools/slots/",
    "case": "default_session",
    "input": {
      "rtp": 96.5,
      "volatility": "medium",
      "bet": 1,
      "spins": 1000,
      "spinsPerHour": 500,
      "bankroll": 200
    },
    "expected": {
      "totalWagered": 1000,
      "expectedLoss": 35,
      "expectedReturn": 965,
      "hourlyExpectedLoss": 17.5,
      "estimatedSessionHours": 2,
      "bankrollStress": "high"
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "invalid_rtp_zero",
    "input": {
      "rtp": 0,
      "volatility": "medium",
      "bet": 1,
      "spins": 100
    },
    "expected": {
      "validation": "Enter an RTP above 0 and below 100."
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "invalid_rtp_above_100",
    "input": {
      "rtp": 100,
      "volatility": "medium",
      "bet": 1,
      "spins": 100
    },
    "expected": {
      "validation": "Enter an RTP above 0 and below 100."
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "high_volatility_band_wider_than_low",
    "input": {
      "rtp": 96,
      "lowVolatilityFactor": 0.4,
      "highVolatilityFactor": 1.8,
      "bet": 2,
      "spins": 500
    },
    "expected": {
      "highBandSpreadGreaterThanLow": true
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "very_high_volatility_factor",
    "input": {
      "volatility": "veryHigh"
    },
    "expected": {
      "volatilityFactor": 2.6
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "hourly_expected_loss",
    "input": {
      "rtp": 96,
      "bet": 2,
      "spinsPerHour": 400
    },
    "expected": {
      "hourlyExpectedLoss": 32
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "blank_bankroll",
    "input": {
      "rtp": 96.5,
      "volatility": "medium",
      "bet": 1,
      "spins": 1000,
      "spinsPerHour": 500,
      "bankroll": ""
    },
    "expected": {
      "bankrollNote": "No bankroll entered. Add one to compare the session against your bankroll.",
      "visualBars": "labels show bankroll not entered"
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "high_pressure_flag",
    "input": {
      "rtp": 96,
      "volatility": "veryHigh",
      "bet": 5,
      "spins": 1000,
      "spinsPerHour": 700,
      "bankroll": 250
    },
    "expected": {
      "pressureFlagContains": "pause",
      "notAction": "raise stake or spin count"
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "simulation_stop_loss_floor_invalid",
    "input": {
      "bankroll": 200,
      "stopLossFloor": 200
    },
    "expected": {
      "validation": "Stop-loss floor must be zero or greater and below the starting bankroll."
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "simulation_histogram_default",
    "input": {
      "rtp": 96.5,
      "volatility": "medium",
      "bet": 1,
      "spins": 1000,
      "bankroll": 200,
      "stopLossFloor": 100
    },
    "expected": {
      "histogramBuckets": ["At/below stop-loss", "Below 75% start", "75% to start", "Start to 125%", "125% to 175%", "Above 175%"],
      "markerTextContains": ["start", "median", "stop-loss"],
      "boundary": "rough stress visualization, not a prediction"
    }
  },
  {
    "tool_url": "/tools/slots/",
    "case": "share_url_assumptions_only",
    "input": {
      "rtp": 96.5,
      "volatility": "medium",
      "bet": 1,
      "spins": 1000,
      "spinsPerHour": 500,
      "bankroll": 200
    },
    "expected": {
      "urlStartsWith": "https://theplaybookusa.com/tools/slots/?",
      "containsPrivateData": false,
      "canonical": "https://theplaybookusa.com/tools/slots/"
    }
  }
]
