testParseProc :: Test
testParseProc = TestList
  [ testEq "Parse proc expression"
           (ProcExpr ["x"] (VarExpr "x"))
           "proc (x) x"
  , testEq "Parse call expression"
           (CallExpr
             (ProcExpr
               ["f"]
               (CallExpr (VarExpr "f") [CallExpr (VarExpr "f") [constNum 77]]))
             [ProcExpr ["x"] (BinOpExpr Sub (VarExpr "x") (constNum 11))])
           "(proc (f) (f (f 77)) proc (x) -(x,11))"
  ]
testParseProc :: Test
testParseProc = TestList
  [ testEq "Parse proc expression"
           (ProcExpr ["x"] (VarExpr "x"))
           "proc (x) x"
  , testEq "Parse call expression"
           (CallExpr
             (ProcExpr
               ["f"]
               (CallExpr (VarExpr "f") [CallExpr (VarExpr "f") [constNum 77]]))
             [ProcExpr ["x"] (BinOpExpr Sub (VarExpr "x") (constNum 11))])
           "(proc (f) (f (f 77)) proc (x) -(x,11))"
  ]
testParseProc = TestList
  [ testEq "Parse proc expression"
           (ProcExpr ["x"] (VarExpr "x"))
           "proc (x) x"
  , testEq "Parse call expression"
           (CallExpr
             (ProcExpr
               ["f"]
               (CallExpr (VarExpr "f") [CallExpr (VarExpr "f") [constNum 77]]))
             [ProcExpr ["x"] (BinOpExpr Sub (VarExpr "x") (constNum 11))])
           "(proc (f) (f (f 77)) proc (x) -(x,11))"
  ]