[commit: packages/binary] master: Test list of values for Natural and GHC.Fingerprint. (8e28858)

git at git.haskell.org git at git.haskell.org
Tue Apr 19 20:30:11 UTC 2016


Repository : ssh://git@git.haskell.org/binary

On branch  : master
Link       : http://git.haskell.org/packages/binary.git/commitdiff/8e2885862c2c60282b50d5d7dd7427d6980c2e7e

>---------------------------------------------------------------

commit 8e2885862c2c60282b50d5d7dd7427d6980c2e7e
Author: Lennart Kolmodin <kolmodin at gmail.com>
Date:   Fri Apr 8 23:10:42 2016 +0200

    Test list of values for Natural and GHC.Fingerprint.


>---------------------------------------------------------------

8e2885862c2c60282b50d5d7dd7427d6980c2e7e
 tests/QC.hs | 43 ++++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/tests/QC.hs b/tests/QC.hs
index a3e069d..78dda8c 100644
--- a/tests/QC.hs
+++ b/tests/QC.hs
@@ -415,30 +415,24 @@ main = defaultMain tests
 ------------------------------------------------------------------------
 
 #ifdef HAS_NATURAL
-prop_test_Natural :: Property
-prop_test_Natural = forAll (gen :: Gen Natural) test
-  where
-    gen :: Gen Natural
-    gen = do
-      b <- arbitrary
-      if b
-        then do
-          x <- arbitrarySizedNatural :: Gen Natural
-          -- arbitrarySizedNatural generates numbers smaller than
-          -- (maxBound :: Word64), so let's make them bigger to better test
-          -- the Binary instance.
-          return (x + fromIntegral (maxBound :: Word64))
-        else arbitrarySizedNatural
+genNatural :: Gen Natural
+genNatural = do
+  b <- arbitrary
+  if b
+    then do
+      x <- arbitrarySizedNatural :: Gen Natural
+      -- arbitrarySizedNatural generates numbers smaller than
+      -- (maxBound :: Word64), so let's make them bigger to better test
+      -- the Binary instance.
+      return (x + fromIntegral (maxBound :: Word64))
+    else arbitrarySizedNatural
 #endif
 
 ------------------------------------------------------------------------
 
 #ifdef HAS_GHC_FINGERPRINT
-prop_test_GHC_Fingerprint :: Property
-prop_test_GHC_Fingerprint = forAll gen test
-  where
-    gen :: Gen Fingerprint
-    gen = liftM2 Fingerprint arbitrary arbitrary
+genFingerprint :: Gen Fingerprint
+genFingerprint = liftM2 Fingerprint arbitrary arbitrary
 #if !MIN_VERSION_base(4,7,0)
 instance Show Fingerprint where
   show (Fingerprint x1 x2) = show (x1,x2)
@@ -487,6 +481,13 @@ test' desc prop propList =
     testProperty ("[" ++ desc ++ "]") propList
   ]
 
+testWithGen :: (Show a, Eq a, Binary a) => String -> Gen a -> Test
+testWithGen desc gen =
+  testGroup desc [
+    testProperty desc (forAll gen test),
+    testProperty ("[" ++ desc ++ "]") (forAll (listOf gen) test)
+  ]
+
 positiveList :: Gen [Int]
 positiveList = fmap (filter (/=0) . map abs) $ arbitrary
 
@@ -570,10 +571,10 @@ tests =
             , test' "Integer"     (test :: T Integer) test
             , test' "Fixed"       (test :: T (Fixed.Fixed Fixed.E3) ) test
 #ifdef HAS_NATURAL
-            , testProperty "Natural" prop_test_Natural
+            , testWithGen "Natural" genNatural
 #endif
 #ifdef HAS_GHC_FINGERPRINT
-            , testProperty "GHC.Fingerprint" prop_test_GHC_Fingerprint
+            , testWithGen "GHC.Fingerprint" genFingerprint
 #endif
 
             , test' "Float"       (test :: T Float ) test



More information about the ghc-commits mailing list