From 96d9932a71facce2b31c78fa00fe1adc35169ecb Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 29 Dec 2018 02:31:33 +0100 Subject: Make generation more controlled --- app/Main.hs | 12 ++++++------ src/Test/VeriFuzz/Verilog/AST.hs | 6 ++++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index 321b536..de3f870 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -12,12 +12,12 @@ instance Gviz.Labellable Gate where toLabelValue gate = Gviz.StrLabel . T.pack $ show gate main :: IO () ---main = sample (arbitrary :: Gen (Circuit Input)) + --main = sample (arbitrary :: Gen (Circuit Input)) main = do - --gr <- genRandomDAG 100 :: IO (G.Gr Gate ()) --- _ <- runGraphviz (graphToDot quickParams $ emap (const "") gr) Png "output.png", --- T.putStrLn $ generate gr - g <- QC.generate (QC.arbitrary :: QC.Gen VerilogSrc) - --render . genVerilogSrc . addTestBench . nestUpTo 20 . generateAST $ Circuit gr + --gr <- genRandomDAG 100 :: IO (G.Gr Gate ()) + -- _ <- runGraphviz (graphToDot quickParams $ emap (const "") gr) Png "output.png", + -- T.putStrLn $ generate gr + g <- QC.generate (QC.resize 5 (QC.arbitrary :: QC.Gen VerilogSrc)) + --render . genVerilogSrc . addTestBench . nestUpTo 20 . generateAST $ Circuit gr render . genVerilogSrc . addTestBench $ g diff --git a/src/Test/VeriFuzz/Verilog/AST.hs b/src/Test/VeriFuzz/Verilog/AST.hs index f0178cf..4c3649d 100644 --- a/src/Test/VeriFuzz/Verilog/AST.hs +++ b/src/Test/VeriFuzz/Verilog/AST.hs @@ -15,6 +15,7 @@ Defines the types to build a Verilog AST. module Test.VeriFuzz.Verilog.AST where import Control.Lens +import Control.Monad (replicateM) import qualified Data.Graph.Inductive as G import Data.String import Data.Text (Text) @@ -257,8 +258,9 @@ instance QC.Arbitrary Text where arbitrary = T.pack <$> QC.arbitrary instance QC.Arbitrary Identifier where - arbitrary = Identifier . T.pack <$> - (QC.shuffle (['a'..'z'] <> ['A'..'Z']) >>= QC.sublistOf) + arbitrary = do + l <- QC.choose (2, 10) + Identifier . T.pack <$> replicateM l (QC.elements ['a'..'z']) instance QC.Arbitrary Number where arbitrary = Number <$> QC.suchThat QC.arbitrary (>0) <*> QC.arbitrary -- cgit