hip-1.2.0.0: tests/Graphics/Image/Interface/VectorSpec.hs
{-# LANGUAGE FlexibleContexts #-}
module Graphics.Image.Interface.VectorSpec (spec) where
import Test.Hspec
import Test.QuickCheck
import qualified Graphics.Image as IM
import qualified Graphics.Image.Interface.Vector as IV
import Graphics.Image.Types
import Graphics.Image.InterfaceSpec ()
prop_fromToIx :: Positive Int -> (NonNegative Int, NonNegative Int) -> Bool
prop_fromToIx (Positive n) (NonNegative i, NonNegative j) =
(i, j `mod` n) == IV.toIx n (IV.fromIx n (i, j `mod` n))
prop_toFromIx :: Positive Int -> NonNegative Int -> Bool
prop_toFromIx (Positive n) (NonNegative k) = k == IV.fromIx n (IV.toIx n k)
prop_toFromVector
:: Image VU Y Word8 -> Bool
prop_toFromVector img = img == IV.fromUnboxedVector (IM.dims img) (IV.toUnboxedVector img)
spec :: Spec
spec = do
describe "Vector Representation Properties" $ do
it "fromToIx" $ property $ prop_fromToIx
it "toFromIx" $ property $ prop_toFromIx
it "toFromVector" $ property $ prop_toFromVector