14 lines
400 B
Haskell
14 lines
400 B
Haskell
module Test.QuickCheck.Classes.Hashable
|
|
( hashableLaws
|
|
) where
|
|
|
|
import ClassyPrelude
|
|
import Test.QuickCheck
|
|
import Test.QuickCheck.Classes
|
|
import Data.Proxy
|
|
|
|
hashableLaws :: forall a. (Arbitrary a, Hashable a, Eq a, Show a) => Proxy a -> Laws
|
|
hashableLaws _ = Laws "Hashable"
|
|
[ ("Injectivity", property $ \(a :: a) (a' :: a) (s :: Int) -> hashWithSalt s a /= hashWithSalt s a' ==> a /= a')
|
|
]
|