packages feed

haskey-btree-0.3.0.0: tests/Properties/Impure/Fold.hs

module Properties.Impure.Fold where

import Test.Framework (Test, testGroup)
import Test.Framework.Providers.QuickCheck2 (testProperty)

import Control.Monad ((>=>))

import Data.Int
import qualified Data.Map as M

import Data.BTree.Alloc.Debug
import qualified Data.BTree.Impure as B

tests :: Test
tests = testGroup "Impure.Fold"
    [ testProperty "foldable toList fromList" prop_foldable_toList_fromList
    ]

prop_foldable_toList_fromList :: [(Int64, Integer)] -> Bool
prop_foldable_toList_fromList kvs
    | (v, _) <- runDebug emptyPages $
        foldl (>=>) return (map (uncurry B.insert) kvs) B.empty
         >>= B.toList
    = v == M.toList (M.fromList kvs)