feat: QuickCheck testing

This commit is contained in:
vegowotenks 2025-06-19 21:51:34 +02:00
parent cbccc8253b
commit 95f86c8660
5 changed files with 101 additions and 2 deletions

View file

@ -1,2 +1,24 @@
{-# LANGUAGE TemplateHaskell #-}
import Test.QuickCheck.All (quickCheckAll)
import System.Exit (exitFailure, exitSuccess)
import qualified Data.Either as Either
import qualified Language.Brainfuck as Brainfuck
import qualified Arbitrary.ValidBrainfuckProgram as ValidBrainfuckProgram
import qualified Arbitrary.InvalidBrainfuckProgram as InValidBrainfuckProgram
prop_acceptValidPrograms :: ValidBrainfuckProgram.ValidBrainfuckProgram -> Bool
prop_acceptValidPrograms = Either.isRight . Brainfuck.parse . ValidBrainfuckProgram.get
prop_rejectInvalidPrograms :: InValidBrainfuckProgram.InvalidBrainfuckProgram -> Bool
prop_rejectInvalidPrograms = Either.isLeft . Brainfuck.parse . InValidBrainfuckProgram.get
return [] -- template haskell guard
runQuickCheck :: IO Bool
runQuickCheck = $quickCheckAll
main :: IO ()
main = putStrLn "Test suite not yet implemented"
main = do
quickCheckGood <- runQuickCheck
if quickCheckGood then exitSuccess else exitFailure