1- from . lis_types import (
2- BlankExpression ,
1+ from email . parser import Parser
2+ from . mytypes import (
33 Expression ,
44 ParserException ,
55 UnexpectedCloseBrace ,
66 BraceNeverClosed ,
77)
8- from .parser import parse
8+ from .parser import parse , s_expr
99
1010from pytest import mark , raises
1111
@@ -65,19 +65,36 @@ def test_parse_mixed_braces(source: str, expected: Expression) -> None:
6565
6666
6767@mark .parametrize (
68- 'source, expected, brace ' ,
68+ 'source, expected, match ' ,
6969 [
70- ('' , BlankExpression , '' ),
70+ ('' , ParserException , 'Empty ' ),
7171 ('{' , BraceNeverClosed , '{' ),
7272 ('([]' , BraceNeverClosed , '(' ),
7373 ('(])' , UnexpectedCloseBrace , ']' ),
7474 ('([)' , UnexpectedCloseBrace , ')' ),
7575 ],
7676)
7777def test_parse_malformed (
78- source : str , expected : ParserException , brace : str
78+ source : str , expected : ParserException , match : str
7979) -> None :
8080 with raises (expected ) as excinfo : # type: ignore
8181 parse (source )
82- if brace :
83- assert repr (brace ) in str (excinfo .value )
82+ assert match in str (excinfo .value )
83+
84+
85+ @mark .parametrize ('obj, expected' , [
86+ (0 , '0' ),
87+ (1 , '1' ),
88+ (False , '#f' ),
89+ (True , '#t' ),
90+ (1.5 , '1.5' ),
91+ ('sin' , 'sin' ),
92+ (['+' , 1 , 2 ], '(+ 1 2)' ),
93+ (['if' , ['<' , 'a' , 'b' ], True , False ], '(if (< a b) #t #f)' ),
94+ ([], '()' ),
95+ (None , 'None' ),
96+ (..., 'Ellipsis' ),
97+ ])
98+ def test_s_expr (obj : object , expected : str ) -> None :
99+ got = s_expr (obj )
100+ assert got == expected
0 commit comments