Description
Write your tests in comments.
Description
With some TemplateHaskell magic, you can write your tests in your comments directly above a function declaration with a minimalistic syntax.
README.md
testCom
How to use it
Write your tests
Above a function to test, write your tests like this:
--[1 2] [3]
--O[add 1 2] [3]
--S[x@Int y@Int] [x@ + y@] [10]
add :: Int -> Int -> Int
add x y = x+y
Syntax
- Without any prefix: [args For The Function] [ExpectedResult]
- With a O (Override) prefix: [custom Function To Test] [ExpectedResult]
- With a S (Specification) prefix: [args Involving variable@Type] [ExpectedResult Maybe Involving variable@] [numberOfTestToDo] (for now only basic types are supported: Int Char and Bool). variable@Type MUST be surrounded by spaces.
Run them
For example
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import System.Exit
$(makeAllTestsHere)
$(makeAllTests "some/Path/File.hs")
-- Tests
main :: IO ()
main = do
let (str,res) = _TEST_path -- Here, path=directory_actualfile. If your file is put in tests/Main.hs, then path=tests_Main (without the ".hs")
let (str',res') = _TEST_some_Path_File
putStrLn str
putStrLn str'
if res && res' then exitSuccess else exitFailure