Copyright | (c) Duncan Coutts 2015-2017 |
---|---|
License | BSD3-style (see LICENSE.txt) |
Maintainer | duncan@community.haskell.org |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module contains a set of generally useful properties, which
instance authors are encouraged to use in order to test their
instances of the
class. For example, if you have a
data type which you might derive or write instances for:Serialise
data Foo = Foo { fooInt :: Int, fooBool :: Bool } deriving (Eq, Show,Generic
) -- or, alternatively instanceSerialise
Foo whereencode
= ...decode
= ...
Then you can use this module to easily derive some quick properties:
import qualified Codec.Serialise.Properties as Props fooSerialiseId :: Foo -> Bool fooSerialiseId = Props.serialiseIdentity
fooFlatTermId :: Foo -> Bool fooFlatTermId = Props.flatTermIdentity
fooHasValidFlatTerm :: Foo -> Bool fooHasValidFlatTerm = Props.hasValidFlatTerm
You can then conveniently use these three functions with QuickCheck, for example.
Synopsis
- serialiseIdentity :: (Serialise a, Eq a) => a -> Bool
- flatTermIdentity :: (Serialise a, Eq a) => a -> Bool
- hasValidFlatTerm :: Serialise a => a -> Bool
CBOR Properties
serialiseIdentity :: (Serialise a, Eq a) => a -> Bool Source #
Ensure that serializing and deserializing some value results in the original value being returned.
Since: 0.2.0.0
FlatTerm
Properties
FlatTerm
flatTermIdentity :: (Serialise a, Eq a) => a -> Bool Source #
Ensure that serializing and deserializing a value with the
form results in the original value being returned.FlatTerm
Since: 0.2.0.0
hasValidFlatTerm :: Serialise a => a -> Bool Source #
Ensure that serializing a value into a
gives us a
valid FlatTerm
back.FlatTerm
Since: 0.2.0.0