packages feed

aeson-tiled-0.0.0.1: test/Spec.hs

{-# LANGUAGE LambdaCase #-}
import Data.Aeson (encode, eitherDecode)
import Test.Hspec
import Control.Monad (forM_)

import Data.Aeson.Tiled

files :: [FilePath]
files = [ "maps/example.json"
        , "maps/test1.json"
        , "maps/test2.json"
        , "maps/test3.json"
        , "maps/test4.json"
        ]

main :: IO ()
main = hspec $ forM_ files $ \file ->
  describe ("With " ++ show file) $
    it "loading and encoding and decoding should end up with the same Tiledmap" $
      loadTiledmap file >>= \case
        Right tm -> do
          let bs = encode tm
          eitherDecode bs `shouldBe` Right tm
        _ -> fail $ "Could not decode Tiledmap from " ++ show file