Dudas con los test de listas enlazadas #87
-
Por ahora en los tests que estuvimos haciendo, los utilizamos de la siguiente manera: Si pueden mandar una ejemplo de un test de listas vendría genial. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
O le pasas una lista creada a partir de un arreglo, O. Siendo que lo importante es el orden de la secuencia, podés trabajarlo mezclado con arreglos para simplificar. lista_t* arreglo_a_lista(arreglo, largo);
int* lista_a_arreglo(lista_t *lista, int *largo);
int compara_arreglos(int* arreglo_uno, int largo_uno, int* arreglo_dos, int largo_dos);
int compara_listas(lista_t *uno, lista_t *dos);
Exactamente, lo que importa es como queda la secuencia de valores al finalizar la operación. Arreglo esperado a lista.int verifica_lista(char *mensaje, int *esperado, int largo_esperado, lista_t *lista)
{
printf("test lista %s: ", mensaje);
lista_t lista_esperada = arreglo_a_lista(esperado, largo_esperado);
int son_iguales = compara_listas(lista, lista_esperada);
if (son_iguales == IGUALES)
{
printf("OK");
}
else
{
printf("FAIL");
}
putchar('\n');
libera_lista(lista_esperada);
return son_iguales;
} Lista resultante a arregloint verifica_lista(char *mensaje, int *esperado, int largo_esperado, lista_t *lista)
{
printf("test lista %s: ", mensaje);
int largo_arreglo = -1;
int* arreglo = lista_a_arreglo(lista, &largo_arreglo);
int con_iguales = compara_arreglos(arreglo, largo_arreglo, esperado, largo_esperado);
if (son_iguales == IGUALES)
{
printf("OK");
}
else
{
printf("FAIL");
}
putchar('\n');
libera_arreglo(arreglo);
return son_iguales;
} Estas son dos opciones, como código común, para evaluar una lista y ver si es parecida o no a lo esperado. int test_inserción(char *mensaje,
int *esperado, int largo_esperado,
lista_t *lista,
int nuevo_valor, int posición)
{
int largo_arreglo = -1;
int* arreglo = lista_a_arreglo(lista, &largo_arreglo);
lista_insertar(lista, nuevo_valor, posición);
return verifica_lista(mensaje, esperado, largo_esperado, lista);
} Opción a verificarEn esta opción le sacamos una foto a la lista antes de modificarla y hacemos la modificación en el arreglo para verificar que el resultado sea el mismo. int test_inserción(char *mensaje,
lista_t *lista,
int nuevo_valor, int posición)
{
int largo_esperado = -1;
int* esperado = lista_a_arreglo(lista, &largo_arreglo);
int resultado = FAIL;
arreglo_insercion(*esperado, largo_esperado, int nuevo_valor, int posición);
lista_insertar(lista, nuevo_valor, posición);
verifica_lista(mensaje, esperado, largo_esperado, lista);
libera_arreglo(arreglo);
return resultado;
} El código no está al 100x100 de completo, faltaría algunos detalles sobre la gestión de errores y quizás la liberación de algún bloque de memoria. Aparte de que lo escribí acá... no esta verdaderamente probado, es mas la idea y concepto general. |
Beta Was this translation helpful? Give feedback.
O le pasas una lista creada a partir de un arreglo, O.
Usas una función de conversión a arreglo (y desde arreglo).
Siendo que lo importante es el orden de la secuencia, podés trabajarlo mezclado con arreglos para simplificar.