Spaces:
Runtime error
Runtime error
| from app.services.numeric_validator import ( | |
| run_numeric_checks_for_demo_answer, | |
| validate_derivative, | |
| ) | |
| def test_validate_derivative_success_sets_sympy_cas_fields() -> None: | |
| item = validate_derivative("x**2", "2*x") | |
| assert item.is_valid is True | |
| assert item.sympy_status == "ok" | |
| assert item.sympy_result == "2*x" | |
| assert item.wolfram_status == "not_run" | |
| assert item.wolfram_result is None | |
| assert item.cas_status == "SYMPY_ONLY" | |
| assert item.preferred_engine == "sympy" | |
| assert item.confidence_impact == "neutral" | |
| assert item.human_review_reason is None | |
| def test_validate_derivative_failure_sets_review_reason() -> None: | |
| item = validate_derivative("x**2", "x") | |
| assert item.is_valid is False | |
| assert item.sympy_status == "ok" | |
| assert item.sympy_result == "2*x" | |
| assert item.wolfram_status == "not_run" | |
| assert item.cas_status == "SYMPY_ONLY" | |
| assert item.preferred_engine == "sympy" | |
| assert item.confidence_impact == "decrease" | |
| assert item.human_review_reason == "sympy_contradicts_expected_derivative" | |
| def test_validate_derivative_unusable_expression_sets_no_cas_validation() -> None: | |
| item = validate_derivative("sin(", "2*x") | |
| assert item.is_valid is False | |
| assert item.sympy_status == "failed" | |
| assert item.sympy_result is None | |
| assert item.wolfram_status == "not_run" | |
| assert item.cas_status == "NO_CAS_VALIDATION" | |
| assert item.preferred_engine == "none" | |
| assert item.confidence_impact == "decrease" | |
| assert item.human_review_reason == "sympy_unusable_expression" | |
| def test_demo_numeric_checks_keep_report_consistent() -> None: | |
| report = run_numeric_checks_for_demo_answer("On trouve f'(x)=2x.") | |
| assert len(report.checks) == 1 | |
| assert report.checks[0].is_valid is True | |
| assert report.checks[0].cas_status == "SYMPY_ONLY" | |
| assert report.contradicted_by_numeric_check is False | |
| assert report.needs_human_review is False | |