avif-2.0.0.0: test/Spec.hs
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Codec.Avif
import Control.DeepSeq (deepseq)
import qualified Data.ByteString as BS
import Data.Either (isLeft)
import Test.Tasty
import Test.Tasty.HUnit
main :: IO ()
main = defaultMain $
testGroup "Roundtrip"
[ decodeNoThrow "test/data/original.avif"
, decEncNoThrow "test/data/original.avif"
-- , decodeRGB16 "test/data/woman.avif"
, decodeFail
]
decodeFail :: TestTree
decodeFail = testCase "decodeE" $
let res = decodeE "aaaaa"
in assertBool "fails on bad input" $ isLeft res
decodeNoThrow :: FilePath -> TestTree
decodeNoThrow fp = testCase fp $ do
res <- decodeE <$> BS.readFile fp
case res of
Left err -> assertFailure (show err)
Right{} -> assertBool "Doesn't error" True
decEncNoThrow :: FilePath -> TestTree
decEncNoThrow fp = testCase fp $ do
bytes <- BS.readFile fp
let res = encode (decode bytes)
assertBool "Doesn't throw exception" (res `deepseq` True)