packages feed

bytestring-typenats-1.0.0: tests/test.hs

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