feat: tests for the rendering/parsing
This commit is contained in:
parent
9484d097d4
commit
d012307d19
8 changed files with 104 additions and 45 deletions
20
test/Spec.hs
20
test/Spec.hs
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue