packages feed

ansi-terminal-game-0.3.0.0: test/Terminal/Game/PlaneSpec.hs

module Terminal.Game.PlaneSpec where

import Test.Hspec
import Terminal.Game.Plane
import Terminal.Game.Draw


spec :: Spec
spec = do

  let testPlane =         blankPlane 2 2 &
                  (1,1) % box '.' 2 2    &
                  (1,2) % cell ' '

  describe "listPlane" $ do
    it "creates a plane from string" $
      listPlane (2,2) (map creaCell ". ..") `shouldBe` testPlane
    it "ignores extra characters" $
      listPlane (2,2) (map creaCell ". ..abc") `shouldBe` testPlane

  describe "pastePlane" $ do
    it "pastes a simple plane onto another" $
      pastePlane (cell 'a') (cell 'b') (1,1) `shouldBe` cell 'a'

  describe "stringPlane" $ do
    it "creates plane from spec" $
      stringPlane ".\n.." `shouldBe` testPlane

  describe "stringPlaneTrans" $ do
    it "allows transparency" $
      stringPlaneTrans '.' ".\n.." `shouldBe` addVitrum '.' testPlane

  describe "updatePlane" $ do
    let ma = listPlane (2,1) (map creaCell "ab")
        mb = listPlane (2,1) (map creaCell "xb")
    it "updates a Plane" $
      updatePlane ma [((1,1), creaCell 'x')] `shouldBe` mb