avro-0.5.2.1: test/Avro/Codec/MaybeSpec.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Avro.Codec.MaybeSpec (spec) where
import Avro.TestUtils
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import qualified Hedgehog.Gen as Gen
import Test.Hspec
import Data.Avro.Deriving (deriveAvroFromByteString, r)
import qualified Data.Avro.Schema.Schema as Schema
{- HLINT ignore "Redundant do" -}
deriveAvroFromByteString [r|
{
"type": "record",
"name": "OnlyMaybeBool",
"namespace": "test.contract",
"fields": [ {"name": "onlyMaybeBoolValue", "type": ["null", "boolean"]} ]
}
|]
deriveAvroFromByteString [r|
{
"type": "record",
"name": "OnlyMaybeBool'",
"namespace": "test.contract",
"fields": [ {"name": "onlyMaybeBoolValue", "type": ["boolean", "null"]} ]
}
|]
spec :: Spec
spec = describe "Avro.Codec.MaybeSpec" $ do
it "should encode then decode Maybe Bool correctly" $ require $ property $ do
roundtripGen schema'OnlyMaybeBool (OnlyMaybeBool <$> Gen.maybe Gen.bool)
it "should be able to roundtrip a Maybe Bool defined with flipped union type" $ require $ property $ do
roundtripGen schema'OnlyMaybeBool' (OnlyMaybeBool' <$> Gen.maybe Gen.bool)