@@ -15,17 +15,15 @@ module Streamly.Test.Data.Serialize (main) where
15--------------------------------------------------------------------------------
15--------------------------------------------------------------------------------
17import Streamly.Internal.Data.Unbox (newBytes)
17import Streamly.Internal.Data.Unbox (newBytes)
18−
18+import GHC.Generics (Generic)
19−import Test.Hspec as H
19+import Streamly.Test.Data.Serialize.TH (genDatatype)
21import Streamly.Internal.Data.Serialize.TH (deriveSerialize)
20import Streamly.Internal.Data.Serialize.TH (deriveSerialize)
22−-- import Streamly.Internal.Data.Serialize (Serialize(..))
24import qualified Streamly.Internal.Data.Serialize as Serialize
22import qualified Streamly.Internal.Data.Serialize as Serialize
26−import Streamly.Test.Data.Serialize.TH (genDatatype)
28import Test.Hspec.QuickCheck
24import Test.Hspec.QuickCheck
25+import Test.QuickCheck
26+import Test.Hspec as H
30--------------------------------------------------------------------------------
28--------------------------------------------------------------------------------
31-- Generated types
29-- Generated types
@@ -34,6 +32,21 @@ import Test.Hspec.QuickCheck
34$(genDatatype "CustomDatatype" 15)
32$(genDatatype "CustomDatatype" 15)
35$(deriveSerialize ''CustomDatatype)
33$(deriveSerialize ''CustomDatatype)
35+--------------------------------------------------------------------------------
37+--------------------------------------------------------------------------------
41+ = Tree (BinTree a) (BinTree a)
43+ deriving (Show, Read, Eq, Generic)
45+$(deriveSerialize ''BinTree)
47+instance Arbitrary a => Arbitrary (BinTree a) where
48+ arbitrary = oneof [Leaf <$> arbitrary, Tree <$> arbitrary <*> arbitrary]
37--------------------------------------------------------------------------------
50--------------------------------------------------------------------------------
38-- Test helpers
51-- Test helpers
39--------------------------------------------------------------------------------
52--------------------------------------------------------------------------------
@@ -91,12 +104,14 @@ testCases = do
91 prop "[CustomDatatype]"
104 prop "[CustomDatatype]"
92 $ \(x :: [CustomDatatype]) -> roundtrip x
105 $ \(x :: [CustomDatatype]) -> roundtrip x
107+ prop "BinTree" $ \(x :: BinTree Int) -> roundtrip x
94--------------------------------------------------------------------------------
109--------------------------------------------------------------------------------
95-- Main function
110-- Main function
96--------------------------------------------------------------------------------
111--------------------------------------------------------------------------------
98moduleName :: String
113moduleName :: String
99−moduleName = "Data.Unboxed"
114+moduleName = "Data.Serialize"
101main :: IO ()
116main :: IO ()
102main = hspec $ H.parallel $ describe moduleName testCases
117main = hspec $ H.parallel $ describe moduleName testCases