Advertisement
Guest User

pruebas_alumno.c

a guest
Apr 22nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.44 KB | None | 0 0
  1. #include "cola.h"
  2. #include "testing.h"
  3. #include <stddef.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. const int VALOR_PRUEBA_1 = 3;
  8. const int VALOR_INICIAL_DE_PRUEBA_VOLUMEN = 10;
  9. const size_t VALOR_APILO_MUCHO = 10000;
  10. const size_t VALOR_DESAPILO_MUCHO = 10000;
  11.  
  12. typedef struct nodo {
  13.     void* dato;
  14.     struct nodo* prox;
  15. } nodo_t;
  16.  
  17. typedef struct cola {
  18.     nodo_t* primero;
  19.     nodo_t* ultimo;
  20. } cola_t;
  21.  
  22. void destruir_dato(void* dato){
  23.     free(dato);
  24. }
  25.  
  26. int* crear_valor_prueba(int valor){
  27.     int* dato = malloc(sizeof(int));
  28.     *dato = valor;
  29.     return dato;
  30. }
  31.  
  32. void pruebas_cola_vacia() {
  33.     printf("PRUEBAS COLA VACIA\n");
  34.     cola_t* ejemplo = NULL;
  35.  
  36.     print_test("Puntero inicializado a NULL", ejemplo == NULL);
  37.  
  38.     //Creo una cola
  39.     cola_t* cola_1 = cola_crear();
  40.     print_test("Cola creada correctamente", cola_1 != NULL);
  41.     print_test("El primero de la cola vacia es NULL", cola_ver_primero(cola_1) == NULL);
  42.     print_test("La cola esta vacia", cola_esta_vacia(cola_1));
  43.  
  44.     //Pruebo que no se puede desencolar
  45.     print_test("cola no se puede desencolar", cola_desencolar(cola_1) == NULL);
  46.  
  47.     //Destruyo la cola
  48.     cola_destruir(cola_1, NULL);
  49. }
  50.  
  51. void pruebas_cola_con_elementos(){
  52.     printf("PRUEBAS COLA CON ELEMENTOS\n");
  53.     int valor_a_probar = VALOR_PRUEBA_1;
  54.     int* valor = crear_valor_prueba(valor_a_probar);
  55.  
  56.     //Creo una cola
  57.     cola_t* cola_2 = cola_crear();
  58.     print_test("Cola creada correctamente", cola_2 != NULL);
  59.  
  60.     //Pruebo encolar, desencolar y destruir:
  61.     cola_encolar(cola_2, valor);
  62.  
  63.     //Pruebo que primero de la cola vale "valor"
  64.     print_test("El primero de la cola no es null", cola_ver_primero(cola_2) == valor);
  65.     print_test("Cola tiene elementos", !cola_esta_vacia(cola_2));
  66.     cola_desencolar(cola_2);
  67.  
  68.     //Pruebo que al no quedar mas elementos por desencolar, el primero es null
  69.     print_test("El primero de la cola vacia es null", cola_ver_primero(cola_2) == NULL);
  70.     cola_destruir(cola_2, NULL);
  71.  
  72.     cola_t* cola_3 = cola_crear();
  73.     //Pruebo encolar y destruir(sin desapilar)
  74.     cola_encolar(cola_3, valor);
  75.     print_test("El primero de la cola vacia es valor", cola_ver_primero(cola_3) == valor);
  76.     print_test("cola tiene elementos", !cola_esta_vacia(cola_3));
  77.     if(cola_esta_vacia(cola_3))     cola_destruir(cola_3, NULL);
  78.     else    cola_destruir(cola_3, destruir_dato);
  79. }
  80.  
  81. void pruebas_encolando_null(){
  82.     printf("PRUEBAS ENCOLANDO NULL\n");
  83.     void* valor = NULL;
  84.     //int* valor = crear_valor_prueba(valor_a_probar);
  85.     cola_t* cola_4 = cola_crear();
  86.     //Encolo y desencolo null
  87.     for(int i = 0; i < 30; i ++) cola_encolar(cola_4, valor);
  88.     print_test("El primero de la cola es null", cola_ver_primero(cola_4) == NULL);
  89.     print_test("la cola tiene elementos", !cola_esta_vacia(cola_4));
  90.     for(int i = 0; i < 20; i ++) cola_desencolar(cola_4);
  91.     print_test("La cola no esta del todo vacia", !cola_esta_vacia(cola_4));
  92.     for(int i = 0; i < 10; i ++) cola_desencolar(cola_4);
  93.     print_test("La cola esta vacia", cola_esta_vacia(cola_4));
  94.     cola_destruir(cola_4, NULL);
  95. }
  96.  
  97. void pruebas_volumen(){
  98.     printf("PRUEBAS VOLUMEN\n");
  99.     cola_t* cola_5 = cola_crear();
  100.     int valor = VALOR_INICIAL_DE_PRUEBA_VOLUMEN;
  101.     int primer_valor = valor;
  102.     int* primero_cola;
  103.     int* valor_nuevo;
  104.     int* dato_a_desencolar;
  105.  
  106.     for(int i = 0; i < VALOR_APILO_MUCHO; i++){
  107.         int* dato_a_encolar = crear_valor_prueba(valor);
  108.         cola_encolar(cola_5, dato_a_encolar);
  109.         valor ++;
  110.     }
  111.     primero_cola = cola_ver_primero(cola_5);
  112.     print_test("El primero de la cola es el primero que encolé", *primero_cola == primer_valor);
  113.  
  114.     valor = VALOR_INICIAL_DE_PRUEBA_VOLUMEN;
  115.     for(int i = 0; i < VALOR_DESAPILO_MUCHO; i++){
  116.         dato_a_desencolar = cola_desencolar(cola_5);
  117.         if(*dato_a_desencolar != (valor))   print_test("El valor desencolado NO cumple con la invariante fifo", *dato_a_desencolar != (valor));
  118.         free(dato_a_desencolar);
  119.         valor++;
  120.     }
  121.  
  122.     print_test("La cola esta vacia", cola_esta_vacia(cola_5));
  123.     print_test("El primero de la cola es NULL", (!cola_ver_primero(cola_5)));
  124.  
  125.     valor_nuevo = crear_valor_prueba(valor);
  126.     cola_encolar(cola_5, valor_nuevo);
  127.     print_test("La cola no esta vacia", !cola_esta_vacia(cola_5));
  128.     print_test("El primero de la cola es valor_nuevo", (cola_ver_primero(cola_5)) == valor_nuevo);
  129.     if(cola_esta_vacia(cola_5))     cola_destruir(cola_5, NULL);
  130.     else    cola_destruir(cola_5, destruir_dato);
  131. }
  132.  
  133. void pruebas_cola_alumno(){
  134.     pruebas_cola_vacia();
  135.     pruebas_cola_con_elementos();
  136.     pruebas_encolando_null();
  137.     pruebas_volumen();
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement