packages feed

openexr-write-0.1.0.0: test/Spec.hs

-- TODO: maybe add function that returns bytestring
-- TODO: test against images saved by the official OpenEXR library

import qualified Data.ByteString.Lazy as BL
import qualified Data.Vector          as V
import           System.Directory     (removeFile)
import           Test.Hspec

import qualified Graphics.OpenEXR     as EXR




main :: IO ()
main = hspec $ after_ (removeFile "tmp.exr") $ do
        let image  = EXR.ImageRGBF 1 1 (V.fromList [EXR.PixelRGBF 1 0 0])
            folder = "test/images/"

        describe "OpenEXR.writeFile" $ do
                it "saves image without compression" $ do
                        EXR.writeFile "tmp.exr" image EXR.NoCompression
                        output <- BL.readFile "tmp.exr"
                        valid  <- BL.readFile (folder ++ "red_1x1_no_compression.exr")
                        output `shouldBe` valid
                it "saves image with ZIPS compression" $ do
                        EXR.writeFile "tmp.exr" image EXR.ZipsCompression
                        output <- BL.readFile "tmp.exr"
                        valid  <- BL.readFile (folder ++ "red_1x1_zips_compression.exr")
                        output `shouldBe` valid
                it "saves image with ZIP compression" $ do
                        EXR.writeFile "tmp.exr" image EXR.ZipCompression
                        output <- BL.readFile "tmp.exr"
                        valid  <- BL.readFile (folder ++ "red_1x1_zip_compression.exr")
                        output `shouldBe` valid