24 lines
921 B
Haskell
24 lines
921 B
Haskell
{-# 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 = do
|
|
quickCheckGood <- runQuickCheck
|
|
|
|
if quickCheckGood then exitSuccess else exitFailure
|