-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestConversion.hs
41 lines (32 loc) · 907 Bytes
/
TestConversion.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module ConversionTests where
import Church
import Turing
import Conversion
import Test.HUnit
char :: Char -> Term
char = el ['a'..'z']
string :: String -> Term
string = els ['a'..'z']
test_el :: Test
test_el = char 'a' ~?=
(lam "'a'" $ lam "'b'" $ lam "'c'" $ lam "'d'" $ lam "_" $
var "'a'")
test_els :: Test
test_els =
string "acd" ~?=
(lam "'a'" $ lam "'b'" $ lam "'c'" $ lam "'d'" $ lam "_" $ var "'a'" <->
(lam "'a'" $ lam "'b'" $ lam "'c'" $ lam "'d'" $ lam "_" $ var "'c'" <->
(lam "'a'" $ lam "'b'" $ lam "'c'" $ lam "'d'" $ lam "_" $ var "'d'" <->
(lam "'a'" $ lam "'b'" $ lam "'c'" $ lam "'d'" $ lam "_" $ var "_"))))
test_cons :: Test
test_cons = TestList [
nf (cons abc <-> char 'a' <-> string "bc") ~?= string "abc"
]
main :: IO ()
main = do
_ <- runTestTT $ TestList [
test_convTape,
test_convSym,
test_cons
]
return ()