lazyset-0.1.0.0: LazySetTest.hs
import Test.HUnit
import System.Exit
import Data.Set.Lazy
tests = TestList [basic, fizzbuzztest, infinity]
---- BASIC -----
basic = TestList [noZero, oneToTen, noEleven]
where
toTenList = [1..10]
toTenSet = fromList toTenList
noZero = TestCase $ assertBool "Zero not in there" $not (member 0 toTenSet)
oneToTen = TestCase $ assertBool "1 to 10 present in set." $ all (\i -> member i toTenSet) toTenList
noEleven = TestCase $ assertBool "11 not in there" $not (member 11 toTenSet)
----- INFINITY----
evenNumberSet = fromList $ filter even [1..]
infinity = TestList [
TestCase ( assertBool "Even numbers are in there "
(all (\i -> member i evenNumberSet) [2,4,6,100,10^4])),
TestCase ( assertBool "Odd numbers are in there "
(all (\i ->not $ member i evenNumberSet) [1,3,5,99,10^4+1]))
]
--- FizzBuzz ---
isFizzBuzz x = x `mod` 7 == 0 || '7' `elem` show x
fizzbuzzes = fromList $ filter isFizzBuzz [1..]
fizzbuzztest = TestList[
TestCase ( assertBool "fizzes"
(all (\i -> member i fizzbuzzes) [7,14,21,70,71,77])),
TestCase ( assertBool "does not fizz"
(all (\i -> not $ member i fizzbuzzes) [1,2,3,8,9,10,16,22,100])) ]
main = do
result <- runTestTT tests
let allpassed = (errors result + failures result) == 0
if allpassed then exitSuccess else exitFailure