ktx-codec-0.0.1.3: test/Spec.hs
module Main where
import Control.Monad (guard, unless)
import Data.List (isSuffixOf)
import Debug.Trace (traceM)
import Shower (printer)
import System.Directory (listDirectory)
import System.FilePath ((</>))
import Data.ByteString.Builder (Builder, toLazyByteString)
import qualified Data.ByteString.Lazy as BSL
import qualified Codec.Ktx as Ktx1
assetsPath :: FilePath
assetsPath = ".." </> "assets"
main :: IO ()
main = do
assets <- listDirectory assetsPath
mapM_ testKtx1 do
fp <- assets
guard $ ".ktx" `isSuffixOf` fp
pure $ assetsPath </> fp
testKtx1 :: FilePath -> IO ()
testKtx1 source =
Ktx1.fromFile source >>= \case
Left (offset, err) -> do
traceM err
fail $ unwords
[ "KTX-1 load error in"
, source
, "at"
, show offset
]
Right ktx -> do
printer ktx
let encodedBytes = toLazyByteString (Ktx1.toBuilder ktx)
originalBytes <- BSL.readFile source
unless (encodedBytes == originalBytes) $
fail $ "Encoded KTX does not match original for " <> source