import qualified Data.ByteString as BS
import Data.ByteString ( ByteString )
import Test.QuickCheck.Monadic
import Test.QuickCheck
#ifdef UseArbitrary
import Data.ByteString.TypeNats ( fastRandBs, slowRandBs )
#endif
main :: IO ()
main = do
#ifdef UseArbitrary
quickCheck $ lengths fastRandBs
quickCheck $ lengths (\i -> slowRandBs $ min i 10240)
x <- generate $ fastRandBs 100000000
putStrLn $ "100000000 " ++ (show $ BS.length x)
where
lengths :: (Int -> Gen ByteString) -> Int -> Property
lengths genFn len =
let len' = abs len
gen = genFn len'
in monadicIO $ do
samples <- run $ sample' gen
assert $ all (==len') $ map BS.length samples
#else
putStrLn "Arbitrary disabled; nothing to test"
#endif