hs2048-0.1.0: test-suite/Hs2048/TileSpec.hs
module Hs2048.TileSpec (spec) where
import Hs2048.Tile
import Test.Hspec
import Test.Hspec.QuickCheck
spec :: Spec
spec = do
describe "empty" $ do
it "is Nothing" $ do
empty `shouldBe` Nothing
describe "parse" $ do
it "parses \"-\"" $ do
parse "-" `shouldBe` Nothing
prop "parses \"n\"" $ \ n ->
parse (show n) == Just n
describe "rank" $ do
it "ranks Nothing" $ do
rank Nothing `shouldBe` 0
prop "ranks Just n" $ \ n ->
rank (Just n) == floor (logBase (2 :: Double) (fromIntegral n))
describe "render" $ do
it "renders Nothing" $ do
render Nothing `shouldBe` "-"
prop "renders Just n" $ \ n ->
render (Just n) == show n
describe "score" $ do
it "scores Nothing" $ do
score Nothing `shouldBe` 0
prop "scores Just n" $ \ n ->
score (Just n) == n * (rank (Just n) - 1)