diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-15 20:19:06 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-15 20:19:06 +0000 |
commit | bf52d2c2db6ee07df73b99524eb02a2da99a936b (patch) | |
tree | 4bb2f3f203e45782163adceed896f3d0cf62693d /src/Test/VeriFuzz/Graph/Random.hs | |
parent | 1054b81ed2d68c124f40e9c0df754f9db1c5cb27 (diff) | |
download | verismith-bf52d2c2db6ee07df73b99524eb02a2da99a936b.tar.gz verismith-bf52d2c2db6ee07df73b99524eb02a2da99a936b.zip |
Fix documentation
Diffstat (limited to 'src/Test/VeriFuzz/Graph/Random.hs')
-rw-r--r-- | src/Test/VeriFuzz/Graph/Random.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Test/VeriFuzz/Graph/Random.hs b/src/Test/VeriFuzz/Graph/Random.hs index e87036c..a31e374 100644 --- a/src/Test/VeriFuzz/Graph/Random.hs +++ b/src/Test/VeriFuzz/Graph/Random.hs @@ -1,9 +1,23 @@ +{-| +Module : Test.VeriFuzz.Graph.Random +Description : Random generation for DAG +Copyright : (c) Yann Herklotz Grave 2018 +License : GPL-3 +Maintainer : ymherklotz@gmail.com +Stability : experimental +Portability : POSIX + +Define the random generation for the directed acyclic graph. +-} + module Test.VeriFuzz.Graph.Random where import Data.Graph.Inductive (Graph, LEdge, mkGraph) import Test.QuickCheck (Arbitrary, Gen, arbitrary, generate, infiniteListOf, resize, suchThat) +-- | Gen instance to create an arbitrary edge, where the edges are limited by +-- `n` that is passed to it. arbitraryEdge :: (Arbitrary e) => Int -> Gen (LEdge e) arbitraryEdge n = do x <- with $ \a -> a < n && a > 0 && a /= n-1 @@ -13,6 +27,7 @@ arbitraryEdge n = do where with = suchThat . resize n $ arbitrary +-- | Gen instance for a random acyclic DAG. randomDAG :: (Arbitrary l, Arbitrary e, Graph gr) => Int -- ^ The number of nodes -> Gen (gr l e) -- ^ The generated graph. It uses Arbitrary to @@ -24,6 +39,7 @@ randomDAG n = do where nodes l = zip [0..n] $ take n l +-- | Generate a random acyclic DAG with an IO instance. genRandomDAG :: (Arbitrary l, Arbitrary e, Graph gr) => Int -> IO (gr l e) |