aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Fuzz.hs
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-05-05 17:33:29 +0100
committerYann Herklotz <git@ymhg.org>2019-05-05 17:33:29 +0100
commit1054a0200a728dad5e9de97fc1057612ab8227c2 (patch)
tree1e752469c455787409157fe0ff1bd6948a5f8fbd /src/VeriFuzz/Fuzz.hs
parentb2c44986a84314fa8ee9ead808bfa8cf109c538f (diff)
downloadverismith-1054a0200a728dad5e9de97fc1057612ab8227c2.tar.gz
verismith-1054a0200a728dad5e9de97fc1057612ab8227c2.zip
Format with brittany
Diffstat (limited to 'src/VeriFuzz/Fuzz.hs')
-rw-r--r--src/VeriFuzz/Fuzz.hs60
1 files changed, 40 insertions, 20 deletions
diff --git a/src/VeriFuzz/Fuzz.hs b/src/VeriFuzz/Fuzz.hs
index 4680a03..57928b4 100644
--- a/src/VeriFuzz/Fuzz.hs
+++ b/src/VeriFuzz/Fuzz.hs
@@ -116,7 +116,11 @@ synthesis src = do
liftSh . mkdir_p . fromText $ toText a
pop (fromText $ toText a) $ runSynth a src
-generateSample :: (MonadIO m, MonadSh m) => Maybe Seed -> Gen SourceInfo -> Fuzz m (Seed, SourceInfo)
+generateSample
+ :: (MonadIO m, MonadSh m)
+ => Maybe Seed
+ -> Gen SourceInfo
+ -> Fuzz m (Seed, SourceInfo)
generateSample seed gen = do
logT "Sampling Verilog from generator"
(t, v) <- timeit $ sampleSeed seed gen
@@ -165,13 +169,20 @@ equivalence src = do
fuzz :: MonadFuzz m => Gen SourceInfo -> Config -> Fuzz m FuzzReport
fuzz gen conf = do
(seed', src) <- generateSample seed gen
- liftSh . writefile "config.toml" . encodeConfig $ conf & configProperty . propSeed .~ Just seed'
+ liftSh
+ . writefile "config.toml"
+ . encodeConfig
+ $ conf
+ & configProperty
+ . propSeed
+ .~ Just seed'
synthesis src
equivalence src
return mempty
where seed = conf ^. configProperty . propSeed
-fuzzInDir :: MonadFuzz m => FilePath -> Gen SourceInfo -> Config -> Fuzz m FuzzReport
+fuzzInDir
+ :: MonadFuzz m => FilePath -> Gen SourceInfo -> Config -> Fuzz m FuzzReport
fuzzInDir fp src conf = do
make fp
pop fp $ fuzz src conf
@@ -197,23 +208,32 @@ fuzzMultiple n fp src conf = do
when (isNothing seed) . void . pop x . forM [1 .. n] $ fuzzDir
unless (isNothing seed) . void . pop x $ fuzzDir (1 :: Int)
return mempty
- where fuzzDir n' = fuzzInDir (fromText $ "fuzz_" <> showT n') src conf
- seed = conf ^. configProperty . propSeed
+ where
+ fuzzDir n' = fuzzInDir (fromText $ "fuzz_" <> showT n') src conf
+ seed = conf ^. configProperty . propSeed
sampleSeed :: MonadIO m => Maybe Seed -> Gen a -> m (Seed, a)
sampleSeed s gen =
- liftIO $
- let
- loop n =
- if n <= 0 then
- error "Hedgehog.Gen.sample: too many discards, could not generate a sample"
- else do
- seed <- maybe Hog.random return s
- case runIdentity . runMaybeT . Hog.runTree $ Hog.runGenT 30 seed gen of
- Nothing ->
- loop (n - 1)
- Just x -> do
- liftIO . putStrLn $ "VeriFuzz: Chosen seed was '" <> show seed <> "'"
- pure $ (seed, Hog.nodeValue x)
- in
- loop (100 :: Int)
+ liftIO
+ $ let
+ loop n = if n <= 0
+ then
+ error
+ "Hedgehog.Gen.sample: too many discards, could not generate a sample"
+ else do
+ seed <- maybe Hog.random return s
+ case
+ runIdentity
+ . runMaybeT
+ . Hog.runTree
+ $ Hog.runGenT 30 seed gen
+ of
+ Nothing -> loop (n - 1)
+ Just x -> do
+ liftIO
+ . putStrLn
+ $ "VeriFuzz: Chosen seed was '"
+ <> show seed
+ <> "'"
+ pure $ (seed, Hog.nodeValue x)
+ in loop (100 :: Int)