packages feed

poker-0.1.0.0: test/evaluate/EvaluateSpec.hs

module Main where

import Test.Hspec
import Poker.Holdem
import Poker.Deck
import Poker.Holdem.Evaluate
import Data.List.Split (splitOn)
readLine :: [Int] -> (Hand, HandRank)
readLine [c1, c2, c3, c4, c5, c6, c7, rank] =
  (
    Hand (Hole (Card c1) (Card c2)) ( Community (Flop (Card c3) (Card c4) (Card c5)) (Turn (Card c6)) (Street (Card c7)))
  , HandRank  rank
  )

testTable = do
  let filepath =  "test/data/evaluate_holdem.csv"
  content <- tail . lines <$> readFile filepath
  return $ map (readLine . (map read) . splitOn ",") content


test (hand, rank) = do
  context (show hand) $ do
    it ("should have rank: " ++ show rank) $ do
      evaluateHand hand `shouldBe` rank

main = do
  tests <- testTable
  hspec $
    describe "Poker.Holdem.Evaluate.evaluate" $ do
      mapM_ test tests