-- #!/bin/env runhugs +l -- -*- literate-haskell -*- -- \begin{code} -- $Id: qcheck_Aufgabe8.hs,v 1.2 2004/01/07 08:49:19 fp010 Exp $ module Main(main) where import qualified Aufgabe8 as A8 import List import Monad import QuickCheck -- http://www.math.chalmers.se/~rjmh/QuickCheck/QuickCheck.hs import Random validMatrix :: [[a]] -> Bool validMatrix [] = False validMatrix [[]] = False validMatrix (x:xs) = let l = length x in all (l==) (map length xs) dim m = (length m,length (head m)) genMatrix :: Gen [[Int]] genMatrix = sized $ \s -> do s2 <- choose (1,1 + (s*2)) let m = clip (1,12) s n = clip (1,12) s2 in sequence (rep n (sequence (rep m arbitrary))) where rep = replicate clip (l,h) = max l . min h -- t = do { g <- newStdGen; print $ generate 5 g genMatrix } prop_genMatrix = forAll genMatrix $ \m -> collect (dim m) $ validMatrix m -- simple property prop_matTransp = forAll genMatrix $ \m -> m == (A8.matTransp (A8.matTransp m)) -- helpers notNull = not . null ---------------------------------------------------------------------------- main :: IO () main = do putStrLn "checking Aufgabe8.hs" -- internal checks -- quickCheck prop_genMatrix quickCheck prop_matTransp putStrLn "DONE!" -- \end{code} ---------------------------------------------------------------------------- -- $Log: qcheck_Aufgabe8.hs,v $ -- Revision 1.2 2004/01/07 08:49:19 fp010 -- fixed stuff -- -- Revision 1.1 2003/12/17 20:11:09 fp010 -- first attempt --