packages feed

snap-server-0.2.8: test/suite/Data/HashMap/Concurrent/Tests.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE PackageImports #-}

module Data.HashMap.Concurrent.Tests
  ( tests ) where

import           Data.List
import           Test.Framework 
import           Test.Framework.Providers.QuickCheck2
import           Test.QuickCheck
import           Test.QuickCheck.Monadic

import qualified Data.HashMap.Concurrent as H

tests :: [Test]
tests = [ testFromTo ]


testFromTo :: Test
testFromTo = testProperty "HashMap/fromList/toList" $
             monadicIO $ forAllM arbitrary prop
  where
    prop l = do
        ht <- run $ H.fromList H.hashInt (l :: [(Int,Int)])
        l' <- run $ H.toList ht

        let s1 = sort l
        let s2 = sort l'

        assert $ s1 == s2