11import Test.Tasty (defaultMain , testGroup )
22import Test.Tasty.HUnit (testCase , (@?=) )
33
4- import Data.Functor.Identity (Identity )
4+ import Data.Functor.Identity (Identity , runIdentity )
55import Lapse (evalLapseM , list , numList , runExpression' )
66import Lapse.Operators
77import Lapse.Types (Func , LapseM , Value (.. ))
@@ -18,57 +18,61 @@ showTests =
1818 , (Pair (Number 5 ) Nil , " (5)" )
1919 ]
2020
21- opTests :: [(LapseM Identity PValue , Identity PValue )]
21+ opTests :: [(LapseM Identity PValue , PValue )]
2222opTests =
23- [ (ladd Nil , pure $ Number 0 )
24- , (lmul Nil , pure $ Number 1 )
25- , (ladd $ numList [1 , 2 , 3 ], pure $ Number 6 )
26- , (lsub $ numList [5 , 3 ], pure $ Number 2 )
27- , (lmul $ numList [1 , 2 , 3 , 4 ], pure $ Number 24 )
28- , (ldiv $ numList [55 , 11 ], pure $ Number 5 )
29- , (lgrt $ numList [7 , 2 ], pure $ Number 1 )
30- , (lgrt $ numList [2 , 7 ], pure Nil )
31- , (lgrt $ numList [5 , 5 ], pure Nil )
32- , (llss $ numList [7 , 2 ], pure Nil )
33- , (llss $ numList [2 , 7 ], pure $ Number 1 )
34- , (llss $ numList [5 , 5 ], pure Nil )
35- , (leql $ numList [7 , 2 ], pure Nil )
36- , (leql $ numList [2 , 7 ], pure Nil )
37- , (leql $ numList [5 , 5 ], pure $ Number 1 )
23+ [ (ladd Nil , Number 0 )
24+ , (lmul Nil , Number 1 )
25+ , (ladd $ numList [1 , 2 , 3 ], Number 6 )
26+ , (lsub $ numList [5 , 3 ], Number 2 )
27+ , (lmul $ numList [1 , 2 , 3 , 4 ], Number 24 )
28+ , (ldiv $ numList [55 , 11 ], Number 5 )
29+ , (lgrt $ numList [7 , 2 ], Number 1 )
30+ , (lgrt $ numList [2 , 7 ], Nil )
31+ , (lgrt $ numList [5 , 5 ], Nil )
32+ , (llss $ numList [7 , 2 ], Nil )
33+ , (llss $ numList [2 , 7 ], Number 1 )
34+ , (llss $ numList [5 , 5 ], Nil )
35+ , (leql $ numList [7 , 2 ], Nil )
36+ , (leql $ numList [2 , 7 ], Nil )
37+ , (leql $ numList [5 , 5 ], Number 1 )
3838 ]
3939
40- condTests :: [(PValue , Identity PValue )]
40+ condTests :: [(PValue , PValue )]
4141condTests =
42- [ (Nil , pure Nil )
43- , (list [list [Number 1 , Number 2 ], list [Number 2 , Number 3 ], list [Number 3 , Number 4 ]], pure $ Number 2 )
44- , (list [list [Nil , Number 2 ], list [Number 2 , Number 3 ], list [Number 3 , Number 4 ]], pure $ Number 3 )
45- , (list [list [Nil , Number 2 ], list [Nil , Number 3 ], list [Number 3 , Number 4 ]], pure $ Number 4 )
46- , (list [list [Nil , Number 2 ], list [Nil , Number 3 ], list [Nil , Number 4 ]], pure Nil )
42+ [ (Nil , Nil )
43+ , (list [list [Number 1 , Number 2 ], list [Number 2 , Number 3 ], list [Number 3 , Number 4 ]], Number 2 )
44+ , (list [list [Nil , Number 2 ], list [Number 2 , Number 3 ], list [Number 3 , Number 4 ]], Number 3 )
45+ , (list [list [Nil , Number 2 ], list [Nil , Number 3 ], list [Number 3 , Number 4 ]], Number 4 )
46+ , (list [list [Nil , Number 2 ], list [Nil , Number 3 ], list [Nil , Number 4 ]], Nil )
4747 ]
4848
49- exprTests :: [(String , Identity String )]
49+ exprTests :: [(String , String )]
5050exprTests =
51- [ (" (+ 1 2)" , pure " [3]" )
52- , (" (let ((a 1)) a)" , pure " [1]" )
53- , (" (let ((a 1) (b 2) (c 3)) '(,a ,b ,c ,(+ a b c)))" , pure " [(1 2 3 6)]" )
54- , (" (let ((a \" stra\" ) (b \" bstr\" )) (concat a b))" , pure " [\" strabstr\" ]" )
51+ [ (" (+ 1 2)" , " [3]" )
52+ , (" (let ((a 1)) a)" , " [1]" )
53+ , (" (let ((a 1) (b 2) (c 3)) '(,a ,b ,c ,(+ a b c)))" , " [(1 2 3 6)]" )
54+ , (" (let ((a \" stra\" ) (b \" bstr\" )) (concat a b))" , " [\" strabstr\" ]" )
5555 ]
5656
5757main :: IO ()
5858main =
5959 defaultMain $
6060 testGroup
6161 " all"
62- [ testGroup
63- " show"
64- $ map (\ (t, x) -> testCase " test" $ show t @?= x) showTests
62+ [ testGroup " show" [testCase x $ show t @?= x | (t, x) <- showTests]
6563 , testGroup
6664 " operators"
67- $ map (\ (t, x) -> testCase " test" $ evalLapseM t @?= x) opTests
65+ [ testCase (show x) $ runIdentity (evalLapseM t) @?= x
66+ | (t, x) <- opTests
67+ ]
6868 , testGroup
6969 " cond"
70- $ map (\ (t, x) -> testCase " test" $ (evalLapseM . cond) t @?= x) condTests
70+ [ testCase (show x) $ (runIdentity . evalLapseM . cond) t @?= x
71+ | (t, x) <- condTests
72+ ]
7173 , testGroup
7274 " expression tests"
73- $ map (\ (t, x) -> testCase " test" $ runExpression' t @?= x) exprTests
75+ [ testCase x $ runIdentity (runExpression' t) @?= x
76+ | (t, x) <- exprTests
77+ ]
7478 ]
0 commit comments