|
8 | 8 | from sympy.abc import _clash |
9 | 9 | from sympy.logic.boolalg import Boolean |
10 | 10 |
|
11 | | -from petab.math import sympify_petab |
| 11 | +from petab.math import petab_math_str, sympify_petab |
12 | 12 |
|
13 | 13 |
|
14 | 14 | def test_sympify_numpy(): |
@@ -55,20 +55,27 @@ def read_cases(): |
55 | 55 | @pytest.mark.parametrize("expr_str, expected", read_cases()) |
56 | 56 | def test_parse_cases(expr_str, expected): |
57 | 57 | """Test PEtab math expressions for the PEtab test suite.""" |
58 | | - result = sympify_petab(expr_str) |
59 | | - if isinstance(result, Boolean): |
60 | | - assert result == expected |
| 58 | + sym_expr = sympify_petab(expr_str) |
| 59 | + if isinstance(sym_expr, Boolean): |
| 60 | + assert sym_expr == expected |
61 | 61 | else: |
62 | 62 | try: |
63 | | - result = float(result.evalf()) |
| 63 | + result = float(sym_expr.evalf()) |
64 | 64 | assert np.isclose(result, expected), ( |
65 | 65 | f"{expr_str}: Expected {expected}, got {result}" |
66 | 66 | ) |
67 | 67 | except TypeError: |
68 | | - assert result == expected, ( |
| 68 | + assert sym_expr == expected, ( |
69 | 69 | f"{expr_str}: Expected {expected}, got {result}" |
70 | 70 | ) |
71 | 71 |
|
| 72 | + # test parsing, printing, and parsing again |
| 73 | + resympified = sympify_petab(petab_math_str(sym_expr)) |
| 74 | + if sym_expr.is_number: |
| 75 | + assert np.isclose(float(resympified), float(sym_expr)) |
| 76 | + else: |
| 77 | + assert resympified.equals(sym_expr), (sym_expr, resympified) |
| 78 | + |
72 | 79 |
|
73 | 80 | def test_ids(): |
74 | 81 | """Test symbols in expressions.""" |
|
0 commit comments