Changeset 23 for sizechecking/branches/macs/tests/ExpTest.hs
- Timestamp:
- May 3, 2014, 5:01:55 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sizechecking/branches/macs/tests/ExpTest.hs
r22 r23 5 5 import Lambda 6 6 import Exp 7 import Ops8 7 import Prelude ( ($), Int, (==), return, sequence, (>>=), and, (.), IO, Bool ) 8 import qualified Control.Monad 9 9 10 10 testNil :: Exp e => e [a] 11 11 testNil = nil 12 12 13 addOne :: Exp e => e [Int] 13 testAddOne :: Exp e => e ([Int] -> [Int]) 14 testAddOne = lam $ \l -> cons (const 1) l 15 16 testHead :: Exp e => e ([a] -> a) 17 testHead = lam $ \l -> match l undefined $ \x _ -> x 18 19 testTail :: Exp e => e ([a] -> [a]) 20 testTail = lam $ \l -> match l undefined $ \_ xs -> xs 21 22 testConcat :: Exp e => e ([a] -> [a] -> [a]) 23 testConcat = lam $ \l1 -> lam $ \l2 -> match l1 l2 24 $ \x xs -> cons x (testConcat `app` xs `app` l2) 25 26 testEvalNil :: IO Bool 27 testEvalNil = return $ ([]::[Int]) == eval testNil 28 29 testEvalAddOne :: IO Bool 30 testEvalAddOne = return $ [1::Int] == (eval $ testAddOne `app` nil) 31 32 testEvalTail :: IO Bool 33 testEvalTail = return $ [2..6::Int] == eval testTail [1..6] 34 35 testEvalConcat :: IO Bool 36 testEvalConcat = return $ [1..6::Int] == eval testConcat [1,2,3] [4,5,6] 37 38 tests :: [IO Bool] 39 40 tests = [ testEvalNil 41 , testEvalAddOne 42 , testEvalTail 43 , testEvalConcat 44 ] 45 46 runTests :: IO Bool 47 runTests = Control.Monad.liftM and $ sequence tests
Note: See TracChangeset
for help on using the changeset viewer.