Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import sympy as sp | |
| from core.parser import ExpressionParser | |
| def test_preprocess_normalizes_common_unicode_tokens(): | |
| parser = ExpressionParser() | |
| out = parser._preprocess("π × x − 1") | |
| assert "pi" in out | |
| assert "*" in out | |
| assert "-" in out | |
| def test_latex_to_sympy_string_inserts_implicit_multiplication(): | |
| parser = ExpressionParser() | |
| out = parser._latex_to_sympy_str("2x(x+1)") | |
| assert out == "2*x*(x+1)" | |
| def test_parse_plain_polynomial_returns_symbol_and_variables(): | |
| parser = ExpressionParser() | |
| result = parser.parse("x^2 + 3x + 2") | |
| assert result["success"] is True | |
| assert "x" in result["variables"] | |
| assert sp.simplify(result["sympy_expr"] - (sp.Symbol("x") ** 2 + 3 * sp.Symbol("x") + 2)) == 0 | |
| def test_parse_fraction_latex_falls_back_cleanly(): | |
| parser = ExpressionParser() | |
| result = parser.parse(r"\frac{1}{x}") | |
| assert result["success"] is True | |
| x = sp.Symbol("x") | |
| assert sp.simplify(result["sympy_expr"] - (1 / x)) == 0 | |
| def test_parse_invalid_expression_returns_failure(): | |
| parser = ExpressionParser() | |
| result = parser.parse(")))") | |
| assert result["success"] is False | |
| assert "error" in result | |