packages feed

BitStringRandomMonad 0.2.0.0 → 0.2.0.2

raw patch · 3 files changed

+37/−3 lines, 3 filesdep +BitStringRandomMonaddep +QuickCheckdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: BitStringRandomMonad, QuickCheck

Dependency ranges changed: base

API changes (from Hackage documentation)

- Crypto.RandomMonad: replaceSeedM :: Monad m => RndState -> RndT m ()
+ Crypto.RandomMonad: replaceSeedM :: Monad m => RndStatePrimitive -> RndT m ()

Files

BitStringRandomMonad.cabal view
@@ -2,7 +2,7 @@ --  documentation, see http://haskell.org/cabal/users-guide/  name:                BitStringRandomMonad-version:             0.2.0.0+version:             0.2.0.2 description:         A library which turns a bytestring into a random monad.                      Input could be any PRNG which can output a lazy                      bytestring.@@ -30,6 +30,21 @@    -- hs-source-dirs:   default-language:    Haskell2010++Test-Suite random-monad-tests+  type: exitcode-stdio-1.0+  hs-source-dirs: Test+  main-is: Tests.hs+  build-depends: base,+                 QuickCheck,+                 transformers,+                 bytestring,+                 bitstring,+                 mtl,+                 primitive,+                 parallel,+                 vector,+                 BitStringRandomMonad  Source-Repository head   Type:       git
Crypto/RandomMonad.hs view
@@ -120,8 +120,11 @@ type RndIO a = RndT IO a type Rnd a = RndT Identity a -replaceSeedM :: Monad m => RndState -> RndT m ()-replaceSeedM s = RndT $ put s+replaceSeedM :: Monad m => RndStatePrimitive -> RndT m ()+replaceSeedM s = RndT $ state $ replaceSeedM s+  where+  replaceSeedM newState (RndStateListParallel _) = ((),RndStateListParallel newState)+  replaceSeedM newState (RndStateListSequencial _) = ((),RndStateListSequencial newState)  addSeedM :: Monad m => RndStatePrimitive -> RndT m () addSeedM s = RndT $ state $ addSeedM s
+ Test/Tests.hs view
@@ -0,0 +1,16 @@+import Crypto.RandomMonad (runRndT, getRandomM, RndStateList(RndStateListSequencial, RndStateListParallel), getRandomByteStringM)++import Control.Monad.ST (runST)+import Test.QuickCheck+import Data.BitString as BiS+import Data.ByteString.Lazy.Char8 as LC8+import System.Exit (exitWith, ExitCode(ExitSuccess, ExitFailure))++prop_parallelEquals1 = do+  let lists = [BiS.bitStringLazy $ LC8.pack $ Prelude.concat $ Prelude.repeat "Hej, jag loopar här",+               BiS.bitStringLazy $ LC8.pack $ Prelude.concat $ Prelude.repeat "Hej, jag loopar också här"]+      (first, _) = runST $ runRndT (RndStateListSequencial lists) $ getRandomByteStringM 9001+      (second, _) = runST $ runRndT (RndStateListParallel lists) $ getRandomByteStringM 9001+   in first == second++main = exitWith $ if prop_parallelEquals1 then ExitSuccess else ExitFailure 1