packages feed

bytestring-arbitrary-0.0.1: tests/test.hs

import qualified Data.ByteString as BS
import Data.ByteString ( ByteString )
import Test.QuickCheck.Monadic
import Test.QuickCheck

import Data.ByteString.Arbitrary ( fastRandBs, slowRandBs )

main :: IO ()
main = do
  quickCheck $ lengths fastRandBs
  quickCheck $ lengths (\i -> slowRandBs $ min i 10240)
  where
  lengths :: (Int -> Gen ByteString) -> Int -> Property
  lengths genFn len =
    let gen = genFn len
    in monadicIO $ do
        samples <- run $ sample' gen
        return $ all (==len) $ map BS.length samples