Commits

Bryan O'Sullivan  committed d5f9330

Add QuickCheck support

  • Participants
  • Parent commits fc8d3ea
  • Tags 0.5.1

Comments (0)

Files changed (2)

File tests/Makefile

+tests: TestFastSet.out
+
+%.out: %.hs
+	runghc $< > $<.tmp
+	mv $<.tmp $@

File tests/TestFastSet.hs

+module TestFastSet where
+
+import Data.Word (Word8)
+import qualified Data.ParserCombinators.Attoparsec.FastSet as F
+import System.Random (Random(..), RandomGen)
+import Test.QuickCheck
+
+integralRandomR :: (Integral a, RandomGen g) => (a, a) -> g -> (a, g)
+integralRandomR (a,b) g = case randomR (fromIntegral a :: Int,
+                                        fromIntegral b :: Int) g
+                          of (x,g') -> (fromIntegral x, g')
+
+instance Random Word8 where
+  randomR = integralRandomR
+  random = randomR (minBound,maxBound)
+
+instance Arbitrary Word8 where
+    arbitrary = choose (minBound, maxBound)
+
+prop_AllMembers s =
+    let set = F.fromList s
+    in all (`F.memberWord8` set) s
+
+main = do
+  quickCheck prop_AllMembers