packages feed

tasty-th-0.1.7: example-literate.lhs

This is an example of using tasty-th with literate haskell files.
First, we need to import the library and enable template haskell:

> {-# LANGUAGE TemplateHaskell #-}
> import Test.Tasty
> import Test.Tasty.TH
> import Test.Tasty.QuickCheck
> import Test.Tasty.HUnit

Now, we can write some quickcheck properties:

> prop_length_append :: [Int] -> [Int] -> Bool
> prop_length_append as bs = length (as ++ bs) == length as + length bs

Or write a HUnit test case:

> case_length_1 :: Assertion
> case_length_1 = 1 @=? length [()]

Properties in comments are not run:

prop_comment :: Assertion
prop_comment = assertFailure "property in comment should not be run"

We can also create test trees:

> test_plus :: [TestTree]
> test_plus =
>   [ testCase "3 + 4" (7 @=? (3 + 4))
>     --  ...
>   ]

We only need a main now that collects all our tests:

> main :: IO ()
> main = $(defaultMainGenerator)