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 inicialización: ");
44 assert(DLList_init(&lista));
47 printf("Chequeo si está vacía: ");
48 assert(DLList_empty(&lista));
51 printf("Chequeo si no tiene más elementos: ");
52 assert(!DLList_have_more(&lista));
55 printf("Agrego elemento '%i' al inicio: ", a);
56 assert(DLList_unshift(&lista, &a));
59 printf("Chequeo que no esté vacía: ");
60 assert(!DLList_empty(&lista));
63 printf("Agrego elemento '%i' al final: ", b);
64 assert(DLList_push(&lista, &b));
67 printf("Chequeo que no esté vacía: ");
68 assert(!DLList_empty(&lista));
71 printf("Agrego elemento '%i' al inicio: ", c);
72 assert(DLList_unshift(&lista, &c));
75 printf("Agrego elemento '%i' al inicio: ", d);
76 assert(DLList_unshift(&lista, &d));
79 printf("Agrego elemento '%i' al final: ", e);
80 assert(DLList_push(&lista, &e));
83 printf("Agrego elemento '%i' al final: ", f);
84 assert(DLList_push(&lista, &f));
87 printf("Chequeo elemento actual: ");
88 assert(DLList_current(&lista) == &f);
91 printf("Agrego elemento '%i' al final: ", g);
92 assert(DLList_push(&lista, &g));
95 printf("Agrego elemento '%i' al inicio: ", h);
96 assert(DLList_unshift(&lista, &h));
99 printf("Obtengo el primer elemento: ");
100 assert(DLList_begin(&lista) == &h);
103 printf("Chequeo si hay más elementos: ");
104 assert(DLList_have_more(&lista));
107 printf("Obtengo el elemento anterior elemento: ");
108 assert(DLList_prev(&lista) == NULL);
111 printf("Chequeo que no haya más elementos: ");
112 assert(!DLList_have_more(&lista));
115 printf("Obtengo el último elemento: ");
116 assert(DLList_end(&lista) == &g);
119 printf("Chequeo si hay más elementos: ");
120 assert(DLList_have_more(&lista));
123 printf("Obtengo el próximo elemento elemento: ");
124 assert(DLList_next(&lista) == NULL);
127 printf("Chequeo que no haya más elementos: ");
128 assert(!DLList_have_more(&lista));
131 printf("Recorro la lista...\n");
132 printf("Elemento 1: ");
133 assert(DLList_begin(&lista) == &h);
135 printf("Elemento 2: ");
136 assert(DLList_next(&lista) == &d);
138 printf("Elemento 3: ");
139 assert(DLList_next(&lista) == &c);
141 printf("Elemento 4: ");
142 assert(DLList_next(&lista) == &a);
144 printf("Elemento 5: ");
145 assert(DLList_next(&lista) == &b);
147 printf("Elemento 6: ");
148 assert(DLList_next(&lista) == &e);
150 printf("Elemento actual (6): ");
151 assert(DLList_current(&lista) == &e);
153 printf("Elemento anterior (5): ");
154 assert(DLList_prev(&lista) == &b);
156 printf("Elemento siguiente (6 de nuevo): ");
157 assert(DLList_next(&lista) == &e);
159 printf("Elemento 7: ");
160 assert(DLList_next(&lista) == &f);
162 printf("Elemento 8: ");
163 assert(DLList_next(&lista) == &g);
165 printf("Elemento 9: ");
166 assert(DLList_next(&lista) == NULL);
168 printf("Chequeo que no haya más elementos: ");
169 assert(!DLList_have_more(&lista));
172 printf("Saco el primer elemento: ");
173 assert(DLList_shift(&lista) == &h);
175 printf("Chequeo elemento actual: ");
176 assert(DLList_current(&lista) == &d);
179 printf("Saco el último elemento: ");
180 assert(DLList_pop(&lista) == &g);
182 printf("Chequeo elemento actual: ");
183 assert(DLList_current(&lista) == &f);
186 printf("Saco el último elemento: ");
187 assert(DLList_pop(&lista) == &f);
189 printf("Chequeo elemento actual: ");
190 assert(DLList_current(&lista) == &e);
193 printf("Saco el último elemento: ");
194 assert(DLList_pop(&lista) == &e);
196 printf("Chequeo elemento actual: ");
197 assert(DLList_current(&lista) == &b);
200 printf("Saco el primer elemento: ");
201 assert(DLList_shift(&lista) == &d);
203 printf("Chequeo elemento actual: ");
204 assert(DLList_current(&lista) == &c);
207 printf("Saco el primer elemento: ");
208 assert(DLList_shift(&lista) == &c);
210 printf("Chequeo elemento actual: ");
211 assert(DLList_current(&lista) == &a);
214 printf("Saco el primer elemento: ");
215 assert(DLList_shift(&lista) == &a);
217 printf("Chequeo elemento actual: ");
218 assert(DLList_current(&lista) == &b);
221 printf("Saco el primer elemento: ");
222 assert(DLList_shift(&lista) == &b);
224 printf("Chequeo elemento actual: ");
225 assert(DLList_current(&lista) == NULL);
227 printf("Chequeo si está vacía: ");
228 assert(DLList_empty(&lista));