% Testing the `cflp` Package % Sebastian Fischer (sebf@informatik.uni-kiel.de) This module defines auxiliary functions for the test suite. > {-# LANGUAGE RankNTypes #-} > > module CFLP.Tests where > > import CFLP > import CFLP.Strategies > > import Test.HUnit We use HUnit for testing because we need to test IO actions and want to use errors when testing laziness. > assertResults :: (Generic a, Show a, Eq a) > => Computation a -> [a] -> Assertion > assertResults = assertResultsLimit Nothing > > assertResultsN :: (Generic a, Show a, Eq a) > => Int -> Computation a -> [a] -> Assertion > assertResultsN = assertResultsLimit . Just > > assertResultsLimit :: (Generic a, Show a, Eq a) > => Maybe Int -> Computation a -> [a] -> Assertion > assertResultsLimit limit op expected = do > actual <- eval (limDFS 100) op > maybe id take limit actual @?= expected We provide auxiliary assertions `assertResults...` that compute (a possibly limited number of) non-deterministic results of a functional logic computation in depth-first order and compare them with a list of given expected results.