bf-optimize/test/Spec.hs

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