@@ -22,7 +22,7 @@ module Streamly.Test.Data.Serialize (main) where
22--------------------------------------------------------------------------------
22--------------------------------------------------------------------------------
24import System.Random (randomRIO)
24import System.Random (randomRIO)
25−import Streamly.Internal.Data.Unbox (newBytes)
25+import Streamly.Internal.Data.Unbox (MutableByteArray, newBytes)
26import GHC.Generics (Generic)
26import GHC.Generics (Generic)
27import Streamly.Test.Data.Serialize.TH (genDatatype)
27import Streamly.Test.Data.Serialize.TH (genDatatype)
28import qualified Streamly.Internal.Data.Serialize.TH as Serialize
28import qualified Streamly.Internal.Data.Serialize.TH as Serialize
@@ -114,12 +114,11 @@ instance Arbitrary a => Arbitrary (BinTree a) where
114-- Test helpers
114-- Test helpers
115--------------------------------------------------------------------------------
115--------------------------------------------------------------------------------
118− :: forall a. (Eq a, Show a, Serialize.Serialize a)
118+ forall a. Serialize.Serialize a
120− -> IO ()
120+ -> IO (MutableByteArray, Int, Int)
121−roundtrip val = do
121+poke val = do
123 let sz = Serialize.size 0 val
122 let sz = Serialize.size 0 val
125 let excessSize = 100
124 let excessSize = 100
@@ -132,16 +131,34 @@ roundtrip val = do
132 arr <- newBytes arrSize
131 arr <- newBytes arrSize
134 off1 <- Serialize.serialize serStartOff arr val
133 off1 <- Serialize.serialize serStartOff arr val
134+ off1 `shouldBe` serEndOff
135+ pure (arr, serStartOff, serEndOff)
138+ forall a. (Eq a, Show a, Serialize.Serialize a)
139+ => (MutableByteArray, Int, Int)
142+peekAndVerify (arr, serStartOff, serEndOff) val = do
135 (off2, val2) <- Serialize.deserialize serStartOff arr serEndOff
143 (off2, val2) <- Serialize.deserialize serStartOff arr serEndOff
136 val2 `shouldBe` val
144 val2 `shouldBe` val
137− off2 `shouldBe` off1
138 off2 `shouldBe` serEndOff
145 off2 `shouldBe` serEndOff
139− val `shouldBe` Serialize.decode (Serialize.encode val)
140 let slice = Array.Array arr serStartOff serEndOff
146 let slice = Array.Array arr serStartOff serEndOff
141 val `shouldBe` Serialize.decode slice
147 val `shouldBe` Serialize.decode slice
142 clonedSlice <- Array.clone slice
148 clonedSlice <- Array.clone slice
143 val `shouldBe` Serialize.decode clonedSlice
149 val `shouldBe` Serialize.decode clonedSlice
152+ :: forall a. (Eq a, Show a, Serialize.Serialize a)
157+ val `shouldBe` Serialize.decode (Serialize.encode val)
160+ peekAndVerify res val
145testSerializeList
162testSerializeList
146 :: forall a. (Eq a, Show a, Serialize.Serialize a)
163 :: forall a. (Eq a, Show a, Serialize.Serialize a)