Skip to content

Pruebas

Freddy Román edited this page Jul 4, 2022 · 8 revisions
  • En este paso, escribimos pruebas que verifiquen los casos de prueba. Puedes escribir las pruebas en cualquier lenguaje aceptado por omegaUp.
    • Sugerimos utilizar Python con libomegaup. Puedes revisar otros problemas de concursos pasados para ver cómo escribir las pruebas.
  • El evaluador debe checar que la entrada sea válida y que sigue exactamente el formato descrito, cuidando en particular los espacios en blanco y saltos de línea.
  • Las pruebas tienen que considerar los límites especiales que pueden existir para las distintas subtareas. Esto se logra dándole nombres de archivo a los casos conteniendo el identificador de su subtarea, para poder distinguir a qué subtarea pertenecen. Aquí hay un ejemplo.
  • Te sugerimos que las pruebas tengan comentarios explicando qué condiciones de la entrada están validando, así como mensajes de error en las validaciones, para poder saber por qué un caso de prueba fue rechazado.
  • Agrega el validador que creaste a tests/tests.json. Si tu validador se llama test-validator.py, el archivo se vería así:
    {
      "inputs": {
        "filename": "test-validator.py"
      },
      "max_score": 100
    }
  • Agrega casos inválidos para asegurarte que tu validador está funcionando correctamente. Para hacer eso, crea la carpeta tests/invalid-cases y coloca casos que esperas que tu validador rechace. Es decir, agrega archivos .in y .out emparejados como los casos normales; el .out puede ser vacío.
    • Cada caso inválido debe tener un string asociado a él en un archivo .expected-failure, conteniendo la razón por la que esperamos que el validador rechace ese caso. En general, este string es el mensaje asociado a la función de aserción que esperamos que falle para ese caso.
    • El evaluador verificará que los casos de prueba reciban WA (wrong answer) del validador de casos, y adicionalmente revisará que el flujo de error estándar (stderr) del validador contenga el string que está en el archivo .expected-failure. El veredicto final es VE (validator error) si no se encontró el string esperado en el flujo de error estándar del evaluador.