113 lines
3.1 KiB
Python
113 lines
3.1 KiB
Python
|
|
"""Test script for OMML conversion API endpoint."""
|
||
|
|
|
||
|
|
import requests
|
||
|
|
import json
|
||
|
|
|
||
|
|
|
||
|
|
def test_latex_to_omml():
|
||
|
|
"""Test the /convert/latex-to-omml endpoint."""
|
||
|
|
|
||
|
|
# Test cases
|
||
|
|
test_cases = [
|
||
|
|
{
|
||
|
|
"name": "Simple fraction",
|
||
|
|
"latex": "\\frac{a}{b}",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "Quadratic formula",
|
||
|
|
"latex": "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "Integral",
|
||
|
|
"latex": "\\int_0^\\infty e^{-x^2} dx = \\frac{\\sqrt{\\pi}}{2}",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "Matrix",
|
||
|
|
"latex": "\\begin{matrix} a & b \\\\ c & d \\end{matrix}",
|
||
|
|
},
|
||
|
|
]
|
||
|
|
|
||
|
|
base_url = "http://localhost:8000/api/v1/convert/latex-to-omml"
|
||
|
|
|
||
|
|
print("Testing OMML Conversion API")
|
||
|
|
print("=" * 80)
|
||
|
|
|
||
|
|
for i, test_case in enumerate(test_cases, 1):
|
||
|
|
print(f"\nTest {i}: {test_case['name']}")
|
||
|
|
print("-" * 80)
|
||
|
|
print(f"LaTeX: {test_case['latex']}")
|
||
|
|
|
||
|
|
try:
|
||
|
|
response = requests.post(
|
||
|
|
base_url,
|
||
|
|
json={"latex": test_case["latex"]},
|
||
|
|
headers={"Content-Type": "application/json"},
|
||
|
|
timeout=10,
|
||
|
|
)
|
||
|
|
|
||
|
|
if response.status_code == 200:
|
||
|
|
result = response.json()
|
||
|
|
omml = result.get("omml", "")
|
||
|
|
|
||
|
|
print(f"✓ Status: {response.status_code}")
|
||
|
|
print(f"OMML length: {len(omml)} characters")
|
||
|
|
print(f"OMML preview: {omml[:150]}...")
|
||
|
|
|
||
|
|
else:
|
||
|
|
print(f"✗ Status: {response.status_code}")
|
||
|
|
print(f"Error: {response.text}")
|
||
|
|
|
||
|
|
except requests.exceptions.RequestException as e:
|
||
|
|
print(f"✗ Request failed: {e}")
|
||
|
|
except Exception as e:
|
||
|
|
print(f"✗ Error: {e}")
|
||
|
|
|
||
|
|
print("\n" + "=" * 80)
|
||
|
|
|
||
|
|
|
||
|
|
def test_invalid_input():
|
||
|
|
"""Test error handling with invalid input."""
|
||
|
|
|
||
|
|
print("\nTesting Error Handling")
|
||
|
|
print("=" * 80)
|
||
|
|
|
||
|
|
base_url = "http://localhost:8000/api/v1/convert/latex-to-omml"
|
||
|
|
|
||
|
|
# Empty LaTeX
|
||
|
|
print("\nTest: Empty LaTeX")
|
||
|
|
response = requests.post(
|
||
|
|
base_url,
|
||
|
|
json={"latex": ""},
|
||
|
|
headers={"Content-Type": "application/json"},
|
||
|
|
)
|
||
|
|
print(f"Status: {response.status_code}")
|
||
|
|
print(f"Response: {response.json()}")
|
||
|
|
|
||
|
|
# Missing LaTeX field
|
||
|
|
print("\nTest: Missing LaTeX field")
|
||
|
|
response = requests.post(
|
||
|
|
base_url,
|
||
|
|
json={},
|
||
|
|
headers={"Content-Type": "application/json"},
|
||
|
|
)
|
||
|
|
print(f"Status: {response.status_code}")
|
||
|
|
print(f"Response: {response.json()}")
|
||
|
|
|
||
|
|
print("\n" + "=" * 80)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
print("OMML API Test Suite")
|
||
|
|
print("Make sure the API server is running on http://localhost:8000")
|
||
|
|
print()
|
||
|
|
|
||
|
|
try:
|
||
|
|
test_latex_to_omml()
|
||
|
|
test_invalid_input()
|
||
|
|
print("\n✓ All tests completed!")
|
||
|
|
|
||
|
|
except KeyboardInterrupt:
|
||
|
|
print("\n\n✗ Tests interrupted by user")
|
||
|
|
except Exception as e:
|
||
|
|
print(f"\n✗ Test suite failed: {e}")
|