• No se han encontrado resultados

Pruebas de los Observadores

Para probar el correcto funcionamiento de los observadores definidos en el capítulo6, se ha precedido a definir restricciones que cumplan el caso base y caso general de cada observador de la forma siguiente:

Length

En la Figura 7.1 se observan los asertos necesarios para probar el caso base (primer aserto) y el caso general (segundo aserto).

Figura 7.1: Testing observador Length .

El resultado obtenido al aplicar el primer aserto corresponde al caso base la Fi- gura 7.2, donde al restringir que la lista tenga de estar vacía el valor que nos devuelve la función es 0, que se almacena en la variable x.

Figura 7.2: Testing observador Length caso base .

El asserto correspondiente al caso general (el segundo) obtiene como resultado un modelo que cumple con la restricción, como se observa en la Figura7.3donde se ha generado una lista con 10 elementos.

Figura 7.3: Testing observador Length caso general .

Esto proporciona garantías razonables sobre el correcto funcionamiento de la fun- ción observador Length.

7.2 Pruebas de los Observadores 79 isMember

En la Figura 7.4 se observan los asertos necesarios para probar el caso base (primer aserto), que se cumple cuando la lista esta vacía, y el caso general (se- gundo aserto), que se cumple cuando la lista tiene elementos devolviendo true en caso de que el elemento buscado forme parte de la lista y f alse en caso contra- rio.

Figura 7.4: Testing observador isMember .

Al utilizar el primer aserto, obtenemos el código de la Figura7.5, donde se apre- cia que, al estar la lista vacía, se devolverá f alse (que es el valor almacenado en la variable booleana x) cumpliendo con la condición del caso base.

Figura 7.5: Testing observador isMember caso base .

Por otro lado, cuando utilizamos el segundo aserto como se observa en la Figura

7.4, al restringir que el elemento 1 tiene que formar parte de la lista, estamos uti- lizando el caso general, donde se añade a la lista el elemento 1 como se aprecia en la Figura7.6.

Figura 7.6: Testing observador isMember caso general.

isNull

En la Figura7.7 se observan los asertos necesarios para probar que este pre- dicado se cumple cuando la lista esta vacía (devolviendo true), mientras que y el segundo aserto se cumple cuando la lista tiene elementos (devolviendo f alse).

Figura 7.7: Testing observador isNull .

Al utilizar el primer aserto se esta limitando el tamaño de la lista a nil de manera que, al comprobar si la lista está vacía, el valor de x será true cumpliendo la restricción (Figura7.8).

Figura 7.8: Testing observador isNull caso base.

Por otro lado, el segundo aserto comprueba el caso en el que la lista no este vacía, añadiendo un elemento para que sea cierto (en este caso el 0 como muestra la Figura7.9).

Figura 7.9: Testing observador isNull caso lista vacía.

isEmpty

Para comprobar si este predicado se cumple, ha sido necesario definir los aser- tos de la Figura7.10, donde en caso de que la longitud de la lista sea 0, se devol- verá true, mientras que en caso contrario se devolverá f alse.

Figura 7.10: Testing observador isEmpty.

Por tanto, al utilizar el primer aserto, se obtendrá un modelo resultante donde, al haber restringido el tamaño de la lista a 0, el valor de x será true como se aprecia en la Figura7.11.

Figura 7.11: Testing observador isEmpty caso true.

Por otro lado, al probar el segundo aserto, obtenemos un modelo donde la lista no es vacía y se la ha insertado el valor 0 (Figura7.12).

7.2 Pruebas de los Observadores 81 isFull

La función isFull consiste en una llamada a la función len para comprobar si la lista tiene un número de elementos determinado por la capacidad máxima, de manera que cuando se alcance dicho numero de elementos, isFull devolverá true, mientras que en caso contrario devolverá f alse. En la Figura7.13 se ejemplifica una aserción para comprobar el caso en que se cumple que isFull es true y otra aserción para comprobar cuando se cumple que isFull es f alse.

Figura 7.13: Testing observador isFull.

De esta manera al evaluar la primera restricción, obtenemos un modelo don- de efectivamente no se cumple que la lista ha llegado al tamaño limite definido (Figura7.14).

Figura 7.14: Testing observador isFull caso falso.

Por contraposición, al evaluar la segunda restricción, se obtiene un modelo donde se cumple que la lista haya llegado al limite del tamaño definido de 10 elementos (Figura7.15).

Figura 7.15: Testing observador isFull caso cierto.

sortedList

Para comprobar que este predicado se cumple, en la Figura 7.16se observan los asertos necesarios para probar los casos base (primer y segundo aserto) cuyo resultado deberá ser true ya que la lista al tener solo un elemento o estar vacía, se encuentra ordenada. El caso general, se cumple cuando la lista de elementos se encuentra ordenada ascendentemente y existe más de un elemento en la lista devolviendo true en caso contrario devolverá false.

Figura 7.16: Testing observador sortedList.

De manera, que al utilizar tanto el primer aserto como el segundo, obtenemos como resultado true (Figura7.17) cumpliendo con la condición del caso base.

Figura 7.17: Testing observador sortedList caso base.

Por otro lado, el tercer aserto se comprueba el caso general, donde al añadir más de un elemento a la lista (en este caso el 11 y 10) se comprueba si se encuentra ordenada ascendentemente, devolviendo false (que es el valor que Z3 asigna a la variable b al evaluar la lista) debido a que no está ordenada, como se aprecia en la Figura7.18.

Figura 7.18: Testing observador sortedList caso general.

Documento similar