1
- from . lis_types import (
2
- BlankExpression ,
1
+ from email . parser import Parser
2
+ from . mytypes import (
3
3
Expression ,
4
4
ParserException ,
5
5
UnexpectedCloseBrace ,
6
6
BraceNeverClosed ,
7
7
)
8
- from .parser import parse
8
+ from .parser import parse , s_expr
9
9
10
10
from pytest import mark , raises
11
11
@@ -65,19 +65,36 @@ def test_parse_mixed_braces(source: str, expected: Expression) -> None:
65
65
66
66
67
67
@mark .parametrize (
68
- 'source, expected, brace ' ,
68
+ 'source, expected, match ' ,
69
69
[
70
- ('' , BlankExpression , '' ),
70
+ ('' , ParserException , 'Empty ' ),
71
71
('{' , BraceNeverClosed , '{' ),
72
72
('([]' , BraceNeverClosed , '(' ),
73
73
('(])' , UnexpectedCloseBrace , ']' ),
74
74
('([)' , UnexpectedCloseBrace , ')' ),
75
75
],
76
76
)
77
77
def test_parse_malformed (
78
- source : str , expected : ParserException , brace : str
78
+ source : str , expected : ParserException , match : str
79
79
) -> None :
80
80
with raises (expected ) as excinfo : # type: ignore
81
81
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