La siguiente documentación informal describe de forma suscinta el formato de los ficheros usados por el driver genérico que prueba vuestra práctica. Esta información es necesaria tanto para crear vuestros propios juegos de prueba como para interpretar el resultado de usar los nuestros. Los ficheros de texto que intervienen en cada juego de prueba son: Un fichero de extensión .in, que es el fichero de entrada (el que lee el driver) Un fichero de extensión .out, que recoge el resultado de la ejecución. Un fichero de extensión .res, que os proporcionamos para nuestros juegos de pruebas, que es el ".out esperado". Cuando ejecutais pruebas en nuestra página web el resultado que os mostramos es el resultado de hacer "diff xxx.res xxx.out" (Mirad el maual de diff para más información sobre el formato de dicha salida). ------------------Documentación básica: ------------------------------ Estructura tipica de un fichero .in =================================== ##1 Titulo del bloque 1 ##! comentario general ##! comentario general ... ##! comentario general ... operacion arg1 arg2 ... argk #output esperado operacion arg1 arg2 ... argk #output esperado operacion arg1 arg2 ... argk #output esperado ... ##1.1 Titulo del subbloque 1.1 ##! comentario general ##! comentario general ... ##! comentario general ... operacion arg1 arg2 ... argk #output esperado operacion arg1 arg2 ... argk #output esperado operacion arg1 arg2 ... argk #output esperado ... Existen pues tres tipos de "comentario" Headings: ##n (o ##n.m, ##n.m.p, etc.) destinados a estructurar el juego de pruebas en bloques, subbloques, subsubbloques, etc. Comentarios: ##! comentarios de tipo general Output: #output esperado Los dos primeros tipos de comentario pueden aparecer en cualquier punto del fichero .in, excepto entre una operacion y su output esperado. Los comentarios de output deben aparecer siempre justo a continuacion de la orden correspondiente. En el fichero .out los dos primeros tipos de comentario se caracterizan por los prefijos ### y ###! respectivamente. Las operaciones del fichero .in aparecen como comentarios en el .out (con solo un simbolo # como prefijo) y los outputs esperados aparecen justo a continuacion del output real, marcados con el prefijo ##. Ejemplo: ======= IN OUT ##1 donde ###1 donde ##! testea la operacion donde ###! testea la operacion donde init 1 10 3 FIRST_FIT #init 1 10 3 FIRST_FIT i A 10 #i A 10 i B 10 #i B 10 i C 10 #i C 10 i D 30 #i D 30 i E 20 #i E 20 donde F #donde F #<-1,-1,-1> <-1,-1,-1> donde D ##<-1,-1,-1> #<0,1,0> #donde D donde B <0,1,0> #<0,0,1> ##<0,1,0> #donde B <0,0,1> ##<0,0,1> Nosotros os proporcionamos un driver hecho especificamente para probar los módulos de la práctica, en código fuente, y uno o más juegos de prueba en el formato arriba descripto. Para utilizarlos, primero debereis compilar el driver y montar un ejecutable con él, usando todos los archivos .o de los distintos módulos que habeis implementado, y asegurándoos de incluir la librería libeda (agregando la opción -leda a la línea de comandos con que montais el ejecutable). Por cada juego de prueba os proporcionaremos dos ficheros: uno con extension .in y el otro .res. Para ejecutar, por ejemplo, el juego de prueba jp1, (suponiendo que vuestro ejecutable se llame Driver), debereis hacer: ./Driver < jp1.in >&jp1.out El juego de pruebas se ha superado con exito si el fichero .out que obteneis es identico al .res que os hemos proporcionado, cosa que podeis comprobar ejecutando diff jp1.out jp1.res