packages feed

avro-0.5.2.1: test/Avro/Encoding/LogicalTypesSpec.hs

module Avro.Encoding.LogicalTypesSpec
where

import Avro.Data.Logical
import Data.Avro                   (decodeValue, decodeValueWithSchema, encodeValue, encodeValueWithSchema)
import Data.Avro.Schema.ReadSchema (fromSchema)

import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec

{- HLINT ignore "Reduce duplication"  -}
{- HLINT ignore "Redundant do"        -}

spec :: Spec
spec = describe "Avro.Encoding.LogicalTypesSpec" $ do
  describe "Round-tripping" $ do
    it "shoule encode with ToAvro and decode with FromAvro" $ require $ property $ do
      x <- forAll logicalGen
      tripping x (encodeValueWithSchema schema'Logical) (decodeValueWithSchema (fromSchema schema'Logical))

    it "should encode/decode value using HasAvroSchema" $ require $ property $ do
      x <- forAll logicalGen
      tripping x encodeValue decodeValue