Skip to content

Commit 795bdbd

Browse files
simplified the code for _test_paticular_example_
1 parent d28444b commit 795bdbd

File tree

1 file changed

+74
-70
lines changed

1 file changed

+74
-70
lines changed

sympy/solvers/ode/tests/test_single.py

Lines changed: 74 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,9 @@
115115
116116
You can test this with:
117117
118-
from sympy.solvers.ode.tests.test_single import _test_particular_example
118+
from sympy.solvers.ode.tests.test_single import _test_an_example
119119
120-
_test_particular_example('{hint}', example_name = '{example}')
120+
_test_an_example('{hint}', example_name = '{example}')
121121
122122
The ODE is:
123123
{eq}
@@ -160,6 +160,8 @@ def _test_all_hints(runxfail=False):
160160
all_examples = _get_all_examples()
161161

162162
for our_hint in all_hints:
163+
if our_hint.endswith('_Integral') or 'series' in our_hint:
164+
continue
163165
_test_all_examples_for_one_hint(our_hint, all_examples, runxfail)
164166

165167

@@ -170,88 +172,89 @@ def _test_dummy_sol(expected_sol,dsolve_sol):
170172
return expected_sol.dummy_eq(dsolve_sol)
171173

172174

173-
def _test_particular_example(our_hint, ode_example=None,solver_flag=False, example_name=None):
174-
if example_name is not None:
175-
all_examples = _get_all_examples()
176-
for example in all_examples:
177-
if example['example_name'] == example_name:
178-
eq = example['eq']
179-
dsolve(eq, hint=our_hint)
180-
else:
181-
eq = ode_example['eq']
182-
expected_sol = ode_example['sol']
183-
example = ode_example['example_name']
184-
xfail = our_hint in ode_example['XFAIL']
185-
func = ode_example['func']
186-
result = {'msg': '', 'xpass_msg': ''}
187-
xpass = True
188-
if solver_flag:
189-
if our_hint not in classify_ode(eq, func):
190-
message = hint_message.format(example=example, eq=eq, our_hint=our_hint)
175+
def _test_an_example(our_hint, example_name):
176+
all_examples = _get_all_examples()
177+
for example in all_examples:
178+
if example['example_name'] == example_name:
179+
eq = example['eq']
180+
dsolve(eq, hint=our_hint)
181+
182+
183+
def _test_particular_example(our_hint, ode_example, solver_flag=False):
184+
eq = ode_example['eq']
185+
expected_sol = ode_example['sol']
186+
example = ode_example['example_name']
187+
xfail = our_hint in ode_example['XFAIL']
188+
func = ode_example['func']
189+
result = {'msg': '', 'xpass_msg': ''}
190+
xpass = True
191+
if solver_flag:
192+
if our_hint not in classify_ode(eq, func):
193+
message = hint_message.format(example=example, eq=eq, our_hint=our_hint)
194+
raise AssertionError(message)
195+
196+
if our_hint in classify_ode(eq, func):
197+
result['match_list'] = example
198+
try:
199+
dsolve_sol = dsolve(eq, func, hint=our_hint)
200+
201+
except Exception as e:
202+
dsolve_sol = []
203+
result['exception_list'] = example
204+
if not solver_flag:
205+
traceback.print_exc()
206+
result['msg'] = exception_msg.format(e=str(e), hint=our_hint, example=example, eq=eq)
207+
xpass = False
208+
209+
if solver_flag and dsolve_sol!=[]:
210+
expect_sol_check = False
211+
if type(dsolve_sol)==list:
212+
for sub_sol in expected_sol:
213+
if sub_sol.has(Dummy):
214+
expect_sol_check = not _test_dummy_sol(sub_sol, dsolve_sol)
215+
else:
216+
expect_sol_check = sub_sol not in dsolve_sol
217+
if expect_sol_check:
218+
break
219+
else:
220+
expect_sol_check = dsolve_sol not in expected_sol
221+
for sub_sol in expected_sol:
222+
if sub_sol.has(Dummy):
223+
expect_sol_check = not _test_dummy_sol(sub_sol, dsolve_sol)
224+
225+
if expect_sol_check:
226+
message = expected_sol_message.format(example=example, eq=eq, sol=expected_sol, dsolve_sol=dsolve_sol)
191227
raise AssertionError(message)
192228

