82 lines
3.3 KiB
Python
82 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Prueba de las correcciones:
|
|
1. FourBytes + int mantiene tipo FourBytes
|
|
2. IP4Mask con mejor mensaje de error para máscaras inválidas
|
|
"""
|
|
|
|
if __name__ == "__main__":
|
|
print("🔧 PROBANDO CORRECCIONES")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
from main_evaluation import HybridEvaluationEngine
|
|
|
|
# Crear motor
|
|
engine = HybridEvaluationEngine()
|
|
|
|
print("📋 Reproduciendo casos del usuario:\n")
|
|
|
|
# 1. Reproducir secuencia completa
|
|
print("1. mask=255.240.0.3")
|
|
result1 = engine.evaluate_line("mask=255.240.0.3")
|
|
print(f" → {result1.result} (tipo: {type(result1.result).__name__})")
|
|
|
|
print(f"\n2. mask")
|
|
result2 = engine.evaluate_line("mask")
|
|
print(f" → {result2.result} (tipo: {type(result2.result).__name__})")
|
|
|
|
print(f"\n3. ip=10.1.1.x")
|
|
result3 = engine.evaluate_line("ip=10.1.1.x")
|
|
print(f" → {result3.result} (tipo: {type(result3.result).__name__})")
|
|
|
|
print(f"\n4. 10.1.1.1 + 1 (DEBE DEVOLVER FourBytes)")
|
|
result4 = engine.evaluate_line("10.1.1.1 + 1")
|
|
print(f" → {result4.result} (tipo: {type(result4.result).__name__})")
|
|
|
|
if hasattr(result4.result, 'original'):
|
|
print(f" → Valor original: {result4.result.original}")
|
|
|
|
print(f"\n5. ip")
|
|
result5 = engine.evaluate_line("ip")
|
|
print(f" → {result5.result} (tipo: {type(result5.result).__name__})")
|
|
|
|
print(f"\n6. IP4(10.1.1.4)")
|
|
result6 = engine.evaluate_line("IP4(10.1.1.4)")
|
|
print(f" → {result6.result} (tipo: {type(result6.result).__name__})")
|
|
|
|
print(f"\n7. IP4Mask(mask) - DEBE DAR ERROR INFORMATIVO")
|
|
result7 = engine.evaluate_line("IP4Mask(mask)")
|
|
if result7.is_error:
|
|
print(f" ❌ Error (como esperado): {result7.error}")
|
|
else:
|
|
print(f" → {result7.result} (tipo: {type(result7.result).__name__})")
|
|
|
|
print(f"\n8. Probando con máscara válida: IP4Mask(255.255.0.0)")
|
|
result8 = engine.evaluate_line("IP4Mask(255.255.0.0)")
|
|
print(f" → {result8.result} (tipo: {type(result8.result).__name__})")
|
|
|
|
print(f"\n🎯 RESUMEN DE RESULTADOS:")
|
|
print(f" ✅ mask asignada como FourBytes: {type(result1.result).__name__ == 'FourBytes'}")
|
|
print(f" ✅ 10.1.1.1 + 1 mantiene FourBytes: {type(result4.result).__name__ == 'FourBytes'}")
|
|
print(f" ✅ IP4Mask da error informativo para máscara inválida: {result7.is_error}")
|
|
print(f" ✅ IP4Mask funciona con máscara válida: {not result8.is_error}")
|
|
|
|
# Verificación adicional de aritmética FourBytes
|
|
print(f"\n🔍 VERIFICACIÓN ADICIONAL DE ARITMÉTICA:")
|
|
|
|
# Test más casos aritméticos
|
|
test_cases = [
|
|
"192.168.1.1 + 5",
|
|
"10.0.0.0 + 256",
|
|
"255.255.255.255 - 1"
|
|
]
|
|
|
|
for case in test_cases:
|
|
result = engine.evaluate_line(case)
|
|
print(f" {case} → {result.result} ({type(result.result).__name__})")
|
|
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
import traceback
|
|
traceback.print_exc() |