hs2048-0.1.0: test-suite/Hs2048/DirectionSpec.hs
module Hs2048.DirectionSpec (spec) where
import Hs2048.Direction
import Test.Hspec
spec :: Spec
spec = do
describe "Direction" $ do
it "is an instance of Bounded" $ do
minBound `shouldBe` West
maxBound `shouldBe` North
it "is an instance of Enum" $ do
succ West `shouldBe` South
pred North `shouldBe` East
toEnum 1 `shouldBe` South
fromEnum East `shouldBe` 2
enumFrom North `shouldBe` [North]
enumFromThen West East `shouldBe` [West, East]
enumFromTo West West `shouldBe` [West]
enumFromThenTo West East North `shouldBe` [West, East]
it "is an instance of Eq" $ do
West == West `shouldBe` True
West /= West `shouldBe` False
it "is an instance of Show" $ do
show West `shouldBe` "West"
showList [West] "" `shouldBe` "[West]"
describe "directions" $ do
it "returns the directions" $ do
directions `shouldBe` [West, South, East, North]
describe "render" $ do
it "renders West" $ do
render West `shouldBe` "\x2190"
it "renders South" $ do
render South `shouldBe` "\x2193"
it "renders East" $ do
render East `shouldBe` "\x2192"
it "renders North" $ do
render North `shouldBe` "\x2191"