tasty-kat: Known Answer Tests (KAT) framework for tasty

[ library, mit, tasty-kat ] [ Propose Tags ]

Tests running from simple KATs file (different formats/helper supported)

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.0.1, 0.0.2, 0.0.3
Dependencies base (>=4 && <5), bytestring, tasty [details]
License MIT
Copyright Vincent Hanquez <vincent@snarc.org>
Author Vincent Hanquez <vincent@snarc.org>
Maintainer vincent@snarc.org
Category tasty-kat
Home page https://github.com/vincenthz/tasty-kat
Bug tracker https://github.com/vincenthz/tasty-kat/issues
Source repo head: git clone https://github.com/vincenthz/tasty-kat
Uploaded by VincentHanquez at 2015-01-20T18:22:25Z
Distributions Arch:0.0.3, Debian:0.0.3, Fedora:0.0.3, LTSHaskell:0.0.3, NixOS:0.0.3, Stackage:0.0.3
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 5708 total (34 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2015-01-20 [all 1 reports]

Readme for tasty-kat-0.0.3

[back to package description]


Build Status BSD Haskell

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:

      1:    OK
      2:    OK
      1:    OK
      1:    OK
      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