Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "cola.h"
- #include "testing.h"
- #include <stddef.h>
- #include <stdio.h>
- #include <stdlib.h>
- const int VALOR_PRUEBA_1 = 3;
- const int VALOR_INICIAL_DE_PRUEBA_VOLUMEN = 10;
- const size_t VALOR_APILO_MUCHO = 10000;
- const size_t VALOR_DESAPILO_MUCHO = 10000;
- typedef struct nodo {
- void* dato;
- struct nodo* prox;
- } nodo_t;
- typedef struct cola {
- nodo_t* primero;
- nodo_t* ultimo;
- } cola_t;
- void destruir_dato(void* dato){
- free(dato);
- }
- int* crear_valor_prueba(int valor){
- int* dato = malloc(sizeof(int));
- *dato = valor;
- return dato;
- }
- void pruebas_cola_vacia() {
- printf("PRUEBAS COLA VACIA\n");
- cola_t* ejemplo = NULL;
- print_test("Puntero inicializado a NULL", ejemplo == NULL);
- //Creo una cola
- cola_t* cola_1 = cola_crear();
- print_test("Cola creada correctamente", cola_1 != NULL);
- print_test("El primero de la cola vacia es NULL", cola_ver_primero(cola_1) == NULL);
- print_test("La cola esta vacia", cola_esta_vacia(cola_1));
- //Pruebo que no se puede desencolar
- print_test("cola no se puede desencolar", cola_desencolar(cola_1) == NULL);
- //Destruyo la cola
- cola_destruir(cola_1, NULL);
- //print_test("cola destruida correctamente", !cola);
- }
- void pruebas_cola_con_elementos(){
- printf("PRUEBAS COLA CON ELEMENTOS\n");
- int valor_a_probar = VALOR_PRUEBA_1;
- int* valor = crear_valor_prueba(valor_a_probar);
- //Creo una cola
- cola_t* cola_2 = cola_crear();
- print_test("Cola creada correctamente", cola_2 != NULL);
- //Pruebo encolar, desencolar y destruir:
- cola_encolar(cola_2, valor);
- //Pruebo que primero de la cola vale "valor"
- print_test("El primero de la cola no es null", cola_ver_primero(cola_2) == valor);
- print_test("Cola tiene elementos", !cola_esta_vacia(cola_2));
- cola_desencolar(cola_2);
- //Pruebo que al no quedar mas elementos por desencolar, el primero es null
- print_test("El primero de la cola vacia es null", cola_ver_primero(cola_2) == NULL);
- cola_destruir(cola_2, NULL);
- cola_t* cola_3 = cola_crear();
- //Pruebo encolar y destruir(sin desapilar)
- cola_encolar(cola_3, valor);
- print_test("El primero de la cola vacia es valor", cola_ver_primero(cola_3) == valor);
- print_test("cola tiene elementos", !cola_esta_vacia(cola_3));
- if(cola_esta_vacia(cola_3)) cola_destruir(cola_3, NULL);
- else cola_destruir(cola_3, destruir_dato);
- }
- void pruebas_encolando_null(){
- printf("PRUEBAS ENCOLANDO NULL\n");
- void* valor = NULL;
- //int* valor = crear_valor_prueba(valor_a_probar);
- cola_t* cola_4 = cola_crear();
- //Encolo y desencolo null
- for(int i = 0; i < 30; i ++) cola_encolar(cola_4, valor);
- print_test("El primero de la cola es null", cola_ver_primero(cola_4) == NULL);
- print_test("la cola tiene elementos", !cola_esta_vacia(cola_4));
- for(int i = 0; i < 20; i ++) cola_desencolar(cola_4);
- print_test("La cola no esta del todo vacia", !cola_esta_vacia(cola_4));
- for(int i = 0; i < 10; i ++) cola_desencolar(cola_4);
- print_test("La cola esta vacia", cola_esta_vacia(cola_4));
- cola_destruir(cola_4, NULL);
- }
- void pruebas_volumen(){
- printf("PRUEBAS VOLUMEN\n");
- cola_t* cola_5 = cola_crear();
- int valor = VALOR_INICIAL_DE_PRUEBA_VOLUMEN;
- int primer_valor = valor;
- int* primero_cola;
- int* valor_nuevo;
- int* dato_a_desencolar;
- for(int i = 0; i < VALOR_APILO_MUCHO; i++){
- int* dato_a_encolar = crear_valor_prueba(valor);
- cola_encolar(cola_5, dato_a_encolar);
- valor ++;
- }
- primero_cola = cola_ver_primero(cola_5);
- print_test("El primero de la cola es el primero que encolé", *primero_cola == primer_valor);
- valor = VALOR_INICIAL_DE_PRUEBA_VOLUMEN;
- for(int i = 0; i < VALOR_DESAPILO_MUCHO; i++){
- dato_a_desencolar = cola_desencolar(cola_5);
- if(*dato_a_desencolar != (valor)) print_test("El valor desencolado NO cumple con la invariante fifo", *dato_a_desencolar != (valor));
- free(dato_a_desencolar);
- valor++;
- }
- print_test("La cola esta vacia", cola_esta_vacia(cola_5));
- print_test("El primero de la cola es NULL", (!cola_ver_primero(cola_5)));
- valor_nuevo = crear_valor_prueba(valor);
- cola_encolar(cola_5, valor_nuevo);
- print_test("La cola no esta vacia", !cola_esta_vacia(cola_5));
- print_test("El primero de la cola es valor_nuevo", (cola_ver_primero(cola_5)) == valor_nuevo);
- if(cola_esta_vacia(cola_5)) cola_destruir(cola_5, NULL);
- else cola_destruir(cola_5, destruir_dato);
- }
- void pruebas_cola_alumno(){
- pruebas_cola_vacia();
- pruebas_cola_con_elementos();
- pruebas_encolando_null();
- pruebas_volumen();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement