#!/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()