module Test.QuickCheck.Lens where
import Control.Lens
import Test.QuickCheck
import Test.QuickCheck.Exception
import Test.QuickCheck.Random
makePrisms ''Result
pairs :: Iso (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9)
(t0,t1,t2,t3,t4,t5,t6,t7,t8,t9)
((s0,s1,s2,s3,s4),(s5,s6,s7,s8,s9))
((t0,t1,t2,t3,t4),(t5,t6,t7,t8,t9))
pairs = iso (\(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9) -> ((s0,s1,s2,s3,s4),(s5,s6,s7,s8,s9)))
(\((s0,s1,s2,s3,s4),(s5,s6,s7,s8,s9)) -> (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9))
argReplay :: Lens' Args (Maybe (QCGen, Int))
argReplay f x = (\r' -> x { replay = r' }) <$> f (replay x)
argMaxSuccess :: Lens' Args Int
argMaxSuccess f x = (\r' -> x { maxSuccess = r' }) <$> f (maxSuccess x)
argMaxDiscardRatio :: Lens' Args Int
argMaxDiscardRatio f x = (\r' -> x { maxDiscardRatio = r' }) <$> f (maxDiscardRatio x)
argMaxSize :: Lens' Args Int
argMaxSize f x = (\r' -> x { maxSize = r' }) <$> f (maxSize x)
argChatty :: Lens' Args Bool
argChatty f x = (\r' -> x { chatty = r' }) <$> f (chatty x)
type Failure = (Int,
Int,
Int,
Int,
QCGen,
Int,
String,
Maybe AnException,
[(String, Int)],
String)
resNumTests :: Lens' Result Int
resNumTests f x = (\r' -> x { numTests = r' }) <$> f (numTests x)
resLabels :: Lens' Result [(String,Int)]
resLabels f x = (\r' -> x { labels = r' }) <$> f (labels x)
resOutput :: Lens' Result String
resOutput f x = (\r' -> x { output = r' }) <$> f (output x)
resNumShrinks :: Lens' Failure Int
resNumShrinks = pairs . _1 . _2
resNumShrinkTries :: Lens' Failure Int
resNumShrinkTries = pairs . _1 . _3
resNumShrinkFinal :: Lens' Failure Int
resNumShrinkFinal = pairs . _1 . _4
resUsedSeed :: Lens' Failure QCGen
resUsedSeed = pairs . _1 . _5
resUsedSize :: Lens' Failure Int
resUsedSize = pairs . _2 . _1
resReason :: Lens' Failure String
resReason = pairs . _2 . _2
resTheException :: Lens' Failure (Maybe AnException)
resTheException = pairs . _2 . _3