From: Leandro Lucarella Date: Sat, 20 Sep 2003 23:23:08 +0000 (+0000) Subject: Se agrega un test de la DLList. X-Git-Tag: svn_import~6 X-Git-Url: https://git.llucax.com/z.facultad/75.42/euler-oo.git/commitdiff_plain/360793b55c03f1de538e606f5259bb24c23257b3 Se agrega un test de la DLList. --- diff --git a/Makefile b/Makefile index 5800906..f742ab1 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ # # Opciones para el compilador. +#CXXFLAGS=-ansi -pedantic -Wall -O3 CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG -#CC=gcc-3.2 # Pruebas. TESTS= diff --git a/dllist_test.cpp b/dllist_test.cpp new file mode 100644 index 0000000..eea47f5 --- /dev/null +++ b/dllist_test.cpp @@ -0,0 +1,222 @@ +/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80: + * + * Taller de Programación (75.42). + * + * Ejercicio Número 3: + * Lista de figuras. + * + * Copyleft 2003 - Leandro Lucarella + * Puede copiar, modificar y distribuir este programa bajo los términos de + * la licencia GPL (http://www.gnu.org/). + * + * Creado: sáb sep 20 19:42:44 ART 2003 + * + * $Id$ + */ + +/** + * \file + * Hace varios chequeos para probar si anda bien la + * \ref DLList "lista doblemente enlazada". + */ + +#include "dllist.h" + +#include +#include +#include + +/** + * Programa para probar la DLList. + * + * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un + * error. + */ +int main(void) { + DLList lista; + int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8; + + printf("Chequeo si está vacía: "); + assert(lista.empty()); + printf("OK!\n"); + + printf("Chequeo si no tiene más elementos: "); + assert(!lista.have_more()); + printf("OK!\n"); + + printf("Agrego elemento '%i' al inicio: ", a); + assert(lista.unshift(&a)); + printf("OK!\n"); + + printf("Chequeo que no esté vacía: "); + assert(!lista.empty()); + printf("OK!\n"); + + printf("Agrego elemento '%i' al final: ", b); + assert(lista.push(&b)); + printf("OK!\n"); + + printf("Chequeo que no esté vacía: "); + assert(!lista.empty()); + printf("OK!\n"); + + printf("Agrego elemento '%i' al inicio: ", c); + assert(lista.unshift(&c)); + printf("OK!\n"); + + printf("Agrego elemento '%i' al inicio: ", d); + assert(lista.unshift(&d)); + printf("OK!\n"); + + printf("Agrego elemento '%i' al final: ", e); + assert(lista.push(&e)); + printf("OK!\n"); + + printf("Agrego elemento '%i' al final: ", f); + assert(lista.push(&f)); + printf("OK!\n"); + + printf("Chequeo elemento actual: "); + assert(lista.current() == &f); + printf("OK!\n"); + + printf("Agrego elemento '%i' al final: ", g); + assert(lista.push(&g)); + printf("OK!\n"); + + printf("Agrego elemento '%i' al inicio: ", h); + assert(lista.unshift(&h)); + printf("OK!\n"); + + printf("Obtengo el primer elemento: "); + assert(lista.begin() == &h); + printf("OK!\n"); + + printf("Chequeo si hay más elementos: "); + assert(lista.have_more()); + printf("OK!\n"); + + printf("Obtengo el elemento anterior elemento: "); + assert(lista.prev() == NULL); + printf("OK!\n"); + + printf("Chequeo que no haya más elementos: "); + assert(!lista.have_more()); + printf("OK!\n"); + + printf("Obtengo el último elemento: "); + assert(lista.end() == &g); + printf("OK!\n"); + + printf("Chequeo si hay más elementos: "); + assert(lista.have_more()); + printf("OK!\n"); + + printf("Obtengo el próximo elemento elemento: "); + assert(lista.next() == NULL); + printf("OK!\n"); + + printf("Chequeo que no haya más elementos: "); + assert(!lista.have_more()); + printf("OK!\n"); + + printf("Recorro la lista...\n"); + printf("Elemento 1: "); + assert(lista.begin() == &h); + printf("OK!\n"); + printf("Elemento 2: "); + assert(lista.next() == &d); + printf("OK!\n"); + printf("Elemento 3: "); + assert(lista.next() == &c); + printf("OK!\n"); + printf("Elemento 4: "); + assert(lista.next() == &a); + printf("OK!\n"); + printf("Elemento 5: "); + assert(lista.next() == &b); + printf("OK!\n"); + printf("Elemento 6: "); + assert(lista.next() == &e); + printf("OK!\n"); + printf("Elemento actual (6): "); + assert(lista.current() == &e); + printf("OK!\n"); + printf("Elemento anterior (5): "); + assert(lista.prev() == &b); + printf("OK!\n"); + printf("Elemento siguiente (6 de nuevo): "); + assert(lista.next() == &e); + printf("OK!\n"); + printf("Elemento 7: "); + assert(lista.next() == &f); + printf("OK!\n"); + printf("Elimino elemento 7: "); + assert(lista.remove_current() == &f); + printf("OK!\n"); + printf("Me dejó en el elmento 8 (ahora 7): "); + assert(lista.current() == &g); + printf("OK!\n"); + printf("Elemento 8: "); + assert(lista.next() == NULL); + printf("OK!\n"); + printf("Chequeo que no haya más elementos: "); + assert(!lista.have_more()); + printf("OK!\n"); + + printf("Saco el primer elemento: "); + assert(lista.shift() == &h); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &d); + printf("OK!\n"); + + printf("Saco el último elemento: "); + assert(lista.pop() == &g); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &e); + printf("OK!\n"); + + printf("Saco el último elemento: "); + assert(lista.pop() == &e); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &b); + printf("OK!\n"); + + printf("Saco el último elemento: "); + assert(lista.pop() == &b); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &a); + printf("OK!\n"); + + printf("Saco el primer elemento: "); + assert(lista.shift() == &d); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &c); + printf("OK!\n"); + + printf("Saco el primer elemento: "); + assert(lista.shift() == &c); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == &a); + printf("OK!\n"); + + printf("Saco el primer elemento: "); + assert(lista.shift() == &a); + printf("OK!\n"); + printf("Chequeo elemento actual: "); + assert(lista.current() == NULL); + printf("OK!\n"); + + printf("Chequeo si está vacía: "); + assert(lista.empty()); + printf("OK!\n"); + + return EXIT_SUCCESS; +} +