packages feed

avro-0.3.6.0: test/Avro/Codec/ArraySpec.hs

{-# LANGUAGE ScopedTypeVariables #-}

module Avro.Codec.ArraySpec (spec) where

import Data.Avro
import Data.Map (Map)
import qualified Data.Map as M
import Data.Text as T
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as U

import Test.Hspec
import qualified Test.QuickCheck as Q

{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}

spec :: Spec
spec = describe "Avro.Codec.ArraySpec" $ do
  it "list roundtip" $ Q.property $ \(xs :: [Int]) -> decode (encode xs) == Success xs

  it "map roundtrip" $ Q.property $ \(xs :: Map String Int) ->
    let xs' = M.mapKeys T.pack xs
    in decode (encode xs') == Success xs'

  it "vector roundtrip" $ Q.property $ \(xs :: [Int]) ->
    let vec = V.fromList xs
    in decode (encode vec) == Success vec

  it "unboxed vector roundtrip" $ Q.property $ \(xs :: [Int]) ->
    let vec = U.fromList xs
    in decode (encode vec) == Success vec