massiv-0.2.1.0: tests/Data/Massiv/Array/ManifestSpec.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Data.Massiv.Array.ManifestSpec (spec) where
import Data.ByteString as S
import Data.ByteString.Builder as S
import Data.ByteString.Lazy as SL
import Data.Massiv.CoreArbitrary as A
import Data.Word (Word8)
import Test.Hspec
import Test.QuickCheck
-- ByteString
prop_toFromByteString :: Array P Ix1 Word8 -> Property
prop_toFromByteString arr = toManifest arr === fromByteString (getComp arr) (toByteString arr)
prop_fromToByteString :: Comp -> [Word8] -> Property
prop_fromToByteString comp ls = bs === toByteString (fromByteString comp bs)
where bs = S.pack ls
prop_toBuilder :: Array P Ix1 Word8 -> Property
prop_toBuilder arr = bs === SL.toStrict (S.toLazyByteString (toBuilder S.word8 arr))
where bs = toByteString arr
conversionSpec :: Spec
conversionSpec = do
describe "ByteString" $ do
it "to/from ByteString" $ property prop_toFromByteString
it "from/to ByteString" $ property prop_fromToByteString
it "toBuilder" $ property prop_toBuilder
spec :: Spec
spec = describe "Conversion" conversionSpec