Nota: Este test debe ser ejecutado en linux.

En esta página se describen varios archivos que sirven para probar la tarea. Estos están comprimidos en el archivo pruebas.tar.gz (se encuentra en la sección de laboratorio del curso).

El contenido del archivo comprimido se debe extraer en una carpeta cualquiera y en la misma se debe copiar el archivo tarea2.pas con los subprogramas solicitados en esta tarea.

Como descomprimir los archivos

El archivo se puede descomprimir con el siguiente comando: tar xzf pruebas.tar.gz. También funciona accionar con doble click sobre el archivo.

Archivos proporcionados

En la carpeta donde se realizó la descompresión se van a encontrar los siguientes archivos y carpetas:

  • Los archivos definiciones.pas y principal.pas.
  • Una carpeta entradas que contiene las entradas al programa principal para realizar los casos de prueba.
  • Una carpeta salidas con las salidas oficiales, o esperadas.
  • Una carpeta mios con las salidas que se obtienen al ejecutar el programa.
  • Un script Python test.py para compilar, ejecutar y comparar los casos de prueba automáticamente.

Comportamiento del programa principal

Para probar el programa, compilamos el programa principal.pas. Esto se hace una sola vez mientras no se hagan cambios.

    fpc -Co -Cr -Miso -gl principal.pas

y nos aseguramos que no hay errores de compilación y que se ha generado el ejecutable llamado principal.

Se debe compilar en línea de comandos.

Probando de manera interactiva

El programa se puede ejecutar de manera interactiva con el comando:

    ./principal

En esta modalidad el programa imprime el siguiente menú:

--------------------------------
Ingrese Opción
--------------------------------
0=fin
1=Cifrar contraseña
2=Descifrar contraseña
3=Agregar usuario
4=Agregar servicios de usuario
5=Recuperar contraseña de servicio de un usuario
6=Listar servicios de usuario
--------------------------------

y queda esperando que se ingrese un número (entre 0 y 6 inclusive) correspondiente a la opción deseada seguido de un Enter. Cada una de las opciones listadas tienen instrucciones de uso diferentes, las cuales serán indicadas luego de seleccionada la opción. A modo de ejemplo si se ingresa el número 1, en la consola se despliega la siguiente salida:

Ingrese el texto a cifrar (máximo 100 caracteres terminando en .):

solicitando al usuario ingresar el texto a cifrar, para este ejemplo utilizaremos el texto: "hola soy un ejemplo.". Luego de ingresarlo, en la consola se despliega el siguiente mensaje:

Ingrese la clave para cifrar (máximo 10 caracteres terminando en .):

Dando paso a ingresar la clave con la cuál se aplicará Vigenère para cifrar el texto. Utilizaremos "clave.". Después de esto se imprime en pantalla el texto cifrado y nuevamente el menú de opciones.

jzlv uzy yp eeioalj
--------------------------------
Ingrese Opción
--------------------------------
0=fin
1=Cifrar contraseña
2=Descifrar contraseña
3=Agregar usuario
4=Agregar servicios de usuario
5=Recuperar contraseña de servicio de un usuario
6=Listar servicios de usuario
--------------------------------

Nota: En este caso particular, al solicitar que el usuario ingrese textos o palabras se aclara que estos deben de terminar en el caracter '.', esto aunque no se indique en todas las opciones, se mantiene en los demás casos de uso del programa (agregar usuario, agregar servicio, recuperar contraseña, listar servicios).

Probando un Caso de Prueba

Si queremos probar un caso de prueba particular, por ejemplo cifrado_01.txt, procedemos así:

Ejecutamos nuestro programa de la siguiente forma:

     ./principal  < entradas/cifrado_01.txt  > mios/cifrado_01.txt

El comando anterior ejecuta el programa principal de manera tal que la entrada es leída desde el archivo entradas/cifrado_01.txt y la salida es guardada en el archivo mios/cifrado_01.txt.

Luego se debe verificar que la salida obtenida coincida con la salida esperada ejecutando el comando:

     diff  mios/cifrado_01.txt  salidas/cifrado_01.txt 

Si no hay diferencias entre los archivos mios/cifrado_01.txt y salidas/cifrado_01.txt el comando no emite ninguna salida. Eso significa que el test es correcto para el caso cifrado_01.

En cambio, si el comando diff emite alguna salida, el test es incorrecto. Para conocer la diferencia recomendamos mirar (a ojo) el contenido de los archivos mios/cifrado_01.txt y salidas/cifrado_01.txt. El primero es el resultado desplegado por el programa del estudiante y el segundo el resultado correcto.

Verificando todos los casos

Adjuntamos además un script de Python que permite ejecutar automáticamente todos los casos y nos indica para cada test si es correcto o no. El test se ejecuta de la siguiente manera en la terminal:

    python3 test.py

Este comando: compila el programa principal, ejecuta cada uno de los casos de prueba de la carpeta entradas, y compara cada resultado obtenido con la salida esperada que está en la carpeta salidas. Las salidas quedan en la carpeta mios. Además en la pantalla se indica el resultado al ejecutar cada caso y al final se informa la cantidad de casos correctos e incorrectos.

Descarga de Archivos

El archivo pruebas.tar.gz se puede descargar de la sección de Laboratorio del EVA del curso.

Última modificación: miércoles, 30 de octubre de 2024, 15:38