193-
if our_hint in classify_ode(eq, func):
194-
result['match_list'] = example
195-
try:
196-
dsolve_sol = dsolve(eq, func, hint=our_hint)
197-
198-
except Exception as e:
199-
dsolve_sol = []
200-
result['exception_list'] = example
201-
if not solver_flag:
202-
traceback.print_exc()
203-
result['msg'] = exception_msg.format(e=str(e), hint=our_hint, example=example, eq=eq)
204-
xpass = False
205-
206-
if solver_flag and dsolve_sol!=[]:
207-
expect_sol_check = False
208-
if type(dsolve_sol)==list:
209-
for sub_sol in expected_sol:
210-
if sub_sol.has(Dummy):
211-
expect_sol_check = not _test_dummy_sol(sub_sol, dsolve_sol)
212-
else:
213-
expect_sol_check = sub_sol not in dsolve_sol
214-
if expect_sol_check:
215-
break
216-
else:
217-
expect_sol_check = dsolve_sol not in expected_sol
218-
for sub_sol in expected_sol:
219-
if sub_sol.has(Dummy):
220-
expect_sol_check = not _test_dummy_sol(sub_sol, dsolve_sol)
229+
expected_checkodesol = [(True, 0) for i in range(len(expected_sol))]
230+
if len(expected_sol) == 1:
231+
expected_checkodesol = (True, 0)
221232

222-
if expect_sol_check:
223-
message = expected_sol_message.format(example=example, eq=eq, sol=expected_sol, dsolve_sol=dsolve_sol)
233+
if checkodesol(eq, dsolve_sol) != expected_checkodesol:
234+
result['unsolve_list'] = example
235+
xpass = False
236+
message = dsol_incorrect_msg.format(hint=our_hint, eq=eq, sol=expected_sol,dsolve_sol=dsolve_sol)
237+
if solver_flag:
238+
message = checkodesol_msg.format(example=example, eq=eq)
224239
raise AssertionError(message)
240+
else:
241+
result['msg'] = 'AssertionError: ' + message
225242

226-
expected_checkodesol = [(True, 0) for i in range(len(expected_sol))]
227-
if len(expected_sol) == 1:
228-
expected_checkodesol = (True, 0)
229-
230-
if checkodesol(eq, dsolve_sol) != expected_checkodesol:
231-
result['unsolve_list'] = example
232-
xpass = False
233-
message = dsol_incorrect_msg.format(hint=our_hint, eq=eq, sol=expected_sol,dsolve_sol=dsolve_sol)
234-
if solver_flag:
235-
message = checkodesol_msg.format(example=example, eq=eq)
236-
raise AssertionError(message)
237-
else:
238-
result['msg'] = 'AssertionError: ' + message
239-
240-
if xpass and xfail:
241-
result['xpass_msg'] = example + "is now passing for the hint" + our_hint
242-
return result
243+
if xpass and xfail:
244+
result['xpass_msg'] = example + "is now passing for the hint" + our_hint
245+
return result
243246

244247

245248
def _test_all_examples_for_one_hint(our_hint, all_examples=[], runxfail=None):
246249
if all_examples == []:
247250
all_examples = _get_all_examples()
248251
match_list, unsolve_list, exception_list = [], [], []
249252
for ode_example in all_examples:
250-
if our_hint.endswith('_Integral') or 'series' in our_hint:
251-
continue
252253
xfail = our_hint in ode_example['XFAIL']
253254
if runxfail and not xfail:
254255
continue
256+
if xfail:
257+
continue
255258
result = _test_particular_example(our_hint, ode_example)
256259
match_list += result.get('match_list',[])
257260
unsolve_list += result.get('unsolve_list',[])
@@ -617,7 +620,8 @@ def _get_examples_ode_sol_factorable():
617620
#Below examples were added for the issue: https://github.com/sympy/sympy/issues/15889
618621
'fact_12': {
619622
'eq': exp(f(x).diff(x))-f(x)**2,
620-
'sol': [Eq(NonElementaryIntegral(1/log(y**2), (y, f(x))), C1 + x)]
623+
'sol': [Eq(NonElementaryIntegral(1/log(y**2), (y, f(x))), C1 + x)],
624+
'XFAIL': ['lie_group'] #It shows not implemented error for lie_group.
621625
},
622626

623627
'fact_13': {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy