diff options
author | Yann Herklotz <git@ymhg.org> | 2019-05-09 23:18:20 +0100 |
---|---|---|
committer | Yann Herklotz <git@ymhg.org> | 2019-05-09 23:18:20 +0100 |
commit | 06c61e705d952679a6200e7d18d2463723fe5878 (patch) | |
tree | d7e7c5c54ef792de2f2f5dfcacdc93d161c44b77 /test/Parser.hs | |
parent | 77702d5492ba19b6e3e0dda9e9460a8bb67a8e3f (diff) | |
download | verismith-06c61e705d952679a6200e7d18d2463723fe5878.tar.gz verismith-06c61e705d952679a6200e7d18d2463723fe5878.zip |
Add parser and reducer tests
Diffstat (limited to 'test/Parser.hs')
-rw-r--r-- | test/Parser.hs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/Parser.hs b/test/Parser.hs new file mode 100644 index 0000000..89ab1cc --- /dev/null +++ b/test/Parser.hs @@ -0,0 +1,56 @@ +{-| +Module : Parser +Description : Test the parser. +Copyright : (c) 2019, Yann Herklotz Grave +License : GPL-3 +Maintainer : ymherklotz [at] gmail [dot] com +Stability : experimental +Portability : POSIX + +Test the parser. +-} + +module Parser + ( parserTests + ) +where + +import Data.Either (either, isRight) +import Hedgehog (Gen, Property, (===)) +import qualified Hedgehog as Hog +import qualified Hedgehog.Gen as Hog +import Test.Tasty +import Test.Tasty.Hedgehog +import Text.Parsec +import VeriFuzz +import VeriFuzz.Verilog.Lex +import VeriFuzz.Verilog.Parser + +randomMod' :: Gen ModDecl +randomMod' = Hog.resize 20 (randomMod 3 10) + +parserInput :: Property +parserInput = Hog.property $ do + v <- Hog.forAll randomMod' + Hog.assert . isRight $ parse parseModDecl + "input_test.v" + (alexScanTokens $ str v) + where str = show . GenVerilog + +parserIdempotent :: Property +parserIdempotent = Hog.property $ do + v <- Hog.forAll randomMod' + let sv = vshow v + p sv === (p . p) sv + where + vshow = show . GenVerilog + p sv = + either (\x -> show x <> "\n" <> sv) vshow + . parse parseModDecl "idempotent_test.v" + $ alexScanTokens sv + +parserTests :: TestTree +parserTests = testGroup "Parser tests" + [ testProperty "Input" parserInput + , testProperty "Idempotence" parserIdempotent + ] |