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("Elemento 8: ");
164 assert(DLList_next(lista) == &g);
166 printf("Elemento 9: ");
167 assert(DLList_next(lista) == NULL);
169 printf("Chequeo que no haya más elementos: ");
170 assert(!DLList_have_more(lista));
173 printf("Saco el primer elemento: ");
174 assert(DLList_shift(lista) == &h);
176 printf("Chequeo elemento actual: ");
177 assert(DLList_current(lista) == &d);
180 printf("Saco el último elemento: ");
181 assert(DLList_pop(lista) == &g);
183 printf("Chequeo elemento actual: ");
184 assert(DLList_current(lista) == &f);
187 printf("Saco el último elemento: ");
188 assert(DLList_pop(lista) == &f);
190 printf("Chequeo elemento actual: ");
191 assert(DLList_current(lista) == &e);
194 printf("Saco el último elemento: ");
195 assert(DLList_pop(lista) == &e);
197 printf("Chequeo elemento actual: ");
198 assert(DLList_current(lista) == &b);
201 printf("Saco el primer elemento: ");
202 assert(DLList_shift(lista) == &d);
204 printf("Chequeo elemento actual: ");
205 assert(DLList_current(lista) == &c);
208 printf("Saco el primer elemento: ");
209 assert(DLList_shift(lista) == &c);
211 printf("Chequeo elemento actual: ");
212 assert(DLList_current(lista) == &a);
215 printf("Saco el primer elemento: ");
216 assert(DLList_shift(lista) == &a);
218 printf("Chequeo elemento actual: ");
219 assert(DLList_current(lista) == &b);
222 printf("Saco el primer elemento: ");
223 assert(DLList_shift(lista) == &b);
225 printf("Chequeo elemento actual: ");
226 assert(DLList_current(lista) == NULL);
228 printf("Chequeo si está vacía: ");
229 assert(DLList_empty(lista));
232 DLList_delete(lista);