A verdict is a Boolean pass or fail 'verdict' on a test result; an instance of
the Verdict class evaluates to such a result, but may also contain additional
information about the test.
A collection of verdicts is also a verdict: if all of the results are ``pass'',
the verdict for the collection is pass. Specifically, the collective verdict
is the Boolean conjunction of the individual verdicts. Therefore any foldable
container of verdicts is also a verdict.
\begin{code}
module Test.GenCheck.Base.Verdict ( Verdict(..), SummaryVerdict(..) ) where
import Data.Foldable(Foldable())
class Verdict s where
verdict :: s -> Bool
instance Verdict Bool where
verdict = id
\end{code}
Structures can be evaluated to a boolean if they are foldable and their
elements are generic booleans.
\begin{code}
class Foldable s => SummaryVerdict s where
summaryverdict :: Verdict v => s v -> Bool
\end{code}