6. Pruebas
6.3. Pruebas originales
6.3.1. Pruebas con llamadas correctas
Prueba 01: "Flex-Bison"El objetivo de esta prueba es comprobar que se puede manejar la tabla de símbolos correctamente desde el código generado por Flex-Bison.
Se ha creado un analizador muy sencillo que cuenta parejas diferentes de cadena- numero entero positivo. Las cadenas se van insertando en una tabla de símbolos (a no ser que ya existieran) y se les añade un atributo entero valor. Al terminar se genera un fichero con el contenido final de la tabla usada.
Prueba 02: "Crear y destruir tablas"
El objetivo de esta prueba es comprobar que no se producen errores de memoria al crear y destruir tablas repetitivamente.
Prueba 03: "Muchas tablas"
El objetivo de esta prueba es comprobar el rendimiento cuando se tienen cargadas un gran número de tablas en memoria.
Primero se crearán muchas tablas en un bucle y luego se destruirán todas en otro bucle. Se ha observado que el rendimiento es aceptable, a no ser que un usuario requiriera tener mas de 5000 tablas en memoria a la vez, en cuyo caso el manejo interno de las listas enlazadas se notará en la velocidad de ejecución.
La velocidad es aceptable incluso creando 5000 tablas: una medición externa indica que sólo tarda 220ms (en un ordenador de 2GHz, 2Gb de RAM).
Prueba 04: "Muchas entradas"
Aquí simplemente se observa el funcionamiento correcto cuando se crean muchas entradas vacías en una tabla.
Los nombres elegidos para las entradas no provocarán colisiones internas. Prueba 05: "Colisiones internas"
Esta prueba es casi igual a la prueba 04, pero en este caso los nombres elegidos para las entradas sí provocarán colisiones internas.
El hecho de que se produzcan o no colisiones internas es totalmente invisible para el usuario, que no tiene que preocuparse por estos problemas. Externamente funcionará igual de bien (o quizás unos nanosegundos más lentos si hay colisiones internas).
Prueba 06: "Tabla rellena simple"
En este caso se quiere mostrar un ejemplo de lo que podría ser rellenar simplemente una única tabla con 4 variables de un programa muy sencillo.
Se puede observar cómo se escribe correctamente el contenido de la tabla en tabla.txt. Prueba 07: "Registro"
Un ejemplo de cómo se podría introducir un tipo "fecha" (con los campos dia, mes, año) y un par de variables de ese tipo.
Se puede observar cómo se escribe correctamente el contenido de las tablas del programa principal y el de la tabla del registro.
Se observa cómo se crean y rellenan las tablas correctamente sin que nada falle. Prueba 08: "Función"
Un ejemplo de cómo se podría introducir una función "sumar" en las tablas de símbolos. Esta función tiene 2 parámetros enteros y devuelve un entero.
Se puede observar cómo se escribe correctamente el contenido de las tablas del programa principal y el de la tabla de la función.
Prueba 09: "Procedimiento"
Un ejemplo de cómo se podría introducir un procedimiento "helloworld" en las tablas de símbolos. Este procedimiento no tiene parámetros y no tiene ningún valor de retorno. Se puede observar cómo se escribe correctamente el contenido de las tablas del programa principal y el de la tabla de la función.
Prueba 10: "Un poco de todo"
El objetivo de esta prueba es ver el correcto funcionamiento de todas las funciones cuando son usadas todas ellas en un mismo programa.
Se puede observar cómo se escribe correctamente el contenido de la tabla en tabla.txt.
6.3.2. Pruebas con llamadas incorrectas
Prueba 11: "Error - no existe tabla"
Se comprobará que se produce un error si se intenta manejar una tabla que no se ha creado.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 12: "Error - ya existe entrada"
Se comprobará que se produce un error si se intenta crear dos veces la misma entrada (lexema) en la misma tabla.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 13: "Error - no existe entrada"
Se comprobará que se produce un error si se intenta manejar una entrada que no se ha creado.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 14: "Error - ya existe atributo"
Se comprobará que se produce un error si se intentan crear dos atributos con el mismo nombre en el mismo registro del lexema de una misma tabla.
Prueba 15: "Error - no existe atributo"
Se comprobará que se produce un error si se intenta manejar un atributo que no se ha creado.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 16: "Error - atributo no entero"
Se comprobará que se produce un error si se intenta escribir una cadena en el valor de un atributo entero.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 17: "Error - atributo no cadena"
Se comprobará que se produce un error si se intenta escribir un entero en el valor de un atributo cadena.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 18: "Error - tipo de entrada no definido"
Se comprobará que se produce un error si se intenta consultar el tipo de entrada para una entrada donde no se ha definido esto.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 19: "Error - lexema es null"
Se comprobará que se produce un error si se intenta introducir como lexema una cadena NULL.
Se observa cómo falla indicando el mensaje de error correcto. Prueba 20: "Último error en múltiples errores"
Se comprobará que cuando se producen varios errores a lo largo de la ejecución, la función para consultar el último error realmente solo informa del último error cometido. Se observa cómo falla indicando el mensaje de error correcto.