feat: tests for the rendering/parsing

This commit is contained in:
vegowotenks 2025-06-20 09:26:11 +02:00
parent 9484d097d4
commit d012307d19
8 changed files with 104 additions and 45 deletions

View file

@ -1,17 +1,25 @@
{-# LANGUAGE TemplateHaskell #-}
import Data.Vector (Vector)
import Test.QuickCheck.All (quickCheckAll)
import System.Exit (exitFailure, exitSuccess)
import Language.Brainfuck.Instruction (Instruction)
import qualified Data.Either as Either
import qualified Language.Brainfuck as Brainfuck
import qualified Arbitrary.ValidBrainfuckProgram as ValidBrainfuckProgram
import qualified Arbitrary.InvalidBrainfuckProgram as InValidBrainfuckProgram
import qualified Arbitrary.ValidBrainfuckText as ValidBrainfuckText
import qualified Arbitrary.InvalidBrainfuckText as InValidBrainfuckText
prop_acceptValidPrograms :: ValidBrainfuckProgram.ValidBrainfuckProgram -> Bool
prop_acceptValidPrograms = Either.isRight . Brainfuck.parse . ValidBrainfuckProgram.get
prop_acceptValidTexts :: ValidBrainfuckText.ValidBrainfuckText -> Bool
prop_acceptValidTexts = Either.isRight . Brainfuck.parse . ValidBrainfuckText.get
prop_rejectInvalidPrograms :: InValidBrainfuckProgram.InvalidBrainfuckProgram -> Bool
prop_rejectInvalidPrograms = Either.isLeft . Brainfuck.parse . InValidBrainfuckProgram.get
prop_rejectInvalidTexts :: InValidBrainfuckText.InvalidBrainfuckText -> Bool
prop_rejectInvalidTexts = Either.isLeft . Brainfuck.parse . InValidBrainfuckText.get
prop_renderParseInverse :: Vector Instruction -> Bool
prop_renderParseInverse source = Right source == (Brainfuck.parse . Brainfuck.render $ source)
return [] -- template haskell guard
runQuickCheck :: IO Bool