4.9 KiB
4.9 KiB
Templates de Debug - Simple Debug API
Esta carpeta contiene templates predefinidos para debuggear diferentes aspectos de la Calculadora MAV CAS.
Uso Básico
# Ejecutar un template
python simple_debug.py debug_templates/basic_test.json
# Con archivo de salida personalizado
python simple_debug.py debug_templates/basic_test.json --output mi_debug.json
# Con información detallada
python simple_debug.py debug_templates/basic_test.json --verbose
Templates Disponibles
basic_test.json
Propósito: Pruebas básicas de funcionalidad
- Operaciones con FourBytes (IPs)
- Operaciones con IntBase (números en diferentes bases)
- Variables y tabla de símbolos
- Funciones de SymPy
tokenization_test.json
Propósito: Debug del sistema de tokenización
- Análisis de expresiones complejas
- Información de reglas de tokenización
- Procesamiento de expressions mixtas (IP + hex)
regression_test.json
Propósito: Testing de regresión para casos específicos
- Verificación de tipos: FourBytes, IntBase, IP4Mask
- Operaciones simbólicas
- Substitución de variables
error_debug.json
Propósito: Debug de manejo de errores
- Máscaras IP inválidas
- IPs fuera de rango
- Números hexadecimales malformados
- División por cero
- Variables indefinidas
context_debug.json
Propósito: Debug del contexto y estado del motor
- Tabla de símbolos
- Tipos registrados
- Contexto base
- Sistema de ecuaciones
display_format_test.json
Propósito: Demostración de diferentes tipos de resultados
- Diferentes tipos de resultados (IP, hex, símbolos, matrices)
- Comentarios y errores
- Verificación del comportamiento de la aplicación
Formato de Template
Cada template es un archivo JSON con esta estructura:
{
"queries": [
{
"index": 0,
"type": "input",
"content": "10.1.1.1 + 1"
},
{
"index": 1,
"type": "exec",
"content": "type(engine.last_result).__name__"
}
]
}
Tipos de Query
input
: Evalúa expresiones como si las escribieras en la calculadoraexec
: Ejecuta código Python para inspeccionar el estado interno del motor
Casos de Uso Comunes
Debug de un Bug Específico
- Copia
basic_test.json
ami_bug_debug.json
- Modifica las queries para reproducir el bug
- Añade queries
exec
para inspeccionar el estado - Ejecuta:
python simple_debug.py mi_bug_debug.json
Verificar una Nueva Funcionalidad
- Crea un template con queries
input
que usen la nueva funcionalidad - Añade queries
exec
para verificar el estado interno - Compara resultados antes y después de los cambios
Testing de Regresión
- Usa
regression_test.json
como base - Añade casos específicos que deben mantenerse funcionando
- Ejecuta regularmente para detectar regresiones
Funciones Útiles para Queries exec
Estado del Motor
"engine.symbol_table" # Variables actuales
"engine.last_result" # Último resultado
"engine.symbolic_mode" # ¿Modo simbólico?
"len(engine.equations)" # Cantidad de ecuaciones
Información de Tipos
"type(engine.last_result).__name__" # Tipo del resultado
"engine.get_available_types()" # Tipos disponibles
"list(engine.registered_types_info['registered_classes'].keys())"
Tokenización
"engine.parser.get_tokenization_info()" # Info de tokenización
"engine.parser.process_expression('test')" # Procesar expresión
Análisis de Objetos
"engine.last_result.original" # String original (FourBytes)
"engine.last_result.base" # Base numérica (IntBase)
"engine.last_result.has_symbols" # ¿Tiene símbolos?
Formato de Resultado
Resultado Individual para Query input
{
"index": 0,
"input": "10.1.1.1 + 1",
"output": "10.1.1.2",
"result_type": "FourBytes",
"success": true,
"error": null
}
Resultado Individual para Query exec
{
"index": 1,
"input": "type(engine.last_result).__name__",
"output": "FourBytes",
"result_type": "str",
"success": true,
"error": null,
"exec_result": "FourBytes"
}
Campos del Resultado
output
: Texto tal como se muestra en la aplicación (queriesinput
)exec_result
: Valor directo de la evaluación Python (queriesexec
)result_type
: Tipo del objeto resultadosuccess
:true
si la evaluación fue exitosaerror
: Mensaje de error sisuccess
esfalse
Tips
- Usa
index
secuencial para facilitar la lectura de resultados - Combina queries
input
yexec
para verificar comportamiento y estado - El archivo de resultados contiene información detallada de éxito/error
- Usa
output
para ver exactamente el texto que muestra la aplicación - Puedes copiar y modificar templates existentes para casos específicos