packages feed

chatter-0.0.0.4: tests/src/Data/DefaultMapTests.hs

module Data.DefaultMapTests where

import Test.QuickCheck (Arbitrary, arbitrary)
import Test.QuickCheck.Instances ()
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.Framework ( testGroup, Test )

import Data.Serialize (decode, encode)

import Data.DefaultMap (DefaultMap(..), fromList)

tests :: Test
tests = testGroup "NLP.Data.DefaultMapTests"
        [ testGroup "Serialize / Deserialize Tests"
          [ testProperty "DefaultMap round-trips" prop_defMapSerialize
          ]
        ]

instance (Arbitrary k, Arbitrary v, Ord k) => Arbitrary (DefaultMap k v) where
  arbitrary = do
      def <- arbitrary
      entries <- arbitrary
      return $ fromList def entries

prop_defMapSerialize :: DefaultMap String String -> Bool
prop_defMapSerialize c = case (decode . encode) c of
                           Right c' -> c == c'
                           Left _ -> False