packages feed

massiv-io-0.2.1.0: tests/Test/Massiv/Array/IO/Image/JuicyPixelsSpec.hs

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
module Test.Massiv.Array.IO.Image.JuicyPixelsSpec (spec) where

import Data.Massiv.Array.IO hiding (showsType)
import Test.Massiv.Core
import Test.Massiv.Array.IO.Image.Common

spec :: Spec
spec =
  describe "Readable/Writable" $ do
    describe "BMP" $ do
      specEncodeNoError @Y' @Word8 BMP
      specEncodeNoError @(Y D65) @Word8 BMP
      --specEncodeDecodeNoError @(Y D65) @Word8 BMP
      specEncodeDecodeNoError @SRGB @Word8 BMP
      specEncodeDecodeNoError @(Alpha SRGB) @Word8 BMP
    describe "GIF" $ do
      specEncodeNoError @Y' @Word8 GIF
      specEncodeNoError @(Y D65) @Word8 GIF
      specEncodeDecodeNoError @SRGB @Word8 GIF
      --specEncodeGifSequenceNoError @(Y D65) @Word8
      describe "Sequenece" $ do
        specEncodeDecodeGifSequenceNoError @SRGB @Word8
        specEncodeDecodeGifSequenceNoError @(Alpha SRGB) @Word8
      -- TODO: read RGBA8, write Y8
    -- getting 'DecodeError "Invalid sanline size"' with seed=2023820902
    -- describe "HDR" $ do
    --   specEncodeDecodeNoError @SRGB @Float HDR
    describe "JPG" $ do
      specEncodeDecodeNoError @Y' @Word8 JPG
      specEncodeDecodeNoError @(Y D65) @Word8 JPG
      specEncodeDecodeNoError @SRGB @Word8 JPG
      specEncodeDecodeNoError @(CMYK SRGB) @Word8 JPG
      specEncodeDecodeNoError @(YCbCr SRGB) @Word8 JPG
      -- TODO: read YA8
    describe "PNG" $ do
      specEncodeDecodeNoError @Y' @Word8 PNG
      specEncodeDecodeNoError @Y' @Word16 PNG
      specEncodeDecodeNoError @(Alpha Y') @Word8 PNG
      specEncodeDecodeNoError @(Alpha Y') @Word16 PNG
      specEncodeDecodeNoError @(Y D65) @Word8 PNG
      specEncodeDecodeNoError @(Y D65) @Word16 PNG
      specEncodeDecodeNoError @(Alpha (Y D65)) @Word8 PNG
      specEncodeDecodeNoError @(Alpha (Y D65)) @Word16 PNG
      specEncodeDecodeNoError @SRGB @Word8 PNG
      specEncodeDecodeNoError @SRGB @Word16 PNG
      specEncodeDecodeNoError @(Alpha SRGB) @Word8 PNG
      specEncodeDecodeNoError @(Alpha SRGB) @Word16 PNG
    describe "TGA" $ do
      specEncodeDecodeNoError @Y' @Word8 TGA
      specEncodeDecodeNoError @(Y D65) @Word8 TGA
      specEncodeDecodeNoError @SRGB @Word8 TGA
      specEncodeDecodeNoError @(Alpha SRGB) @Word8 TGA
    describe "TIF" $ do
      specEncodeDecodeNoError @Y' @Word8 TIF
      specEncodeDecodeNoError @Y' @Word16 TIF
      specEncodeDecodeNoError @Y' @Word32 TIF
      specEncodeDecodeNoError @Y' @Float TIF
      specEncodeDecodeNoError @(Y D65) @Word8 TIF
      specEncodeDecodeNoError @(Y D65) @Word16 TIF
      specEncodeDecodeNoError @(Y D65) @Word32 TIF
      specEncodeDecodeNoError @(Y D65) @Float TIF
      specEncodeDecodeNoError @(Alpha Y') @Word8 TIF
      specEncodeDecodeNoError @(Alpha Y') @Word16 TIF
      specEncodeDecodeNoError @(Alpha (Y D65)) @Word8 TIF
      specEncodeDecodeNoError @(Alpha (Y D65)) @Word16 TIF
      specEncodeDecodeNoError @SRGB @Word8 TIF
      specEncodeDecodeNoError @SRGB @Word16 TIF
      specEncodeDecodeNoError @(Alpha SRGB) @Word8 TIF
      specEncodeDecodeNoError @(Alpha SRGB) @Word16 TIF
      specEncodeDecodeNoError @(CMYK SRGB) @Word8 TIF
      specEncodeDecodeNoError @(CMYK SRGB) @Word16 TIF
      specEncodeNoError @(YCbCr SRGB) @Word8 TIF