parserPrettyTests :: TestTree
parserPrettyTests = testGroup "Parser and Pretty Printer Tests"
                              [
                                testGroup "Literals" [ testCase "Char:" $ genSyntaxPrettyTest (LitChar 'c') literalP
                                                     , testCase "String:" $ genSyntaxPrettyTest (LitString "abc") literalP
                                                     , testGroup "Numbers:"
                                                                 [ testCase "Int positive:" $ genSyntaxPrettyTest (LitInt 23) literalP
                                                                 , testCase "Int negative:" $ genSyntaxPrettyTest (LitInt (-23)) literalP
                                                                 , testCase "Float:" $ genSyntaxPrettyTest (LitFloat (23.45)) literalP  
                                                                 ]
                                                     ]
                              , testGroup "Expressions" [ testCase "Var:" $ genSyntaxPrettyTest (EVar (Name "xs")) atomP
                                                        , testCase "Con:" $ genSyntaxPrettyTest (ECon (Name "Cons")) atomP
                                                        , testCase "Lit:" $ genSyntaxPrettyTest (ELit (LitFloat (3.14))) atomP                                                            
                                                        , testCase "Lam:" $ genSyntaxPrettyTest (ELam (Name "x") (EVar (Name "x"))) lamP
                                                       -- , testCase "If:" $ genSyntaxPrettyTest (EIf (ECon (Name "True")) (EVar (Name "xs")) (EVar (Name "x"))) atomP  
                                                        ]
                              ]
parserPrettyTests :: TestTree
parserPrettyTests = testGroup "Parser and Pretty Printer Tests"
                              [
                                testGroup "Literals" [ testCase "Char:" $ genSyntaxPrettyTest (LitChar 'c') literalP
                                                     , testCase "String:" $ genSyntaxPrettyTest (LitString "abc") literalP
                                                     , testGroup "Numbers:"
                                                                 [ testCase "Int positive:" $ genSyntaxPrettyTest (LitInt 23) literalP
                                                                 , testCase "Int negative:" $ genSyntaxPrettyTest (LitInt (-23)) literalP
                                                                 , testCase "Float:" $ genSyntaxPrettyTest (LitFloat (23.45)) literalP  
                                                                 ]
                                                     ]
                              , testGroup "Expressions" [ testCase "Var:" $ genSyntaxPrettyTest (EVar (Name "xs")) atomP
                                                        , testCase "Con:" $ genSyntaxPrettyTest (ECon (Name "Cons")) atomP
                                                        , testCase "Lit:" $ genSyntaxPrettyTest (ELit (LitFloat (3.14))) atomP                                                            
                                                        , testCase "Lam:" $ genSyntaxPrettyTest (ELam (Name "x") (EVar (Name "x"))) lamP
                                                       -- , testCase "If:" $ genSyntaxPrettyTest (EIf (ECon (Name "True")) (EVar (Name "xs")) (EVar (Name "x"))) atomP  
                                                        ]
                              ]
parserPrettyTests = testGroup "Parser and Pretty Printer Tests"
                              [
                                testGroup "Literals" [ testCase "Char:" $ genSyntaxPrettyTest (LitChar 'c') literalP
                                                     , testCase "String:" $ genSyntaxPrettyTest (LitString "abc") literalP
                                                     , testGroup "Numbers:"
                                                                 [ testCase "Int positive:" $ genSyntaxPrettyTest (LitInt 23) literalP
                                                                 , testCase "Int negative:" $ genSyntaxPrettyTest (LitInt (-23)) literalP
                                                                 , testCase "Float:" $ genSyntaxPrettyTest (LitFloat (23.45)) literalP  
                                                                 ]
                                                     ]
                              , testGroup "Expressions" [ testCase "Var:" $ genSyntaxPrettyTest (EVar (Name "xs")) atomP
                                                        , testCase "Con:" $ genSyntaxPrettyTest (ECon (Name "Cons")) atomP
                                                        , testCase "Lit:" $ genSyntaxPrettyTest (ELit (LitFloat (3.14))) atomP                                                            
                                                        , testCase "Lam:" $ genSyntaxPrettyTest (ELam (Name "x") (EVar (Name "x"))) lamP
                                                       -- , testCase "If:" $ genSyntaxPrettyTest (EIf (ECon (Name "True")) (EVar (Name "xs")) (EVar (Name "x"))) atomP  
                                                        ]
                              ]