tasty-kat
=========
[](https://travis-ci.org/vincenthz/tasty-kat)
[](http://en.wikipedia.org/wiki/BSD_licenses)
[](http://haskell.org)
[Tasty-kat](http://hackage.haskell.org/package/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:
```ini
[2 digits addition]
a = 10
b = 20
r = 30
a = 11
b = 21
r = 32
```
This is somewhat similar to the [tasty-golden](http://hackage.haskell.org/package/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](http://hackage.haskell.org/package/tasty-kat)
```haskell
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:
```shell
add
1: OK
2: OK
sub
1: OK
add
1: OK
base64
1: OK
2: OK
```
The grouped output with 'testKatGrouped' looks like:
```shell
add: OK
2 tests succeed
sub: OK
1 tests succeed
add: OK
1 tests succeed
base64: OK
2 tests succeed
```