streamly-0.10.0: test/Streamly/Test/Data/Serialize/CompatV1.hs
{-# LANGUAGE TemplateHaskell #-}
module Streamly.Test.Data.Serialize.CompatV1
( Rec(..)
, River(..)
) where
--------------------------------------------------------------------------------
-- Imports
--------------------------------------------------------------------------------
import Test.QuickCheck (Arbitrary, arbitrary, elements)
import Streamly.Internal.Data.MutByteArray (Serialize)
import qualified Streamly.Internal.Data.MutByteArray as Serialize
--------------------------------------------------------------------------------
-- Types
--------------------------------------------------------------------------------
data Rec a =
Rec
{ initialField :: Int
, otherField :: a
, theLastField :: Maybe String
, aNewField :: Maybe Char
}
deriving (Eq, Show)
instance Arbitrary a => Arbitrary (Rec a) where
arbitrary = Rec <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
$(Serialize.deriveSerializeWith
(Serialize.encodeRecordFields True)
[d|instance Serialize a => Serialize (Rec a)|])
data River
= Yamuna
| Krishna
| Godavari
| Ganga
deriving (Eq, Show, Read)
instance Arbitrary River where
arbitrary = elements [Ganga, Yamuna, Godavari]
$(Serialize.deriveSerializeWith
(Serialize.encodeConstrNames True)
[d|instance Serialize River|])