Aleksey Khudyakov avatar Aleksey Khudyakov committed 8c80b66

Add property for identity functions

Comments (0)

Files changed (1)

Test/QuickCheck/Property/Generic.hs

     module Test.QuickCheck.Property.Common
     -- * General
   , prop_Reflexive
+  , prop_Identity
     -- * Monoids & group
   , prop_Associative
   , prop_Commutative
 prop_Reflexive :: (a -> a -> Bool) -> T a -> a -> Bool
 prop_Reflexive f T x = f x x
 
+-- | Test that function is identity. Useful for testing serializaion/deserialization
+--
+-- > f x = x
+prop_Identity :: (a -> a) -> T a -> a -> Equal a
+prop_Identity f T x = f x .==. x
 
 ----------------------------------------------------------------
 -- Monoids & Co
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.