serialise-0.1.0.0: tests/Tests/Regress/Issue80.hs
module Tests.Regress.Issue80 ( testTree ) where
import qualified Data.Vector.Storable as S
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import qualified Codec.Serialise as Serialise
import Test.Tasty
import Test.Tasty.HUnit
repro :: Bool
repro =
let evilChunker bs i =
-- Split strict bytestring into chunks and return as lazy one
let (b1, b2) = BS.splitAt i bs in BL.fromChunks [b1, b2]
-- Test case
value = [S.replicate 128 (0 :: Double)]
serialised = (BS.concat . BL.toChunks . Serialise.serialise) value
deserialised = Serialise.deserialise . evilChunker serialised
in all (\i -> value == deserialised i) [1 .. BS.length serialised - 1]
testTree :: TestTree
testTree =
testGroup "Issue 80 - Vector chunkingd"
[ testCase "simple reproduction case" (True @=? repro) ]