Ignore:
Timestamp:
May 3, 2014, 5:01:55 PM (11 years ago)
Author:
gobi
Message:

expression

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sizechecking/branches/macs/tests/ExpTest.hs

    r22 r23  
    55import Lambda 
    66import Exp 
    7 import Ops 
    87import Prelude ( ($), Int, (==), return, sequence, (>>=), and, (.), IO, Bool ) 
     8import qualified Control.Monad 
    99 
    1010testNil :: Exp e => e [a] 
    1111testNil = nil 
    1212 
    13 addOne :: Exp e => e [Int] 
     13testAddOne :: Exp e => e ([Int] -> [Int]) 
     14testAddOne = lam $ \l -> cons (const 1) l 
     15 
     16testHead :: Exp e => e ([a] -> a) 
     17testHead = lam $ \l -> match l undefined $ \x _ -> x 
     18 
     19testTail :: Exp e => e ([a] -> [a]) 
     20testTail = lam $ \l -> match l undefined $ \_ xs -> xs 
     21 
     22testConcat :: Exp e => e ([a] -> [a] -> [a]) 
     23testConcat = lam $ \l1 -> lam $ \l2 -> match l1 l2 
     24    $ \x xs -> cons x (testConcat `app` xs `app` l2) 
     25 
     26testEvalNil :: IO Bool 
     27testEvalNil = return $ ([]::[Int]) == eval testNil 
     28 
     29testEvalAddOne :: IO Bool 
     30testEvalAddOne = return $ [1::Int] == (eval $ testAddOne `app` nil) 
     31 
     32testEvalTail :: IO Bool 
     33testEvalTail = return $ [2..6::Int] == eval testTail [1..6] 
     34 
     35testEvalConcat :: IO Bool 
     36testEvalConcat = return $ [1..6::Int] == eval testConcat [1,2,3] [4,5,6]  
     37 
     38tests :: [IO Bool] 
     39 
     40tests = [ testEvalNil 
     41        , testEvalAddOne 
     42        , testEvalTail 
     43        , testEvalConcat 
     44        ] 
     45 
     46runTests :: IO Bool 
     47runTests = Control.Monad.liftM and $ sequence tests 
Note: See TracChangeset for help on using the changeset viewer.