packages feed

unordered-containers-rematch-0.1.0.0: Control/Rematch/HashSet.hs

module Control.Rematch.HashSet where
import Data.HashSet
import Data.Hashable
import qualified Data.HashSet as H
import Control.Rematch(Matcher(..), standardMismatch)

isEmpty :: (Show a) => Matcher (HashSet a)
isEmpty = Matcher {
    match = H.null
  , description = "isEmpty"
  , describeMismatch = standardMismatch
  }

hasSize :: (Show a) => Int -> Matcher (HashSet a)
hasSize n = Matcher {
    match = (== n) . H.size
  , description = "hasSize " ++ show n
  , describeMismatch = (\m -> "had size " ++ show (H.size m))
  }

hasMember :: (Show a, Eq a, Hashable a) => a -> Matcher (HashSet a)
hasMember x = Matcher {
    match = H.member x
  , description = "hasMember " ++ show x
  , describeMismatch = standardMismatch
  }

containsSet :: (Show a, Eq a, Hashable a) => HashSet a -> Matcher (HashSet a)
containsSet h = Matcher {
    match = H.null . H.difference h
  , description = "containsSet " ++ show h
  , describeMismatch = standardMismatch
  }