92 lines
3.0 KiB
Python
92 lines
3.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script de prueba final para verificar todas las funcionalidades del modo simbólico
|
|
"""
|
|
|
|
from main_evaluation import HybridEvaluationEngine
|
|
|
|
def test_comprehensive():
|
|
"""Prueba comprehensiva del modo simbólico"""
|
|
print("=" * 70)
|
|
print("PRUEBA COMPREHENSIVA - MODO SIMBÓLICO")
|
|
print("=" * 70)
|
|
|
|
# Crear motor en modo simbólico
|
|
engine = HybridEvaluationEngine()
|
|
engine.set_symbolic_mode(
|
|
symbolic_mode=True,
|
|
show_numeric=True,
|
|
keep_fractions=True
|
|
)
|
|
|
|
# Test cases
|
|
test_cases = [
|
|
# Fracciones simples
|
|
("4/5", "Fracción simple"),
|
|
("25/51", "Fracción compleja"),
|
|
("22/7", "Aproximación de π"),
|
|
|
|
# Asignaciones de fracciones
|
|
("a = 4/5", "Asignación fracción simple"),
|
|
("b = 25/51", "Asignación fracción compleja"),
|
|
("c = 22/7", "Asignación aproximación π"),
|
|
|
|
# Operaciones con fracciones
|
|
("3/4 + 1/6", "Suma de fracciones"),
|
|
("5/6 - 1/3", "Resta de fracciones"),
|
|
("2/3 * 3/4", "Multiplicación de fracciones"),
|
|
("5/6 / 2/3", "División de fracciones"),
|
|
|
|
# Asignaciones de operaciones
|
|
("d = 3/4 + 1/6", "Asignación suma fracciones"),
|
|
("e = 2/3 * 3/4", "Asignación multiplicación fracciones"),
|
|
|
|
# Expresiones simbólicas
|
|
("sqrt(2)", "Raíz cuadrada"),
|
|
("sin(pi/4)", "Función trigonométrica"),
|
|
("log(e)", "Logaritmo"),
|
|
|
|
# Asignaciones simbólicas
|
|
("f = sqrt(2)/2", "Asignación expresión simbólica"),
|
|
("g = sin(pi/6)", "Asignación función trigonométrica"),
|
|
]
|
|
|
|
print("\nRESULTADOS:")
|
|
print("-" * 70)
|
|
|
|
for i, (expression, description) in enumerate(test_cases, 1):
|
|
print(f"\n{i:2d}. {description}")
|
|
print(f" Expresión: {expression}")
|
|
|
|
result = engine.evaluate_line(expression)
|
|
|
|
if result.is_error:
|
|
print(f" ❌ ERROR: {result.error}")
|
|
else:
|
|
print(f" ✅ Resultado: {result.result}")
|
|
if result.numeric_result is not None:
|
|
print(f" 📊 Numérico: ≈ {result.numeric_result}")
|
|
else:
|
|
print(f" 📊 Numérico: (no disponible)")
|
|
|
|
# Verificar variables asignadas
|
|
print(f"\n{'-'*70}")
|
|
print("VARIABLES ASIGNADAS:")
|
|
print(f"{'-'*70}")
|
|
|
|
variables = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
|
|
for var in variables:
|
|
value = engine.get_variable(var)
|
|
if value is not None:
|
|
print(f" {var} = {value} (tipo: {type(value).__name__})")
|
|
|
|
print(f"\n{'='*70}")
|
|
print("MODO SIMBÓLICO: ✅ FUNCIONANDO CORRECTAMENTE")
|
|
print("- Fracciones se mantienen simbólicas: 4/5, 25/51, 22/7")
|
|
print("- Aproximaciones numéricas se muestran cuando corresponde")
|
|
print("- Asignaciones preservan la forma simbólica")
|
|
print("- Operaciones mantienen exactitud simbólica")
|
|
print(f"{'='*70}")
|
|
|
|
if __name__ == "__main__":
|
|
test_comprehensive() |