1 /* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t:
3 * Taller de Programación (75.42).
6 * Programa calculadora.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: sáb ago 30 18:24:31 ART 2003
19 * Hace varios chequeos para probar si anda bien la
20 * \ref DLList "lista doblemente enlazada".
25 /* Para utilizar printf() */
27 /* Para utilizar EXIT_SUCCES */
29 /* Para utilizar assert() */
33 * Programa para probar la DLList.
35 * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
39 /* Declaración de variables. */
41 int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8;
43 printf("Chequeo de creación: ");
45 assert(lista != NULL);
48 printf("Chequeo si está vacía: ");
49 assert(DLList_empty(lista));
52 printf("Chequeo si no tiene más elementos: ");
53 assert(!DLList_have_more(lista));
56 printf("Agrego elemento '%i' al inicio: ", a);
57 assert(DLList_unshift(lista, &a));
60 printf("Chequeo que no esté vacía: ");
61 assert(!DLList_empty(lista));
64 printf("Agrego elemento '%i' al final: ", b);
65 assert(DLList_push(lista, &b));
68 printf("Chequeo que no esté vacía: ");
69 assert(!DLList_empty(lista));
72 printf("Agrego elemento '%i' al inicio: ", c);
73 assert(DLList_unshift(lista, &c));
76 printf("Agrego elemento '%i' al inicio: ", d);
77 assert(DLList_unshift(lista, &d));
80 printf("Agrego elemento '%i' al final: ", e);
81 assert(DLList_push(lista, &e));
84 printf("Agrego elemento '%i' al final: ", f);
85 assert(DLList_push(lista, &f));
88 printf("Chequeo elemento actual: ");
89 assert(DLList_current(lista) == &f);
92 printf("Agrego elemento '%i' al final: ", g);
93 assert(DLList_push(lista, &g));
96 printf("Agrego elemento '%i' al inicio: ", h);
97 assert(DLList_unshift(lista, &h));
100 printf("Obtengo el primer elemento: ");
101 assert(DLList_begin(lista) == &h);
104 printf("Chequeo si hay más elementos: ");
105 assert(DLList_have_more(lista));
108 printf("Obtengo el elemento anterior elemento: ");
109 assert(DLList_prev(lista) == NULL);
112 printf("Chequeo que no haya más elementos: ");
113 assert(!DLList_have_more(lista));
116 printf("Obtengo el último elemento: ");
117 assert(DLList_end(lista) == &g);
120 printf("Chequeo si hay más elementos: ");
121 assert(DLList_have_more(lista));
124 printf("Obtengo el próximo elemento elemento: ");
125 assert(DLList_next(lista) == NULL);
128 printf("Chequeo que no haya más elementos: ");
129 assert(!DLList_have_more(lista));
132 printf("Recorro la lista...\n");
133 printf("Elemento 1: ");
134 assert(DLList_begin(lista) == &h);
136 printf("Elemento 2: ");
137 assert(DLList_next(lista) == &d);
139 printf("Elemento 3: ");
140 assert(DLList_next(lista) == &c);
142 printf("Elemento 4: ");
143 assert(DLList_next(lista) == &a);
145 printf("Elemento 5: ");
146 assert(DLList_next(lista) == &b);
148 printf("Elemento 6: ");
149 assert(DLList_next(lista) == &e);
151 printf("Elemento actual (6): ");
152 assert(DLList_current(lista) == &e);
154 printf("Elemento anterior (5): ");
155 assert(DLList_prev(lista) == &b);
157 printf("Elemento siguiente (6 de nuevo): ");
158 assert(DLList_next(lista) == &e);
160 printf("Elemento 7: ");
161 assert(DLList_next(lista) == &f);
163 printf("Elimino elemento 7: ");
164 assert(DLList_remove_current(lista) == &f);
166 printf("Me dejó en el elmento 8 (ahora 7): ");
167 assert(DLList_current(lista) == &g);
169 printf("Elemento 8: ");
170 assert(DLList_next(lista) == NULL);
172 printf("Chequeo que no haya más elementos: ");
173 assert(!DLList_have_more(lista));
176 printf("Saco el primer elemento: ");
177 assert(DLList_shift(lista) == &h);
179 printf("Chequeo elemento actual: ");
180 assert(DLList_current(lista) == &d);
183 printf("Saco el último elemento: ");
184 assert(DLList_pop(lista) == &g);
186 printf("Chequeo elemento actual: ");
187 assert(DLList_current(lista) == &e);
190 printf("Saco el último elemento: ");
191 assert(DLList_pop(lista) == &e);
193 printf("Chequeo elemento actual: ");
194 assert(DLList_current(lista) == &b);
197 printf("Saco el último elemento: ");
198 assert(DLList_pop(lista) == &b);
200 printf("Chequeo elemento actual: ");
201 assert(DLList_current(lista) == &a);
204 printf("Saco el primer elemento: ");
205 assert(DLList_shift(lista) == &d);
207 printf("Chequeo elemento actual: ");
208 assert(DLList_current(lista) == &c);
211 printf("Saco el primer elemento: ");
212 assert(DLList_shift(lista) == &c);
214 printf("Chequeo elemento actual: ");
215 assert(DLList_current(lista) == &a);
218 printf("Saco el primer elemento: ");
219 assert(DLList_shift(lista) == &a);
221 printf("Chequeo elemento actual: ");
222 assert(DLList_current(lista) == NULL);
225 printf("Chequeo si está vacía: ");
226 assert(DLList_empty(lista));
229 DLList_delete(lista);