{- This file is part of smaoin. - - Written in 2015 by fr33domlover . - - ♡ Copying is an act of love. Please copy, reuse and share. - - The author(s) have dedicated all copyright and related and neighboring - rights to this software to the public domain worldwide. This software is - distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along - with this software. If not, see - . -} import Control.Monad (unless) import qualified Data.ByteString as BS import Data.Smaoin import System.Exit import Test.QuickCheck import Test.QuickCheck.Test import Text.Printf main :: IO () main = do results <- mapM (\ (name ,action) -> printf "%-25s: " name >> action) tests unless (all isSuccess results) exitFailure prop_plus :: Bool prop_plus = realnum 5 3 + realnum 2 4 == realnum 25 3 prop_mult :: Bool prop_mult = realnum 5 3 * realnum 2 4 == realnum 1 8 prop_generateUid :: IO Bool prop_generateUid = do (Resource r1) <- generateUid (Resource r2) <- generateUid return $ BS.length r1 == BS.length r2 tests :: [(String, IO Result)] tests = [ ("(+)", quickCheckResult prop_plus) , ("(*)", quickCheckResult prop_mult) , ("generateUid", quickCheckResult =<< prop_generateUid) ]