packages feed

haskell-tor-0.1.2: test/Test/Standard.hs

{-# LANGUAGE CPP #-}
module Test.Standard where

#if !MIN_VERSION_base(4,8,0)
import Control.Applicative
#endif
import Control.Monad
import Crypto.Random
import Data.Binary.Get
import Data.Binary.Put
import Data.ByteArray(pack)
import Data.ByteString(ByteString)
import qualified Data.ByteString.Lazy as BS
import Test.QuickCheck

arbitraryRNG :: Gen ChaChaDRG
arbitraryRNG = drgNew

arbitraryBS :: Int -> Gen ByteString
arbitraryBS x = pack <$> replicateM x arbitrary

serialProp :: Eq a => Get a -> (a -> Put) -> a -> Bool
serialProp getter putter x =
  let bstr = runPut (putter x)
      y    = runGet getter bstr
  in x == y

instance MonadRandom Gen where
  getRandomBytes x = pack <$> replicateM x arbitrary