Tasty-kat provides support for KAT (Known Answer Tests) testing. KAT files provides input and output tests for some functions for example, for testing the following function:
r == a + b
A KAT file could be:
[2 digits addition] a = 10 b = 20 r = 30 a = 11 b = 21 r = 32
This is somewhat similar to the tasty-golden package, but instead of generating files and comparing output file to a golden file, tasty-kat loads input and output in test vectors and run specific function on it.
Documentation: tasty-kat on hackage
import Test.Tasty import Test.Tasty.KAT main = do kat <- testKatLoad "path/to/KAT" katLoaderSimple defaultMain [ testKatDetailed "kat-name" kat testKat ] where testAddition group kvs = case sequence $ map (flip lookup kvs) ["a","b","r"] of Nothing -> error "invalid vector" Just [a,b,r] -> let a = read as :: Int b = read bs :: Int r = read rs :: Int in return (a + b == r)
The detail output with 'testKatDetailed' looks like:
add 1: OK 2: OK sub 1: OK add 1: OK base64 1: OK 2: OK
The grouped output with 'testKatGrouped' looks like:
add: OK 2 tests succeed sub: OK 1 tests succeed add: OK 1 tests succeed base64: OK 2 tests succeed
*Note that all licence references and agreements mentioned in the tasty-kat README section above are relevant to that project's source code only.