packages feed

anitomata-aseprite-0.1.0.0: test-suite/Test/Anitomata/Aseprite/PreprocessorSpec.hs

{-# LANGUAGE TemplateHaskell #-}
module Test.Anitomata.Aseprite.PreprocessorSpec
  ( spec
  ) where

import Prelude

import Anitomata.Aseprite.Preprocessor (PreprocessorOpts(..), preprocessorWith)
import Data.FileEmbed (makeRelativeToProject)
import Language.Haskell.TH (Exp(LitE), Lit(StringL))
import System.IO (hClose)
import System.IO.Temp (withSystemTempFile)
import Test.Hspec (Spec, describe, it, parallel)
import Test.Hspec.Golden (defaultGolden)

atlasModule :: FilePath
atlasModule = $(LitE . StringL <$> makeRelativeToProject "test-suite/codegen/TestAtlas.hs")

spec :: Spec
spec = parallel do
  describe "Anitomata.Aseprite.Preprocessor" do
    it "works" do
      withSystemTempFile "aseprite2haskell" \outputFilePath outputHandle -> do
        hClose outputHandle
        preprocessorWith PreprocessorOpts
          { preprocessorOptsOrigSourceFile = atlasModule
          , preprocessorOptsOutputFile = outputFilePath
          }
        output <- readFile outputFilePath
        pure $ defaultGolden "aseprite2haskell" output