From bf52d2c2db6ee07df73b99524eb02a2da99a936b Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 15 Dec 2018 20:19:06 +0000 Subject: Fix documentation --- src/Test/VeriFuzz/Graph/Random.hs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/Test/VeriFuzz/Graph/Random.hs') 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) -- cgit