Skip to content

Commit d84f2f1

Browse files
refactor(test): Extract test_eof_handling.py
1 parent ad01fea commit d84f2f1

File tree

2 files changed

+211
-210
lines changed

2 files changed

+211
-210
lines changed
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
from parser.operators import BINARY_OPS
2+
from test.common import CommonTestCase
3+
4+
5+
class TreeGenEofTest(CommonTestCase):
6+
def test__at_expr_end(self):
7+
self.assertFailsGracefullyCST('a.b()')
8+
9+
def test__at_assign_end(self):
10+
self.assertFailsGracefullyCST('a.b = 8')
11+
12+
def test__at_let_end(self):
13+
self.assertFailsGracefullyCST('let a = 3')
14+
15+
def test__at_global_end(self):
16+
self.assertFailsGracefullyCST('global a = 3')
17+
18+
def test__at_decl_item_begin(self):
19+
self.assertFailsGracefullyCST('let')
20+
21+
def test__at_decl_item_could_be_eq(self):
22+
self.assertFailsGracefullyCST('let a')
23+
24+
def test__at_decl_item_after_eq(self):
25+
self.assertFailsGracefullyCST('let a=')
26+
27+
def test__at_def_start(self):
28+
self.assertFailsGracefullyCST('def')
29+
30+
def test__at_def_name(self):
31+
self.assertFailsGracefullyCST('def a')
32+
33+
def test__at_def_lpar(self):
34+
self.assertFailsGracefullyCST('def a(')
35+
36+
def test__at_def_param_type(self):
37+
self.assertFailsGracefullyCST('def a(t1')
38+
39+
def test__at_def_param_value(self):
40+
self.assertFailsGracefullyCST('def a(t1 name')
41+
42+
def test__at_def_param_comma(self):
43+
self.assertFailsGracefullyCST('def a(t1 name,')
44+
45+
def test__at_def_param_second_type(self):
46+
self.assertFailsGracefullyCST('def a(t1 name,t2')
47+
48+
def test__at_def_param_second_name(self):
49+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2')
50+
51+
def test__at_def_param_second_comma(self):
52+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2,')
53+
54+
def test__at_def_rpar_noargs(self):
55+
self.assertFailsGracefullyCST('def a()')
56+
57+
def test__at_def_rpar_1_arg_comma(self):
58+
self.assertFailsGracefullyCST('def a(t1 name,)')
59+
60+
def test__at_def_rpar_1_arg_no_comma(self):
61+
self.assertFailsGracefullyCST('def a(t1 name)')
62+
63+
def test__at_def_rpar_2_arg(self):
64+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2)')
65+
66+
def test__at_def_lbrace(self):
67+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2){')
68+
69+
def test__at_def_rbrace(self):
70+
self.assertValidParseCST('def a(t1 name,t2 name2){}')
71+
72+
def test__at_block_no_semi(self):
73+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2){let a=1')
74+
75+
def test__at_block_semi(self):
76+
self.assertFailsGracefullyCST('def a(t1 name,t2 name2){let a=1;')
77+
78+
def test__common_flow_kwd(self):
79+
for name in ('while', 'repeat', 'while'):
80+
with self.subTest(name=name):
81+
self.assertFailsGracefullyCST(f'{name}')
82+
83+
def test__common_flow_cond(self):
84+
for name in ('while', 'repeat', 'while'):
85+
with self.subTest(name=name):
86+
self.assertFailsGracefullyCST(f'{name} a+1')
87+
88+
def test__common_flow_lbrace(self):
89+
for name in ('while', 'repeat', 'while'):
90+
with self.subTest(name=name):
91+
self.assertFailsGracefullyCST(f'{name} a + 1 {{')
92+
93+
def test__if_full(self):
94+
self.assertValidParseCST('if a+1{}')
95+
96+
def test__else_or_elseif__else(self):
97+
self.assertFailsGracefullyCST('if 1{}else')
98+
99+
def test__elseif_else_if(self):
100+
self.assertFailsGracefullyCST('if 1{}else if')
101+
102+
def test__elseif_expr(self):
103+
self.assertFailsGracefullyCST('if 1{}else if 2')
104+
105+
def test__elseif_lbrace(self):
106+
self.assertFailsGracefullyCST('if 1{}else if 2{')
107+
108+
def test__else_lbrace(self):
109+
self.assertFailsGracefullyCST('if 1{}else {')
110+
111+
def test__call_args_lpar(self):
112+
self.assertFailsGracefullyCST('a(')
113+
114+
def test__call_args_arg1(self):
115+
self.assertFailsGracefullyCST('a(a')
116+
117+
def test__call_args_arg1_comma(self):
118+
self.assertFailsGracefullyCST('a(a,')
119+
120+
def test__call_args_comma_rpar(self):
121+
self.assertFailsGracefullyCST('a(a,)')
122+
123+
def test__call_args_rpar(self):
124+
self.assertFailsGracefullyCST('a(a)')
125+
126+
def test__call_args_noargs(self):
127+
self.assertFailsGracefullyCST('a()')
128+
129+
def test__string_single(self):
130+
self.assertFailsGracefullyCST('"a"')
131+
132+
def test__string_autocat(self):
133+
self.assertFailsGracefullyCST('"a""b"')
134+
135+
def test__number_single(self):
136+
self.assertFailsGracefullyCST('5')
137+
138+
def test__lpar(self):
139+
self.assertFailsGracefullyCST('(')
140+
141+
def test__lpar_expr(self):
142+
self.assertFailsGracefullyCST('(a')
143+
144+
def test__basic_chain_ident_only(self):
145+
self.assertFailsGracefullyCST('a')
146+
147+
def test__basic_chain_dot(self):
148+
self.assertFailsGracefullyCST('a.')
149+
150+
def test__basic_chain_dot_attr(self):
151+
self.assertFailsGracefullyCST('a.b')
152+
153+
def test__basic_chain_lsqb(self):
154+
self.assertFailsGracefullyCST('a[')
155+
156+
def test__basic_chain_getitem_expr(self):
157+
self.assertFailsGracefullyCST('a[b')
158+
159+
def test__basic_chain_rsqb_full(self):
160+
self.assertFailsGracefullyCST('a[b]')
161+
162+
def test__basic_chain_rsqb_empty(self):
163+
self.assertFailsGracefullyCST('a[]')
164+
165+
def test__basic_chain_call_lpar(self):
166+
self.assertFailsGracefullyCST('a(')
167+
168+
def test__basic_chain_call_inner(self):
169+
self.assertFailsGracefullyCST('a(b')
170+
171+
def test__basic_chain_call_rpar_full(self):
172+
self.assertFailsGracefullyCST('a(b)')
173+
174+
def test__basic_chain_call_rpar_empty(self):
175+
self.assertFailsGracefullyCST('a()')
176+
177+
def test__unaries_single(self):
178+
self.assertFailsGracefullyCST('+')
179+
180+
def test__unaries_many(self):
181+
self.assertFailsGracefullyCST('-+--!')
182+
183+
def test__unaries_many_expr(self):
184+
self.assertFailsGracefullyCST('-+--!a')
185+
186+
def test__pow_op(self):
187+
self.assertFailsGracefullyCST('a**')
188+
189+
def test__pow_rhs_unary(self):
190+
self.assertFailsGracefullyCST('a**-')
191+
192+
def test__pow_rhs_unary_expr(self):
193+
self.assertFailsGracefullyCST('a**-a')
194+
195+
def test__pow_rhs_expr(self):
196+
self.assertFailsGracefullyCST('a**b')
197+
198+
def test__bin_op__op(self):
199+
for op in BINARY_OPS:
200+
with self.subTest(op=op):
201+
self.assertFailsGracefullyCST(f'a{op}')
202+
203+
def test__bin_op__expr(self):
204+
for op in BINARY_OPS:
205+
with self.subTest(op=op):
206+
self.assertFailsGracefullyCST(f'a{op}b')
207+
208+
def test__bin_op__success(self):
209+
for op in BINARY_OPS:
210+
with self.subTest(op=op):
211+
self.assertValidParseCST(f'a{op}b;')

0 commit comments

Comments
 (0)